为Web服务客户端实现ActiveRecord



我正在用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

相关内容

  • 没有找到相关文章