2012-07-23 112 views
0

我正在编写一个Web服务客户端,使用C#/ MVC 4与REST-Webservice进行通信,在客户端使用JSON.net。 目前为止一切正常,但我想改进架构以使处理更加流畅。为Webservice客户端实现ActiveRecord

我写了一个连接器类,并初始化它是这样的:

var conn = new MyConnector("admin", "admin", "http://localhost:9000"); 

然后,我有一个POCO类是这样的:

public class MyRecord 
{ 
    [JsonProperty("record_id")] 
    public string RecordId; 
    ... 

我通过执行PUT请求保存更改网络服务。它看起来像:

var updated = conn.UpdateRecord("MyRecordId", new NameValueCollection{{"title","new_title"}}); 

我想要做的就是实现它更像ActiveRecord的:

var myRecord = conn.GetRecord("myRecordId); 
myRecord.title = "Foo"; 
myRecord.save(); 

这意味着MyRecord级必须知道连接处理器的。这对我来说似乎很糟糕,因为MyRecord基本上是一个普通的对象。另一种选择是将连接处理程序传递给保存方法,但也有异味。

任何改善它的建议?

回答

1

如果你想要一个“普通记录”,你不应该实现activerecord模式。这是一个矛盾。这听起来像你对存储库模式更感兴趣。

作为参考看看: Is Repository pattern as same as Active Record pattern?

或为您的选择更广阔的视野:

http://msdn.microsoft.com/en-us/magazine/dd569757.aspx

+0

你说得对 - 我用了这么数据库访问Repository模式很远,但可能它是将其扩展到Web服务的最佳解决方案。谢谢! – schneck 2012-07-23 14:19:18