2012-02-23 72 views
4

因爲實體框架緊密耦合,所以我需要鬆散耦合的WCF。當我說鬆散耦合時,不需要實例化數據庫上下文或添加WCF的服務引用。它只是依賴於web配置或一些.ini文件,當開發人員需要更改服務器,IP地址或服務url時,它們不需要編譯。使用鬆散耦合的WCF Web服務的ASP.NET MVC

相反,MVC(比如控制器)只會發送請求消息,然後從WCF服務獲取響應數據。但是,如果沒有基於數據庫的模型(因爲我們需要在intellisense中進行視圖標記),那麼WCF將獲取數據的情況下,我們仍然無法承受。假設我們已經有了這些數據庫對象類,請創建一些將WCF數據綁定到MVC模型的存儲庫。

我的意思是WCF的Web服務,它只包含消息,不再傳遞對象引用,因爲那是新的SOA定義。傳遞消息而不是對象更有意義。

這是一個更好的方法嗎?在可伸縮性和性能方面,我並不是要冒犯Entity Framework Fans。

回答

1

這是一個完全有效的方法來定義一個WCF Web服務的消息模式方面,它只是使用基本類型,以便客戶端需要對WCF一無所知才能使用該服務。否則WCF將無法與其他平臺(例如Java)互操作。

瞭解WCF是通過各種傳輸協議實現通信的通用而強大的框架。對於原始XML消息傳遞,它可以同樣有效地用於對象編程。對象序列化和反序列化是框架的一個可選的額外部分,而不是要求。 (實際上沒有「傳遞對象引用」這樣的東西 - 最終它是一個遍歷通信通道的XML信息集。此外,實體框架不是WCF的一部分 - 它是一個獨特的ORM框架,您可以使用WCF如果你願意,但那是你的選擇。)

可伸縮性和性能完全正交於服務設計的數據和操作合同。您應該隨時採用任何方法來定義您的服務最適合您的應用程序。如果這是XML消息,那很好 - 別讓別人告訴你。

+0

謝謝克里斯,那就是我正在談論的XML;) – GiantHornet 2012-02-23 10:28:40