WCF體系結(jié)構(gòu)詳細(xì)內(nèi)容剖析
WCF開發(fā)插件的主要功能都有哪些?我們應(yīng)該如何正確的應(yīng)用它呢?在掌握這些技術(shù)之前,我們首先需要了解一下WCF體系結(jié)構(gòu),打好基礎(chǔ)后,才能方便我們以后的實際應(yīng)用,幫助我們輕松開發(fā)程序。#t#
WCF體系結(jié)構(gòu)之協(xié)定和說明
協(xié)定定義消息系統(tǒng)的各個方面。 數(shù)據(jù)協(xié)定描述組成某一服務(wù)可創(chuàng)建或使用的每則消息的每個參數(shù)。 消息參數(shù)由 XML 架構(gòu)定義語言 (XSD) 文檔定義,這使得任何理解 XML 的系統(tǒng)均可處理該文檔。 消息協(xié)定使用 SOAP 協(xié)議定義特定消息部分,當(dāng)互操作性要求對消息的某些部分進行更精細(xì)的控制時,消息協(xié)定可實現(xiàn)這種控制。 服務(wù)協(xié)定指定服務(wù)的實際方法簽名,并以支持的編程語言之一(例如 Visual Basic 或 Visual C#)作為接口進行分發(fā)。
策略和綁定規(guī)定與某一服務(wù)進行通信所需的條件。 例如,綁定必須(至少)指定所使用的傳輸(例如 HTTP 或 TCP)和編碼。 策略包括安全要求和其他條件,必須滿足這些要求和條件才能與服務(wù)進行通信。
WCF體系結(jié)構(gòu)之服務(wù)運行時
服務(wù)運行時層包含僅在服務(wù)實際運行期間發(fā)生的行為,即該服務(wù)的運行時行為。 遏制控制處理的消息數(shù),如果對服務(wù)的需求增長到預(yù)設(shè)限制,該消息數(shù)則會發(fā)生變化。 錯誤行為指定服務(wù)出現(xiàn)內(nèi)部錯誤時應(yīng)采取的操作,例如控制傳遞給客戶端的信息 (信息過多會向惡意用戶提供攻擊的機會)。 元數(shù)據(jù)行為控制是否以及如何向外部提供元數(shù)據(jù)。 實例行為指定可運行的服務(wù)實例的數(shù)目(例如,singleton 指定只能用單一實例來處理所有消息)。 通過事務(wù)行為,可以在失敗時回滾已進行事務(wù)處理的操作。 調(diào)度行為用于控制 WCF 基礎(chǔ)結(jié)構(gòu)處理消息的方式。
通過擴展性功能可以自定義運行時進程。 例如,消息檢查功能用于檢查消息的各個部分,使用參數(shù)篩選功能可以根據(jù)作用于消息頭的篩選器來執(zhí)行預(yù)設(shè)操作。
WCF體系結(jié)構(gòu)之消息傳遞
消息傳遞層由通道組成。 通道是以某種方式對消息進行處理(例如通過對消息進行身份驗證)的組件。 一組通道也稱為“通道堆棧”。 通道對消息和消息頭進行操作。 這與服務(wù)運行時層不同,服務(wù)運行時層主要涉及對消息正文內(nèi)容的處理。
有兩種類型的通道:傳輸通道和協(xié)議通道。
傳輸通道讀取和寫入來自網(wǎng)絡(luò)(或外部的某些其他通信點)的消息。 某些傳輸通道使用編碼器來將消息(表示為 XML Infoset)轉(zhuǎn)換為網(wǎng)絡(luò)所使用的字節(jié)流的表示形式,或?qū)⒆止?jié)流表示形式轉(zhuǎn)換為消息。 傳輸通道的示例包括 HTTP、命名管道、TCP 和 MSMQ。 編碼的示例包括 XML 和優(yōu)化的二進制文件。
協(xié)議通道經(jīng)常通過讀取或?qū)懭胂⒌钠渌^的方式來實現(xiàn)消息處理協(xié)議。 此類協(xié)議的示例包括 WS-Security 和 WS-Reliability。
消息傳遞層說明數(shù)據(jù)的可能格式和交換模式。 WS-Security 是對在消息層啟用安全性的 WS-Security 規(guī)范的實現(xiàn)。 通過 WS-Reliable Messaging 通道可以保證消息的傳遞。 編碼器提供了大量的編碼,可使用這些編碼來滿足消息的需要。 HTTP 通道指定應(yīng)使用超文本傳輸協(xié)議來傳遞消息。 同理,TCP 通道指定 TCP 協(xié)議。 事務(wù)流通道控制已經(jīng)過事務(wù)處理的消息模式。 通過命名管道通道可以進行進程間通信。 使用 MSMQ 通道可以與 MSMQ 應(yīng)用程序進行互操作。
WCF體系結(jié)構(gòu)之承載和激活
服務(wù)的最終形式為程序。 與其他程序類似,服務(wù)必須在可執(zhí)行文件中運行。 這稱為“自承載”服務(wù)。
某些服務(wù)(如 IIS 或 Windows 激活服務(wù) (WAS))“被承載”,即在外部代理管理的可執(zhí)行文件中運行。 通過 WAS,可以在運行 WAS 的計算機上部署 WCF 應(yīng)用程序時自動激活該應(yīng)用程序。 還可通過可執(zhí)行文件(.exe 文件)的形式來手動運行服務(wù)。 服務(wù)也可作為 Windows 服務(wù)自動運行。 COM+ 組件也可作為 WCF 服務(wù)承載。