共用方式為


使用 SQL 配接器的 WCF 通道模型概觀

若要在適用于 SQL Server 的 Microsoft BizTalk 配接器上叫用作業,您的程式碼會作為 WCF 用戶端,並將輸出作業傳送至配接器。 在 WCF 通道模型中,您的程式碼會透過通道傳送要求訊息,在配接器上叫用作業。

若要使用配接器接收輪詢型資料變更訊息,您的程式碼會作為 WCF 服務,並從配接器接收輸入 輪詢TypedPolling通知 作業。 換句話說,您的程式碼會透過通道從配接器接收這些作業的要求訊息。

本節中的主題提供搭配 WCF 通道模型使用 SQL 配接器的概觀。

WCF 通道模型概觀

用戶端和服務會交換 SOAP 訊息來通訊。 WCF 通道模型是這個訊息交換的低階抽象概念。 它提供介面和類型,可讓您使用稱為通道堆疊的分層通訊協定堆疊來傳送和接收訊息。 堆疊的每一層都是由通道所組成,而每個通道都是從 WCF 系結建立。 在最低層是傳輸通道。 傳輸通道會實作服務與用戶端之間的基礎傳輸機制,並將每個訊息呈現給較高層 (,最後取用的應用程式) 為 System.ServiceModel.Message。 WCF 訊息類別是 SOAP 訊息 的抽象概念。 WCF 提供數個稱為通道圖形的通道介面,可建立基本 SOAP 訊息交換模式的模型,例如要求-回復或單向。 WCF 傳輸系結提供一或多個通道圖形的實作,較高層可用來傳送和接收訊息。 如需 WCF 通道模型的詳細資訊,請參閱 通道模型概觀

SQL 配接器是 WCF 自訂傳輸系結,會將SQL Server資料庫公開為 WCF 服務。

SQL Server配接器支援的通道圖形

配接器會實作下列 WCF 通道圖形:

  • IRequestChannel (System.ServiceModel.Channels.IRequestChannel) 。 IRequestChannel介面會實作要求-回復訊息交換的用戶端。 您可以使用 IRequestChannel 來執行您想要取用回應的作業,例如在資料表上執行 SELECT 查詢。

  • IOutputChannel (System.ServiceModel.Channels.IOutputChannel) 。 此圖形會實作單向訊息交換的用戶端。 您可以使用 IOutputChannel 來叫用不需要取用回應的作業,例如呼叫沒有傳回參數的程式。

    重要

    配接器對SQL Server用戶端的所有基礎呼叫都是同步的。 這包括對SQL Server用戶端的呼叫,這是透過IOutputChannel叫用作業的結果。 當您使用IOutputChannel時,配接器會捨棄從SQL Server用戶端收到的回應。

  • IInputChannel (System.ServiceModel.Channels.IInputChannel) 。 此圖形會實作單向訊息交換的服務端。 您可以使用 IInputChannel 從配接器接收輸入作業的訊息,例如 輪詢通知

    如同任何 WCF 系結,SQL 配接器會使用 Factory 模式來提供應用程式程式碼的通道。 您可以使用 Microsoft.Adapters.SQLBinding 物件來建立的實例:

  • System.ServiceModel.ChannelFactory <IRequestChannel >提供IRequestChannel通道,可用來叫用介面卡上的要求-回應作業。

  • System.ServiceModel.ChannelFactory <IOutputChannel >提供IOutputChannel通道,您可以用來在配接器上叫用單向作業。

  • System.ServiceModel.IChannelListener <IInputChannel 提供 IInputChannel >通道,可讓您用來接收來自介面卡的輸入作業訊息,例如輪詢通知

在 WCF 通道模型中建立SQL Server資料庫配接器的訊息

在 WCF 中 ,System.ServiceModel.Channels.Message 類別提供 SOAP 訊息的記憶體標記法。 您可以叫用靜態Message.Create方法來建立Message實例。

SOAP 訊息有兩個重要部分,您必須在建立 訊息 實例以傳送至 SQL 配接器時指定。

  • 訊息動作是 SOAP 訊息標頭的一部分字串。 訊息動作會識別應該在資料庫上叫用的作業。 以下顯示指定用來叫用 Employee 資料表上 Select 作業的訊息動作: TableOp/Select/dbo/Employee

  • 訊息本文包含作業的參數資料。 訊息本文是由格式正確的 XML 所組成,對應至 SQL 配接器所預期的要求作業之訊息架構。 下列訊息本文會指定 Employee 資料表上的 Select 作業, (SELECT * FROM Employee WHERE Employee_ID=10001) 。

    <Select xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Employee">  
      <Columns>*</Columns>  
      <Query>where Employee_ID=10001</Query>  
    </Select>  
    
    

    如需作業的 SQL 配接器訊息架構和訊息動作的相關資訊,請參閱BizTalk Adapter for SQL Server的訊息和訊息架構

    這個 Create 方法已多載,並提供許多不同的選項來提供訊息本文。 下列程式碼示範如何使用XmlReader來提供訊息本文來建立訊息實例。 在此程式碼中,訊息本文會從檔案讀取。

XmlReader readerIn = XmlReader.Create("SelectInput.xml");  
Message messageIn = Message.CreateMessage(MessageVersion.Default,  
    "TableOp/Select/dbo/Employee",  
    readerIn);  

重要

您必須在訊息實例中提供 訊息 動作。 這通常是在建立 Message 實例時完成。

另請參閱

使用 WCF 通道模型開發應用程式