为Web服务客户端实现ActiveRecord

时间:2012-07-23 13:42:31

标签: c# asp.net-mvc oop json.net

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

我编写了一个连接器类并将其初始化为:

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-method,但这也有气味。

有任何改进建议吗?

1 个答案:

答案 0 :(得分:1)

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

参考文献看看: Is Repository pattern as same as Active Record pattern?

或更广泛地了解您的选择:

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