WCF 基礎知識
Windows Communication Foundation (WCF) 是一個執行庫和一組 API,用於建立在服務與客戶端之間傳送訊息的系統。 它使用相同的基礎結構和 API 來建立應用程式,這些應用程式可與同一計算機系統上或駐留在另一家公司內並通過 Internet 訪問的系統上的其他應用程式進行通訊。
WCF 建立在基於訊息的通訊這一概念基礎之上,可以建模為訊息(如 HTTP 請求或 MSMQ 訊息)的任何內容都可以在程式設計模型中按照統一方式進行表示。 這樣,就可以在不同傳輸機制間提供一個統一的 API。
該模型對“客戶端”(即啟動通訊的應用程式)和“服務”(即等待客戶端與其進行通訊並響應該通訊的應用程式)加以區分。 單個應用程式既可以充當客戶端,也可以充當服務。
訊息在終結點之間傳送。 終結點是傳送或接收訊息(或執行這兩種操作)的場所,它們定義訊息交換所需要的所有資訊。 服務公開一個或多個應用程式終結點(以及零個或更多個基礎結構終結點),而客戶端生成一個與服務的其中一個終結點相容的終結點。
“終結點”以基於標準的方式描述訊息應傳送到的位置、訊息應如何傳送以及訊息應具有的形式。 服務可以將這些資訊作為後設資料加以公開,而客戶端可以處理這些後設資料以生成適當的 WCF 客戶端和通訊堆疊。
通訊堆疊的一個必要元素是傳輸協議。 可以使用常用傳輸協議(如 HTTP 和 TCP)通過 Intranet 和 Internet 傳送訊息。 也可以使用其他支援與 Microsoft 訊息佇列 (MSMQ) 應用程式和對等網路網格上的節點進行通訊的傳輸協議。 使用 WCF 的內建擴充套件點可以新增更多傳輸機制。
通訊堆疊中的另一個必要元素是指定如何將任意給定訊息格式化的編碼。WCF 提供了下列編碼:
-
文字編碼,一種可互操作的編碼。
-
訊息傳輸優化機制 (MTOM) 編碼,該編碼是一種可互操作的方法,用於高效地將非結構化二進位制資料傳送到服務或從服務接收這些資料。
-
用於實現高效傳輸的二進位制編碼
WCF 文件中使用的其他概念和術語包括:
- 訊息
- 訊息是一個獨立的資料單元,它可能由幾個部分組成,包括訊息正文和訊息頭。
- 服務
-
服務是一個構造,它公開一個或多個終結點,其中每個終結點都公開一個或多個服務操作。
- 終結點
-
終結點是用來傳送或接收訊息(或執行這兩種操作)的構造。 終結點包括一個定義訊息可以傳送到的目的地的位置(地址)、一個描述訊息應如何傳送的通訊機制規範(繫結)以及對於可以在該位置傳送或接收(或兩者皆可)的一組訊息的定義(服務協定)— 該定義還描述了可以傳送何種訊息。WCF 服務作為一個終結點集合向外界公開。
- 應用程式終結點
-
一個終結點,由應用程式公開並對應於該應用程式實現的服務協定。
- 基礎結構終結點
-
一個終結點,由基礎結構公開,以便實現與服務協定無關的服務需要或提供的功能。 例如,服務可能擁有一個提供後設資料資訊的基礎結構終結點。
- 地址
-
地址指定接收訊息的位置。 地址以統一資源識別符號 (URI) 的形式指定。 URI 架構部分指定用於到達該地址的傳輸機制,如 HTTP 和 TCP。 URI 的層次結構部分包含一個唯一的位置,其格式取決於傳輸機制。使用終結點地址可以為服務中的每個終結點建立唯一的終結點地址,或者在某些特定條件下在終結點之間共享一個地址。
- 繫結
-
繫結定義終結點與外界進行通訊的方式。 它由一組稱為繫結元素的要素構造而成,這些元素“堆疊”在一起以形成通訊基礎結構。 繫結最起碼應定義傳輸協議(如 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 Metadata Utility Tool (Svcutil.exe) 並使其指向正在執行的釋出後設資料的服務,可以自動生成 WCF 客戶端。
- 後設資料
-
服務的後設資料描述服務的特徵,外部實體需要了解這些特徵以便與該服務進行通訊。 ServiceModel Metadata Utility Tool (Svcutil.exe) 可以使用後設資料生成 WCF 客戶端以及客戶端應用程式可用來與服務進行互動的伴隨配置。服務所公開的後設資料包括 XML 架構文件(用於定義服務的資料協定)和 WSDL 文件(用於描述服務的方法)。啟用後設資料後,WCF 通過檢查服務及其終結點自動生成服務的後設資料。 若要釋出服務的後設資料,必須顯式啟用後設資料行為。
深圳E搜科技(搜尋引擎技術鑽研者!)
QQ群:15911745
QQ:448114915;934724029
Mobile:13168078506;13713628016
Email:pc2004lcq@126.com;jackbison@163.com
QQ群:15911745
QQ:448114915;934724029
Mobile:13168078506;13713628016
Email:pc2004lcq@126.com;jackbison@163.com