我有一個高科技演示應用程序編寫,與多個客戶端:Web客戶端(ASP MVC 3),桌面客戶端(目前這將是一個WCF的應用程序,規劃香料它新城更高版本)和移動客戶端(WP7是默認的任務,但如果我覺得自己像一個時間百萬富翁,我可能會嘗試MonoDroid的太)我可以避免重複我的業務層嗎? (.NET)
我使用WCF爲客戶思考。
我在考慮使用EF Model First作爲後端。
但是,當我試圖弄清楚我在哪裏放置域邏輯(驗證,計算屬性等),而不必手動複製我已經在我的EF模型中聲明的所有內容時,就會出現問題。
我的第一個主要問題是EF有一個很好的內置對象跟蹤(obj.Components.Add(...); db.Save();
),但是這個功能在客戶端很容易不可用。有沒有辦法實現我自己的方法呢? (我知道該怎麼做,但這對於這個演示來說太多了)
我的第二個主要問題(如標題所示)是域邏輯,主要是驗證。
- 我是否應該將業務對象重新編譯到客戶端並將wcf序列化爲相同的對象?
- 我應該嘗試在客戶端使用WCF生成的類嗎? (回到第一個問題)
我應該嘗試使用共享程序集嗎?
如果我將自己的邏輯寫入MVC控制器,我的WCF服務將無法對其進行整齊調用。
- 如果我寫一個單獨的BusinessLayer應該也使用EF實體或我應該編寫自定義業務對象? (基本上是複製的一切再次)
- 如果我使用EF實體,我一定要偏上的驗證,這是醜陋的(在這一點上,我應該切換到EF代碼第一?)
有沒有一種好方法在客戶端使用這些相同的驗證?
我是否應該廢棄整件事並嘗試RIA服務?
哦,這麼多的問題...
我會使用普通的.net對象作爲域,然後添加與NHibernate或EF代碼優先的持久性。 – CodesInChaos 2012-01-03 10:51:38
@CodeInChaos:這是我的同事向我暗示的:) – TDaver 2012-01-03 15:59:23