生活随笔
收集整理的這篇文章主要介紹了
WCF学习- 基础概念
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Windows Communication Foundation (WCF) 是用于構建面向服務的應用程序的框架。借助 WCF,可以將數據作為異步消息從一個服務終結點發送至另一個服務終結點。服務終結點可以是由 IIS 承載的持續可用的服務的一部分,也可以是應用程序中承載的服務。終結點可以是從服務終結點請求數據的服務客戶端。簡單消息可以是作為 XML 發送的單個字符或單個單詞,復雜消息可以是二進制數據流。一些示例方案包括:
處理企業事務的安全服務。 將當前數據提供給其他服務(例如流量報告或其他監視服務)的服務。 使兩個人能夠實時通信或交換數據的聊天服務。 輪詢一個或多個服務以查找數據并將其以邏輯表現形式展示出來的面板應用程序。 將使用 Windows Workflow Foundation 實現的工作流作為 WCF 服務公開。 輪詢服務以查找最新數據源的 Silverlight 應用程序。 雖然在 WCF 存在之前就可以創建此類應用程序,但 WCF 使終結點的開發比以前更容易。總之,WCF 設計提供一種用于創建 Web 服務和 Web 服務客戶端的可管理的方式。
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 等)的簡寫。
轉載于:https://www.cnblogs.com/loner/p/3580927.html
總結
以上是生活随笔 為你收集整理的WCF学习- 基础概念 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。