簡體   English   中英

使用從WCF生成的類與創建自己的模型dll的優缺點是什么?

[英]What's the pros and cons of using classes generated from WCF vs Creating your own model dll?

到目前為止,我的項目在很大程度上依賴於鏈接到數據庫的WCF。 如果您要在我們的系統中進行處理,我們將使用從數據庫生成的類,它們是ORM。

我知道使用DataSvcUtil,我們可以輕松提取所有類並將其編譯為DLL,以便在其他系統之間共享。

但是在當前項目中,我們創建了另一個DLL,該DLL鏡像了WCF生成的表類,而不是直接使用這些類。

  1. 所以我的問題是在這些事情上是否有最佳實踐?
  2. 這兩種方法的優缺點是什么?
  3. 還有其他方法嗎?

謝謝

更新:

似乎共識是在創建自己的自定義類,而不是依靠WCF創建的類。

我目前正在使用此方法,到目前為止,僅使用擴展來創建方法以將其轉換為模型,並使用另一種方法將其轉換回類型。

並且擁有自己更簡單的類對於擴展性和其他方面也很有幫助:)

我建議仍然使用WCF,但使用兼容的dll作為客戶端而不是服務引用。 這樣,即使將來決定更改數據庫,您仍然可以保持界面一致。 使用DLL的優點:

  1. 隨着服務的增長,用戶在嘗試生成服務參考時可能偶爾會開始超時
  2. 您可以免受錯誤的服務參考人員的傷害。 生成服務參考時,可以更改某些屬性,因此用戶可以生成潛在的無效服務參考
  3. 您將受到保護,免受其他IDE生成略有不同的引用的影響
  4. 向后兼容並查明問題要容易一些,因為您將100%確保使用客戶端的方式在所有用戶中都是相同的。

使用DLL的缺點:

  1. 您將獲得其他參考

我對WCF不太熟悉-但我使用的是Linq To Sql,我假設它會生成相同類型的類(與任何ORM工具一樣)。 我總是創建自己的POCO類來描述我的域模型。 我知道還需要做更多的工作-然后您要負責將POCO類與生成的類進行映射。 但是我發現這是保持域類純凈的最佳方法。 生成的類的屬性可能有些復雜,這些屬性描述了將用於填充表和列的屬性。 我喜歡生成的類,因為它們使我更輕松地與數據庫進行交互-但我一直喜歡擁有簡單域類的分離-它也使我可以靈活地交換數據庫實現。

最好像在當前項目中那樣使用一個單獨的dll-解耦是一種最佳實踐,但是從數據庫生成WCF DataContracts幾乎不是一個好主意-可以將其用於第一個快照,但隨后可以進行更改您的數據庫不應直接反映在Web服務中。

使用WCF的優點之一是,如果您要以描述的方式分發編譯的dll,則可以輕松地通過服務層實現解耦,這實際上是將所有客戶端耦合到數據庫表示形式。

通過解耦,您可以將ORM /數據庫作為必需品進行調整,而無需重新編譯所有客戶端。

不利的一面-這樣的解耦在開始時實施起來會比較慢-因此,如果您的項目非常小,可能會過大-但是,如果您是跨團隊工作或以任何方式進行分布式工作,則必不可少。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM