2012-07-23 111 views
0

我正在編寫一個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基本上是一個普通的對象。另一種選擇是將連接處理程序傳遞給保存方法,但也有異味。

任何改善它的建議?

回答

1

如果你想要一個「普通記錄」,你不應該實現activerecord模式。這是一個矛盾。這聽起來像你對存儲庫模式更感興趣。

作爲參考看看: Is Repository pattern as same as Active Record pattern?

或爲您的選擇更廣闊的視野:

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

+0

你說得對 - 我用了這麼數據庫訪問Repository模式很遠,但可能它是將其擴展到Web服務的最佳解決方案。謝謝! – schneck 2012-07-23 14:19:18