面向服務
服務是複用進化的結果,起初的複用是函數,物件導向編程的出現使複用從函數上升到對象,隨後面向組件編程又將複用從對象上升到組件,現在面向服務編程將複用提升到服務層次。
在面向服務的應用程式中,開發人員只需要關注商務邏輯的編寫,以及通過可交換的、可互操作的服務端點暴露商務邏輯。用戶端調用這些終結點,而不是服務代碼或它的實現包。用戶端與服務端點的互動基於標準的訊息交換,服務發布各種標準中繼資料,描述服務的功能,以及用戶端調用服務作業的方式。正因為是基於標準的互動,所以實現服務端與用戶端的技術與品台可以完全不同。
WCF的優勢
在WCF之前,.NET Framework提供了多種分布式技術,如ASP.NET Web服務、.NET Framework遠端、企業服務、WSE以及Microsoft訊息佇列。一般我們在編寫一個應用程式時通常會同時使用多項技術,現在WCF已經將這些技術整合,通過WCF即可實現這些技術的所有功能。
WCF的基本通訊機制是基於SOAP的Web服務,因此基於WCF的應用程式可以與運行在各種不同壞境中的軟體進行通訊:
1.運行在同一台Windows電腦的不同進程中、基於WCF的應用程式
2.運行在另一台Windows電腦的基於WCF的應用程式
3.基於J2EE應用伺服器等其他技術構建的、支援標準Web服務的應用程式。
WCF的體繫結構
如所示,WCF為四層體繫結構。在上一篇的樣本中我們實際上已經接觸到了這四層結構:
協定(契約)層:在我們的IFirstService介面中通過ServiceContract以及OperationContract特性建立了一個服務契約
服務運行時層:在我們的Host項目中,通過設定檔控制了我們服務的中繼資料行為:即公開服務中繼資料:
隱藏行號 複製代碼 ? App.config
<behaviors>
<serviceBehaviors>
<behavior name="behaviorConfiguration">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
訊息傳遞層:同樣在Host項目中,通過設定檔,我們指定終結點的綁定為basicHttpBinding預定義綁定,該預定義表示我們的服務採用http通道及標準的文本SOAP編碼方式
啟用和承載層:即對應於我們樣本中的Host項目的控制台程式,該程式承載了我們的服務,即服務的宿主程式。
Next,我們將進入WCF的殿堂……