1. 程式人生 > >WCF分布式服務1-核心概念

WCF分布式服務1-核心概念

參考 mod operation 解密 rar 重新 tran 意義 傳遞

參考msdn library for WCF

Windows Communication Foundation (WCF) 是用於構建面向服務的應用程序的框架。 借助 WCF,可以將數據作為異步消息從一個服務終結點發送至另一個服務終結點。 服務終結點可以是由 IIS 承載的持續可用的服務的一部分,也可以是應用程序中承載的服務。 終結點可以是從服務終結點請求數據的服務客戶端。 簡單消息可以是作為 XML 發送的單個字符或單個單詞,復雜消息可以是二進制數據流。

WCF 的功能

WCF 包括以下功能集。有關詳細信息,請參見 WCF 功能詳細信息.

  • 服務導向

    使用 WS 標準的一個結果是,WCF 允許您創建面向服務的應用程序。 面向服務的體系結構 (SOA) 依賴 Web 服務發送和接收數據。 這些服務具有松耦合的常規優點,而不是從一個應用程序到另一個應用程序進行硬編碼。 松耦合關系意味著只要符合基本協定,則在任何平臺上創建的任何客戶端均可連接到所有服務。

  • 互操作性

    WCF 實現了 Web 服務互操作性的現代行業標準。有關以下內容的詳細信息支持的標準,請參閱互操作性和集成。

  • 多種消息模式

    采用多種模式之一交換消息。 最常用的模式是請求/答復模式,其中一個終結點從另一個終結點請求數據, 另一個終結點進行答復。 還有其他模式,比如單向消息,其中只有一個終結點發送消息,而不期望得到答復。 更復雜的模式是雙工交換模式,在該模式下,兩個終結點建立連接並來回發送數據,類似於即時消息傳遞程序。有關以下內容的詳細信息如何使用 WCF 實現不同的消息交換模式,請參閱協定。

  • 服務元數據

    WCF 支持使用行業標準(如 WSDL、XML 架構和 WS-Policy)中指定的格式發布服務元數據。 該元數據可用於自動生成並配置客戶端,以便訪問 WCF 服務。 可通過 HTTP 和 HTTPS 來發布元數據,也可使用 Web 服務元數據交換標準來發布元數據。有關詳細信息,請參見 元數據.

  • 數據協定

    由於 WCF 是使用 .NET Framework 生成的,因此它也包括代碼友好的方法,用於提供希望強制執行的協定。 數據協定就是其中一種通用類型的協定。 實質上,當您使用 Visual C# 或 Visual Basic 對服務進行編碼時,處理數據的最簡單方法是使用屬於數據實體的屬性創建表示該數據實體的類。WCF 包括一個以這種輕松的方式處理數據的綜合系統。 在創建了表示數據的類之後,服務會自動生成使客戶端能夠符合所設計數據類型的元數據。有關詳細信息,請參見 使用數據協定

  • 安全性

    可對消息進加密以保護隱私,而且可以要求用戶對其自身進行身份驗證,然後才允許接收消息。 可使用眾所周知的標準(如 SSL 或 WS-SecureConversation)實現安全性。有關詳細信息,請參見 Windows Communication Foundation 安全性.

  • 多種傳輸和編碼方式

    可通過多種內置傳輸協議和編碼中的任意一種發送消息。 最常用的協議和編碼是使用超文本傳輸協議 (HTTP) 發送文本編碼的 SOAP 消息,以便在萬維網上使用。 此外,WCF 還允許通過 TCP、命名管道或 MSMQ 發送消息。 這些消息可以編碼為文本,也可以使用優化的二進制格式。 使用 MTOM 標準可有效地發送二進制數據。 如果所提供的傳輸或編碼都不符合您的需要,您可以創建自己的自定義傳輸或編碼。有關以下內容的詳細信息WCF 支持的傳輸和編碼,請參閱 Windows Communication Foundation 中的傳輸。

  • 可靠的排隊消息

    WCF 支持使用通過 WS-Reliable Messaging 實現的可靠會話和使用 MSMQ 進行可靠的消息交換。有關以下內容的詳細信息WCF 中可靠和排隊的消息支持,請參閱隊列和可靠會話。

  • 持久性消息

    持久性消息決不會由於通信中斷而丟失。 持久性消息模式的消息會始終保存到數據庫中。 如果發生中斷,數據庫將允許您在恢復連接後恢復消息交換。 此外,也可以使用 Windows Workflow Foundation (WF) 來創建持久性消息。有關詳細信息,請參見 工作流服務.

  • 事務

    WCF 還使用三個事務模型之一來支持事務:WS-AtomicTtransactions、System.Transactions 命名空間中的 API 以及 Microsoft 分布式事務協調器。有關以下內容的詳細信息WCF 中的事務支持,請參閱WCF 中的事務。

  • AJAX 和 REST 支持

    REST 是不斷發展的 Web 2.0 技術的一個示例。WCF 可以配置為處理未包裝在 SOAP 信封中的“純文本”XML 數據。WCF 還可以擴展以支持特定的 XML 格式,如 ATOM(流行的 RSS 標準),甚至支持非 XML 格式(如 JavaScript 對象表示法 (JSON))。

  • 擴展性

    WCF 體系結構具有大量擴展點。 如果需要額外功能,它還提供許多入口點,允許您自定義服務的行為。有關以下內容的詳細信息可用擴展點,請參閱擴展 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分布式服務1-核心概念