什么是 WCF
Windows Communication Foundation (WCF) 是用於構建面向服務的應用程序的框架。 借助 WCF,可以將數據作為異步消息從一個服務終結點發送至另一個服務終結點。 服務終結點可以是由 IIS 承載的持續可用的服務的一部分,也可以是應用程序中承載的服務。 終結點可以是從服務終結點請求數據的服務客戶端。 簡單消息可以是作為 XML 發送的單個字符或單個單詞,復雜消息可以是二進制數據流。 一些示例方案包括: 處理企業事務的安全服務。 將當前數據提供給其他服務(例如流量報告或其他監視服務)的服務。 使兩個人能夠實時通信或交換數據的聊天服務。 輪詢一個或多個服務以查找數據並將其以邏輯表現形式展示出來的面板應用程序。 將使用 Windows Workflow Foundation 實現的工作流作為 WCF 服務公開。 輪詢服務以查找最新數據源的 Silverlight 應用程序。 雖然在 WCF 存在之前就可以創建此類應用程序,但 WCF 使終結點的開發比以前更容易【.NET4.5簡化了很多內容】。 總之,WCF 設計提供一種用於創建 Web 服務和 Web 服務客戶端的可管理的方式。
|
WCF的功能
服務導向 使用 WS 標准的一個結果是,WCF 允許您創建面向服務的應用程序。 面向服務的體系結構 (SOA) 依賴 Web 服務發送和接收數據。 這些服務具有松耦合的常規優點,而不是從一個應用程序到另一個應用程序進行硬編碼。 松耦合關系意味着只要符合基本協定,則在任何平台上創建的任何客戶端均可連接到所有服務。 互操作性 WCF 實現了 Web 服務互操作性的現代行業標准。 多種消息模式 采用多種模式之一交換消息。 最常用的模式是請求/答復模式,其中一個終結點從另一個終結點請求數據, 另一個終結點進行答復。 還有其他模式,比如單向消息,其中只有一個終結點發送消息,而不期望得到答復。 更復雜的模式是雙工交換模式,在該模式下,兩個終結點建立連接並來回發送數據,類似於即時消息傳遞程序。 服務元數據 WCF 支持使用行業標准(如 WSDL、XML 架構和 WS-Policy)中指定的格式發布服務元數據。 該元數據可用於自動生成並配置客戶端,以便訪問 WCF 服務。 可通過 HTTP 和 HTTPS 來發布元數據,也可使用 Web 服務元數據交換標准來發布元數據。 數據協定 由於 WCF 是使用 .NET Framework 生成的,因此它也包括代碼友好的方法,用於提供希望強制執行的協定。 數據協定就是其中一種通用類型的協定。實質上,當您使用 Visual C# 或 Visual Basic 對服務進行編碼時,處理數據的最簡單方法是使用屬於數據實體的屬性創建表示該數據實體的類。 WCF 包括一個有關這種輕松的方式處理數據的綜合系統。 在創建了表示數據的類之后,服務會自動生成使客戶端能夠符合所設計數據類型的元數據。 安全性 可對消息進加密以保護隱私,而且可以要求用戶對其自身進行身份驗證,然后才允許接收消息。 可使用眾所周知的標准(如 SSL 或WS-SecureConversation)實現安全性。 多種傳輸和編碼方式 可通過多種內置傳輸協議和編碼中的任意一種發送消息。 最常用的協議和編碼是使用超文本傳輸協議 (HTTP) 發送文本編碼的 SOAP 消息,以便在萬維網上使用。 此外,WCF 還允許通過 TCP、命名管道或 MSMQ 發送消息。 這些消息可以編碼為文本,也可以使用優化的二進制格式。 使用 MTOM 標准可有效地發送二進制數據。 如果所提供的傳輸或編碼方式都不符合您的需要,您可以創建自己的自定義傳輸或編碼。 . 可靠的排隊消息 WCF 支持使用通過 WS-ReliableMessaging 實現的可靠會話並使用 MSMQ 進行可靠的消息交換。 持久性消息 持久性消息決不會由於通信中斷而丟失。 持久性消息模式的消息會始終保存到數據庫中。 如果發生中斷,數據庫將允許您在恢復連接后恢復消息交換。 此外,也可以使用 Windows Workflow Foundation (WF) 來創建持久性消息。 事務 WCF 還支持使用三個事務模型之一的事務:WS-AtomicTtransactions、System.Transactions 命名空間中的 API 以及 Microsoft 分布式事務協調器。 AJAX 和 REST 支持 REST 只是 Web 2.0 技術下不斷演變的一個示例。 WCF 可以配置為簡單的SOAP 信封包裹的 XML 數據。 WCF 此外可以進行擴展以支持特定的XML格式,如 ATOM(流行的 RSS 標准),甚至非 XML 格式,例如,JavaScript 對象表示法 (JSON)。 可擴展性 WCF 體系結構具有大量擴展點。 如果需要額外功能,它還提供許多入口點,允許您自定義服務的行為。
|
WCF和微軟其他技術的集成
WCF 是一個靈活的平台。 由於這一極強的靈活性,WCF 還在 Microsoft 的一些其他產品中得以利用。 如果您也在使用這些產品中的任何產品,通過了解 WCF 的基礎知識,您會立即受益。 與 WCF 配對的第一項技術是 Windows Workflow Foundation (WF)。 工作流通過將工作流中的各步驟封裝為“活動”,從而簡化了應用程序開發。在 Windows Workflow Foundation 的第一個版本中,開發人員必須為工作流創建一個宿主。 Windows Workflow Foundation 之后的版本與 WCF 進行了集成, 從而允許在 WCF 服務中輕松承載任何工作流;通過在 Visual Studio 2012 中自動選擇 WF/WCF 作為項目類型可實現此目的。 Microsoft BizTalk Server R2 還利用 WCF 作為通信技術。 BizTalk 設計用於接收一種標准化格式的數據,然后將其轉換為另一種格式。 必須將消息傳遞到其中央消息框,在這里可以使用嚴格的映射,也可以通過使用其中一種 BizTalk 功能(如其工作流引擎)來轉換消息。 目前,BizTalk 可使用 WCF 業務線 (LOB) 適配器將消息傳遞到消息框。 Microsoft Silverlight 是一個用於創建可互操作的、豐富 Web 應用程序的平台,允許開發人員創建媒體密集的網站(如流視頻)。 Silverlight 加入了 WCF 作為通信技術,以將 Silverlight 應用程序連接到 WCF 終結點。 Microsoft .NET Services 是一項雲計算計划,使用 WCF 生成啟用 Internet 的應用程序。 使用 .NET Services 可創建跨信任邊界操作的 WCF 服務。 Windows Server AppFabric 的承載功能 應用程序服務器是針對部署和管理使用 WCF 進行通信的應用程序專門生成的。 承載功能 包括豐富的工具和配置選項,專門設計用於啟用 WCF 的應用程序。
|
WCF4.5簡化的功能
樓主
發表於 2013-05-30 00:57:25 | 查看: 9|回復: 0|只看樓主
簡化生產的配置文件當您在 Visual Studio 中添加服務引用,或使用 SvcUtil.exe工具時,生成客戶端配置文件。 在以前版本的 WCF 中,這些配置文件包含每個綁定屬性的值,即使它的值是默認值。 在 WCF4.5 中,生成的配置文件包含只綁定屬性,這些屬性都設置為非默認值。 下面是由 WCF 3.0 生成的配置文件的示例。 <?xml version="1.0" encoding="utf-8"?> 下面是由 WCF 4.5 生成的相同配置文件的示例 <?xml version="1.0" encoding="utf-8"?> 契約【協定】優先開發 WCF 現在支持協定優先開發。 Svcutl.exe 工具有一個 /serviceContract 開關,使您可以從 WSDL 文檔生成服務和數據協定 從可移植的項目中添加服務引用 可移植子集項目使 .NET 程序集程序員能夠維護單個源代碼樹和生成系統,同時仍支持多個 .NET 平台(桌面、Silverlight、Windows Phone 和 XBOX)。 可移植子集項目只引用 .NET 可移植庫,該庫是 .NET Framework 程序集,可在任何核心 .NET 平台上使用。 開發人員的體驗是添加任何其他 WCF 客戶端應用程序內的服務引用相同。 ASP.NET兼容模式默認更改 WCF 提供 ASP.NET 兼容模式,授予在編寫 WCF 服務時,對 ASP.NET HTTP 管道中所有功能的完全訪問權限。 要使用此模式,您必須在 web.config 的 <serviceHostingEnvironment> 部分,將 aspNetCompatibilityEnabled 特性設置為 true。 此外,在此應用程序域中的任何服務都需要將其AspNetCompatibilityRequirementsAttribute 上的RequirementsMode 屬性設置為 Allowed 或 Required。 默認情況下,AspNetCompatibilityRequirementsAttribute 現已設置為 Allowed,默認 WCF 服務應用程序模版將 aspNetCompatibilityEnabled 特性設置為 true。 流式改進 已向 WCF 添加了對異步流處理的新支持。 要啟用異步流處理,將 DispatcherSynchronizationBehavior 終結點行為添加到服務主機,並將其AsynchronousSendEnabled 屬性設置為 true。 服務將經流處理的消息發送到多個正在緩慢閱讀客戶端時,這可以有益於可擴展性。 WCF 不再阻塞每個客戶端的一個線程,並將釋放線程以為另一個客戶端服務。 刪除 IIS 承載服務時緩沖消息的限制。 在以前版本的 WCF 中,收到一條關於使用流處理消息傳輸的 IIS 承載服務的消息。ASP.NET 將在其發送到 WCF 之前緩沖整個消息。 這將導致大量內存消耗。 已在 .NET 4.5 中刪除此緩沖,現在,IIS 承載的 WCF服務可以在收到整個消息之前開始處理傳入的流,從而使實現真正的流處理。 這允許 WCF 立即對消息作出響應,並允許改進的性能。 此外,您不必再指定 maxRequestLength 的值,ASP.NET 對傳入的請求進行大小限制。 如果設置了此屬性,則忽略此屬性, 您仍需要配置 maxAllowedContentLength。 新傳輸默認值
下表描述的已更改的設置和在哪里可以找到的其他信息。 XmlDictionaryReaderQuotas XmlDictionaryReaderQuotas 包含 XML 字典讀取器的可配置的配額值,限制編碼器在創建消息時使用的的內存量。 雖然這些配額是可配置的,但默認的值已經更改為減輕開發人員將需要顯式設置它們的可能性。 MaxReceivedMessageSize 配額未更改,因此仍然可以限制內存消耗,防止您處理XmlDictionaryReaderQuotas 的復雜性。 下表顯示了配額和它們的新默認值,並簡要說明了每個配額的使用目的。
WCF配置驗證 作為 Visual Studio 中版本進程的一部分,現在驗證了 WCF 配置文件。 如果驗證失敗,將在 Visual Studio 中顯示驗證錯誤或警告的列表。 XML編輯器工具提示 為了幫助新的和現有的 WCF 服務開發人員配置他們的服務,Visual Studio XML 配置編輯器現在為屬於服務配置文件的每個配置元素及其屬性提供工具提示。 BasicHttpBinding改進 啟用單個 WCF 終結點對不同身份驗證模式進行響應。 使 WCF 服務的安全性設置由 IIS 控制
|
WCF基礎概念
WCF基礎知識 WCF 是一個運行時和一組 API,用於創建在服務與客戶端之間發送消息的系統。 它使用相同的基礎結構和 API 來創建應用程序,這些應用程序可與同一計算機系統上或駐留在另一家公司內並通過 Internet 訪問的系統上的其他應用程序進行通信。 消息和終結點 WCF 建立在基於消息的通信這一概念基礎之上,可以建模為消息(如 HTTP 請求或消息隊列(也稱為 MSMQ)消息)的任何內容都可以在編程模型中按照統一方式進行表示。 這樣,就可以在不同傳輸機制間提供一個統一的 API。 該模型對“客戶端”(即啟動通信的應用程序)和“服務”(即等待客戶端與其進行通信並響應該通信的應用程序)加以區分。 單個應用程序既可以充當客戶端,也可以充當服務。 消息在終結點之間發送。 終結點是發送或接收消息(或執行這兩種操作)的場所,它們定義消息交換所需要的所有信息。 服務公開一個或多個應用程序終結點(以及零個或更多個基礎結構終結點),而客戶端生成一個與服務的其中一個終結點兼容的終結點。 “終結點”以基於標准的方式描述消息應發送到的位置、消息應如何發送以及消息應具有的形式。 服務可以將這些信息作為元數據加以公開,而客戶端可以處理這些元數據以生成適當的 WCF 客戶端和通信堆棧。 通信協議 通信堆棧的一個必要元素是傳輸協議。 可以使用常用傳輸協議(如 HTTP 和 TCP)通過 Intranet 和 Internet 發送消息。 也可以使用其他支持與消息隊列應用程序和對等網絡網格上的節點進行通信的傳輸協議。 使用 WCF 的內置擴展點可以添加更多傳輸機制。 通信堆棧中的另一個必要元素是指定如何將任意給定消息格式化的編碼。 提供了下列編碼: WCF提供以下類型: 文本編碼,一種可互操作的編碼。 消息傳輸優化機制 (MTOM) 編碼,該編碼是一種可互操作的方法,用於高效地將非結構化二進制數據發送到服務或從服務接收這些數據。 用於實現高效傳輸的二進制編碼。 使用 WCF 的內置擴展點可以添加更多編碼機制(如壓縮編碼)。 消息模式 WCF 支持多種消息模式,包括請求-回復、單向和雙工通信。 不同傳輸協議支持不同的消息模式,因而會影響它們所支持的交互類型。 WCF API 和運行庫還能幫助您安全而可靠地發送消息。
|
WCF術語
WCF 中使用的其他概念和術語包括: 消息 消息是一個獨立的數據單元,它可能由幾個部分組成,包括消息正文和消息頭。 服務 服務是一個構造,它公開一個或多個終結點,其中每個終結點都公開一個或多個服務操作。 終結點 終結點是用來發送或接收消息(或同時執行這兩種操作)的構造。 終結點包括一個定義消息可以發送到的目的地的位置(地址)、一個描述消息應如何發送的通信機制規范(綁定),以及對可以在該位置發送或接收(或同時執行這兩種操作)的一組消息的定義(服務協定,用於描述可以發送哪些消息)。WCF 服務作為一個終結點集合對外公開。 應用程序終結點 一個終結點,由應用程序公開並對應於該應用程序實現的服務協定。 基礎結構終結點 一個終結點,由基礎結構公開,以便實現與服務協定無關的服務需要或提供的功能。 例如,服務可能擁有一個提供元數據信息的基礎結構終結點。 地址 指定接收消息的位置。 它以統一資源標識符 (URI) 的形式指定。 URI 架構部分指定用於到達地址的傳輸機制,如 HTTP 和 TCP。 URI 的層次結構部分包含一個唯一的位置,其格式取決於傳輸機制。 使用終結點地址可以為服務中的每個終結點創建唯一的終結點地址,或者在某些條件下在終結點之間共享一個地址。 下面的示例演示了一個將 HTTPS 協議和一個非默認端口結合使用的地址: HTTPS://cohowinery:8005/ServiceModelSamples/CalculatorService 綁定 綁定定義終結點與外界進行通信的方式。 它由一組稱為綁定元素的要素構造而成,這些元素“堆疊”在一起以形成通信基礎結構。 綁定最起碼應定義傳輸協議(如 HTTP 或 TCP)和所使用的編碼(如文本或二進制)。 綁定可以包含指定詳細信息(例如,用於保護消息的安全機制或終結點所使用的消息模式)的綁定元素。 綁定元素 綁定元素表示綁定的特定部分,如傳輸協議、編碼、基礎結構級協議(如 WS-ReliableMessaging)的實現以及通信堆棧的其他任何要素。 行為 行為是控制服務、終結點、特定操作或客戶端的各個運行時方面的要素。 行為按照范圍進行分組:常見行為在全局范圍內影響所有終結點,服務行為僅影響與服務相關的方面,終結點行為僅影響與終結點相關的屬性,操作級行為影響特定操作。 例如,有一種服務行為是遏制,它指定當過多的消息可能超出服務的處理能力時,服務應該如何反應。 另一方面,終結點行為僅控制與終結點相關的方面,如查找安全憑據的方式和位置。 系統提供的綁定 WCF 包含許多系統提供的綁定。 這些綁定是針對特定方案進行優化的綁定元素的集合。 例如,WSHttpBinding 是為了與實現各種 WS* 規范的服務進行互操作而專門設計的。 通過僅提供那些可以正確應用於特定方案的選項,這些預定義的綁定可以節省時間。 如果預定義的綁定不能滿足您的要求,則可以創建您自己的自定義綁定。 配置與編碼 可以通過代碼編寫、配置或將兩者結合在一起對應用程序進行控制。 配置的優點在於,它使非開發人員(如網絡管理員)可以在代碼編寫完成后直接對客戶端和服務參數進行設置,而不必重新進行編譯。 使用配置不僅可以設置值(如終結點地址),還可以通過添加終結點、綁定和行為來實施進一步的控制。 通過代碼編寫,開發人員可以保持對服務或客戶端的所有組件的嚴格控制,而且可以對通過配置完成的所有設置進行檢查,並根據需要通過代碼進行重寫。 服務操作 服務操作是在服務的代碼中定義的過程,用於實現某種操作的功能。 此操作作為一個 WCF 客戶端上的方法向客戶端公開。 該方法可以返回一個值,並可采用數量可選的參數,或是不采用任何參數且不返回任何響應。 例如,一個實現簡單的“Hello”的操作可以用作客戶端存在通知,並可以開始一系列操作。 服務協定 服務協定將多個相關的操作聯系在一起,組成單個功能單元。 協定可以定義服務級設置,如服務的命名空間、對應的回調協定以及其他此類設置。 在大多數情況下,協定的定義方法是用所選的編程語言創建一個接口,然后將 ServiceContractAttribute 屬性應用於該接口。 通過實現該接口,可生成實際的服務代碼。 操作協定 操作協定定義參數並返回操作的類型。 在創建定義服務協定的接口時,可以通過將 OperationContractAttribute 屬性應用於協定中包含的每個方法定義來表示一個操作協定。 可以將操作建模為采用單個消息作為參數並返回單個消息,或者建模為采用一組類型作為參數並返回一個類型。 在后一種情況下,系統將確定需要為該操作交換的消息的格式。 消息協定 消息協定描述消息的格式。 例如,它會聲明消息元素應包含在消息頭中還是包含在消息正文中,應該對消息的何種元素應用何種級別的安全性,等等。 錯誤協定 可以將錯誤協定與服務操作進行關聯,以指示可能返回到調用方的錯誤。 一個操作可以具有零個或更多個與其相關聯的錯誤。 這些錯誤是在編程模型中作為異常建模的 SOAP 錯誤。 數據協定 服務使用的數據類型必須在元數據中進行描述, 以使其他各方可以與該服務進行交互操作。 數據類型可以在消息的任何部分使用(例如,作為參數或返回類型)。 如果服務僅使用簡單類型,則無需顯式使用數據協定。 宿主 服務必須承載於某個進程中。 “宿主”是控制服務的生存期的應用程序。 服務可以是自承載的,也可以由現有的宿主進程進行管理。 自承載服務 自承載服務是在開發人員創建的進程應用程序中運行的服務。 開發人員控制服務的生存期、設置服務的屬性、打開服務(這會將服務設置為偵聽模式)以及關閉服務。 宿主進程 宿主進程是專為承載服務而設計的應用程序。 這些宿主進程包括 Internet 信息服務 (IIS)、Windows 激活服務 (WAS) 和 Windows 服務。 在這些宿主方案中,由宿主控制服務的生存期。 例如,使用 IIS 可以設置包含服務程序集和配置文件的虛擬目錄。 在收到消息時,IIS 將啟動服務並控制服務的生存期。 實例化 每個服務都具有一個實例化模型。 有三種實例化模型:“單個”,在這種模型中,由單個 CLR 對象為所有客戶端提供服務;“每個調用”,在這種模型中,將創建一個新的 CLR 對象來處理每個客戶端調用;“每個會話”,在這種模型中,將創建一組 CLR 對象,並且為每個獨立的會話使用一個對象。 實例化模型的選擇取決於應用程序要求和服務的預期使用模式。 客戶端應用程序 客戶端應用程序是與一個或多個終結點交換消息的程序。 客戶端應用程序通過創建一個 WCF 客戶端實例並調用該 WCF 客戶端的方法來開始工作。 需要注意的是,單個應用程序既可以充當客戶端,也可以充當服務。 通道 通道是綁定元素的具體實現。 綁定表示配置,而通道是與該配置相關聯的實現。 因此,每個綁定元素都有一個相關聯的通道。 通道堆疊在一起以形成綁定的具體實現:通道堆棧。 WCF 客戶端 WCF 客戶端是一個將服務操作作為方法公開的客戶端應用程序構造(用您所選的 .NET Framework 編程語言編寫,如 Visual Basic 或 Visual C#)。 任何應用程序都可以承載 WCF 客戶端,包括承載服務的應用程序。 因此,可以創建一個包含其他服務的 WCF 客戶端的服務。 通過使用 ServiceModel 元數據實用工具 (Svcutil.exe) 並使其指向正在運行的發布元數據的服務,可以自動生成 WCF 客戶端。 元數據 服務的元數據描述服務的各種特征,外部實體需要了解這些特征以便與該服務進行通信。 ServiceModel 元數據實用工具 (Svcutil.exe) 可以使用元數據生成 WCF 客戶端以及客戶端應用程序可用來與服務進行交互的伴隨配置。 服務所公開的元數據包括 XML 架構文檔(用於定義服務的數據協定)和 WSDL 文檔(用於描述服務的方法)。 啟用元數據后,WCF 通過檢查服務及其終結點自動生成服務的元數據。 若要發布服務的元數據,必須顯式啟用元數據行為。 安全性 WCF 中的安全性包括保密性(為防止竊聽而進行的消息加密)、完整性(用於檢測消息篡改行為的方法)、身份驗證(用於驗證服務器和客戶端的方法)以及授權(資源訪問控制)。 通過利用現有安全機制(如 TLS over HTTP,也稱為 HTTPS)或通過實現各種 WS-* 安全規范中的一個或多個規范,可以提供這些功能。 傳輸安全模式 傳輸安全模式指定由傳輸層機制(如 HTTPS)提供保密性、完整性和身份驗證。 在使用像 HTTPS 這樣的傳輸協議時,此模式的優點在於性能出色,而且由於它在 Internet 上非常流行,因此很容易理解。 其缺點在於,這種安全分別應用於通信路徑中的每個躍點,這使得通信容易遭受“中間人”攻擊。 消息安全模式 消息安全模式指定通過實現一個或多個安全規范來保證安全,如名為“Web Services Security: SOAP Message Security”(Web 服務安全:SOAP 消息安全)的規范。 每個消息都包含必要的安全機制,用於在消息傳輸過程中保證安全,並使接收方能夠檢測到篡改和對消息進行解密。 從這種意義上說,安全信息包裝在每個消息中,從而提供了跨多個躍點的端到端安全。 由於安全信息成為消息的一部分,因此還可以在消息中包含多種憑據(這些憑據稱為“聲明”)。 這種方法還具有這樣一個優點,即消息可以通過任意傳輸協議(包括在其起點和目標之間的多個傳輸協議)安全地傳送。 這種方法的缺點在於所使用的加密機制較為復雜,使性能受到影響。 使用消息憑據的傳輸安全模式 此模式指定使用傳輸層來提供消息的保密性、身份驗證和完整性,並且每個消息都可以包含消息接收方所要求的多個憑據(聲明)。 WS-* 一組不斷增加的、在 WCF 中予以實現的 Web 服務 (WS) 規范(如 WS-Security、WS-ReliableMessaging 等)的簡寫。
|
WCF體系結構
下圖說明了 Windows Communication Foundation (WCF) 體系結構的主要層。 WCF體系結構 協定 協定定義消息系統的各個方面。 數據協定描述組成某一服務可創建或使用的每則消息的每個參數。 消息參數由 XML 架構定義語言 (XSD) 文檔定義,這使得任何理解 XML 的系統均可處理該文檔。 消息協定使用 SOAP 協議定義特定消息部分,當互操作性要求對消息的某些部分進行更精細的控制時,消息協定可實現這種控制。 服務協定指定服務的實際方法簽名,並以支持的編程語言之一(例如 Visual Basic 或 Visual C#)作為接口進行分發。策略和綁定規定與某一服務進行通信所需的條件。 例如,綁定必須(至少)指定所使用的傳輸(例如 HTTP 或 TCP)和編碼。 策略包括安全要求和其他條件,必須滿足這些要求和條件才能與服務進行通信。 服務運行時 服務運行時層包含僅在服務實際運行期間發生的行為,即該服務的運行時行為。 遏制控制處理的消息數,如果對服務的需求增長到預設限制,該消息數則會發生變化。 錯誤行為指定服務出現內部錯誤時應采取的操作,例如控制傳遞給客戶端的信息 (信息過多會向惡意用戶提供攻擊的機會)。元數據行為控制是否以及如何向外部提供元數據。 實例行為指定可運行的服務實例的數目(例如,singleton 指定只能用單一實例來處理所有消息)。 通過事務行為,可以在失敗時回滾已進行事務處理的操作。 調度行為用於控制 WCF 基礎結構處理消息的方式。通過擴展性功能可以自定義運行時進程。 例如,消息檢查功能用於檢查消息的各個部分,使用參數篩選功能可以根據作用於消息頭的篩選器來執行預設操作。 消息傳遞 消息傳遞層由通道組成。 通道是以某種方式對消息進行處理(例如通過對消息進行身份驗證)的組件。 一組通道也稱為“通道堆棧”。 通道對消息和消息頭進行操作。 這與服務運行時層不同,服務運行時層主要涉及對消息正文內容的處理。 有兩種類型的通道:傳輸通道和協議通道。 傳輸通道讀取和寫入來自網絡(或外部的某些其他通信點)的消息。 某些傳輸通道使用編碼器來將消息(表示為 XML Infoset)轉換為網絡所使用的字節流的表示形式,或將字節流表示形式轉換為消息。 傳輸通道的示例包括 HTTP、命名管道、TCP 和 MSMQ。 編碼的示例包括 XML 和優化的二進制文件。 協議通道經常通過讀取或寫入消息的其他頭的方式來實現消息處理協議。 此類協議的示例包括 WS-Security 和 WS-Reliability。 消息傳遞層說明數據的可能格式和交換模式。 WS-Security 是對在消息層啟用安全性的 WS-Security 規范的實現。 通過 WS-Reliable Messaging 通道可以保證消息的傳遞。 編碼器提供了大量的編碼,可使用這些編碼來滿足消息的需要。 HTTP 通道指定應使用超文本傳輸協議來傳遞消息。 同理,TCP 通道指定 TCP 協議。 事務流通道控制已經過事務處理的消息模式。 通過命名管道通道可以進行進程間通信。 使用 MSMQ 通道可以與 MSMQ 應用程序進行互操作。 承載和激活
服務的最終形式為程序。 與其他程序類似,服務必須在可執行文件中運行。 這稱為“自承載”服務。 某些服務(如 IIS 或 Windows 激活服務 (WAS))“被承載”,即在外部代理管理的可執行文件中運行。 通過 WAS,可以在運行 WAS 的計算機上部署 WCF 應用程序時自動激活該應用程序。 還可通過可執行文件(.exe 文件)的形式來手動運行服務。 服務也可作為 Windows 服務自動運行。 COM+ 組件也可作為 WCF 服務承載。
|