2015-05-10 112 views
2

我已經看到的所有WCF服務都是一個單獨的「上帝」界面/類與一堆方法。如果我想要另一個模塊,我總是創建一個新的服務。WCF服務可以像WEB API服務那樣模塊化嗎?

使用WEB API我不必這樣做,因爲我可以開發幾個負責不同功能的控制器。

WCF服務是否真的是一個這樣的'上帝'類與許多方法或我錯過了什麼?

我讀過WCF和WEB API之間的許多比較,但是我沒有看到它們中任何一個提到的這一點。

回答

1

您可以使用c#partial修飾符來模擬WebAPI中的一組控制器。但是這可能會使項目中的大量文件增加一倍,因爲需要在WCF中有一個接口及其實現(如果將它們分開)。

1

我會假設當你說「WCF服務」時,你指的是一個SOAP服務。因爲WCF也支持REST風格的服務。

不管你喜歡,你都可以開發一個WCF服務。

一個區別是WEB API服務不公開關於他們自己的元數據。如果您添加(或刪除)控制器,則它不會影響發送到請求客戶端的元數據,因爲無。

如果您添加或刪除服務合同,或者從現有服務合同中添加或刪除操作,則可以更改客戶端可用的元數據。其中一些客戶端可能會中斷(像PHP這樣的客戶端在運行時使用元數據),或者可能根本無法使用新的服務合同(因爲他們沒有代理類來匹配它)。

1

通過架構,WCF服務比WEB API服務更「模塊化」。你已經看過一個單一的「上帝」界面/類與一堆方法,可能是因爲之前的開發人員可能通常具有以下弊端。所有方法都是在相同裝配

  • 混合接口和實現

    1. 一個接口如果軟件架構設計合理,大多數或所有業務邏輯應在具有模型類封裝沒有與WCF或Web API的聯接,所以您Web API或WCF的代碼應該很薄。

  • +0

    @John,這是通過設計,儘管在實踐中,已經有越來越多的B2B Web服務通過Web API/RESTful實現。更確切地說,它是您的商業模式和運營模式決定使用哪種技術。我提到B2B和B2C的意圖是提高商業模式和運營模式的意識,但這可能在這樣的問答論壇中脫節。 – ZZZ

    +0

    你是對的約翰。剛剛刪除提到b2b b2c。 – ZZZ