为Webservice客户端实现ActiveRecord
问题描述:
我正在编写一个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基本上是一个普通的对象。另一种选择是将连接处理程序传递给保存方法,但也有异味。
任何改善它的建议?
答
如果你想要一个“普通记录”,你不应该实现activerecord模式。这是一个矛盾。这听起来像你对存储库模式更感兴趣。
作为参考看看: Is Repository pattern as same as Active Record pattern?
或为您的选择更广阔的视野:
你说得对 - 我用了这么数据库访问Repository模式很远,但可能它是将其扩展到Web服务的最佳解决方案。谢谢! – schneck 2012-07-23 14:19:18