[英]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生成的表類,而不是直接使用這些類。
謝謝
似乎共識是在創建自己的自定義類,而不是依靠WCF創建的類。
我目前正在使用此方法,到目前為止,僅使用擴展來創建方法以將其轉換為模型,並使用另一種方法將其轉換回類型。
並且擁有自己更簡單的類對於擴展性和其他方面也很有幫助:)
我建議仍然使用WCF,但使用兼容的dll作為客戶端而不是服務引用。 這樣,即使將來決定更改數據庫,您仍然可以保持界面一致。 使用DLL的優點:
使用DLL的缺點:
我對WCF不太熟悉-但我使用的是Linq To Sql,我假設它會生成相同類型的類(與任何ORM工具一樣)。 我總是創建自己的POCO類來描述我的域模型。 我知道還需要做更多的工作-然后您要負責將POCO類與生成的類進行映射。 但是我發現這是保持域類純凈的最佳方法。 生成的類的屬性可能有些復雜,這些屬性描述了將用於填充表和列的屬性。 我喜歡生成的類,因為它們使我更輕松地與數據庫進行交互-但我一直喜歡擁有簡單域類的分離-它也使我可以靈活地交換數據庫實現。
最好像在當前項目中那樣使用一個單獨的dll-解耦是一種最佳實踐,但是從數據庫生成WCF DataContracts幾乎不是一個好主意-可以將其用於第一個快照,但隨后可以進行更改您的數據庫不應直接反映在Web服務中。
使用WCF的優點之一是,如果您要以描述的方式分發編譯的dll,則可以輕松地通過服務層實現解耦,這實際上是將所有客戶端耦合到數據庫表示形式。
通過解耦,您可以將ORM /數據庫作為必需品進行調整,而無需重新編譯所有客戶端。
不利的一面-這樣的解耦在開始時實施起來會比較慢-因此,如果您的項目非常小,可能會過大-但是,如果您是跨團隊工作或以任何方式進行分布式工作,則必不可少。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.