我正在用C#/MVC 4编写一个Web服务客户端,它在客户端使用JSON.net与REST Web服务通信。到目前为止,一切都很好,但我想改进架构,使处理更流畅。
我写了一个连接器类,并像这样初始化它:
var conn = new MyConnector("admin", "admin", "http://localhost:9000");
然后我有一个像这样的POCO类:
public class MyRecord
{
[JsonProperty("record_id")]
public string RecordId;
...
我通过对Web服务执行PUT请求来保存更改。它看起来像:
var updated = conn.UpdateRecord("MyRecordId", new NameValueCollection{{"title","new_title"}});
我想做的是实现它更像ActiveRecord:
var myRecord = conn.GetRecord("myRecordId);
myRecord.title = "Foo";
myRecord.save();
这意味着MyRecord类必须知道连接处理程序。对我来说,这似乎是一个糟糕的设计,因为MyRecord基本上是一个普通的对象。另一种选择是将连接处理程序传递给save方法,但这也有味道。
有什么改进的建议吗?
如果你想要一个"普通记录",你不应该实现activerecord模式。这是一个矛盾。在我看来,您对存储库模式更感兴趣。
参考资料如下:存储库模式和活动记录模式相同吗?
或者从更广泛的角度来看您的选择:
http://msdn.microsoft.com/en-us/magazine/dd569757.aspx