【问题标题】:Implement ActiveRecord for Webservice client为 Web 服务客户端实现 ActiveRecord
【发布时间】:2012-07-23 13:42:31
【问题描述】:

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

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

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 基本上是一个普通的对象。另一种选择是将连接处理程序传递给保存方法,但这也有异味。

有什么改进的建议吗?

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 你说得对——到目前为止,我正在使用存储库模式进行数据库访问,但它可能是将其扩展到 Web 服务的最佳解决方案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-05-20
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 2011-06-06
    • 2013-02-03
    相关资源
    最近更新 更多