0

クライアント側で JSON.net を使用して、REST-Webservice と通信する C#/MVC 4 で 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 は基本的に単純なオブジェクトであるため、これは私には悪い設計に思えます。別の選択肢は、接続ハンドラを保存メソッドに渡すことですが、それも臭いです。

それを改善するための提案はありますか?

4

1 に答える 1

1

「プレーン レコード」が必要な場合は、activerecord パターンを実装しないでください。それは矛盾です。あなたはリポジトリ パターンにもっと興味を持っているように思えます。

参考文献として、 Is Repository pattern as same as Active Record pattern? を参照してください。

または、オプションのより広い視野のために:

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

于 2012-07-23T14:00:46.260 に答える