共用方式為


使用 Oracle 資料庫配接器的 WCF 通道模型概觀

若要在 Microsoft BizTalk Adapter for Oracle Database 上叫用作業,您的程式代碼會做為 WCF 用戶端,並將輸出作業傳送至配接器。 在 WCF 通道模型中,您的程式代碼會透過通道傳送要求訊息來叫用適配卡上的作業。

若要叫用輸入作業,例如使用配接器所提供的 POLLINGSTMT 作業接收輪詢型數據變更訊息,您的程式碼會作為 WCF 服務,並從配接器接收輸入作業。 換句話說,您的程式代碼會透過通道從配接器接收要求訊息。

本節中的主題提供使用 Oracle 資料庫配接器與 WCF 通道模型的概觀。

WCF 通道模型概觀

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

Oracle 資料庫配接器是 WCF 自定義傳輸系結,會將 Oracle 資料庫公開為 WCF 服務。

Oracle 資料庫配接器支援的通道圖形

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

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

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

    這很重要

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

  • IInputChannelSystem.ServiceModel.Channels.IInputChannel)。 此圖形會實作單向訊息交換的服務端。 您可以使用 IInputChannel 從配接器接收輸入作業的訊息。

    如同任何 WCF 系結,Oracle 資料庫配接器會使用 Factory 模式來提供應用程式程式代碼的通道。 您可以使用 Microsoft.Adapters.OracleDBBinding 對象來建立實例:

  • System.ServiceModel.ChannelFactory<IRequestChannel> 提供 IRequestChannel 通道,您可以用來在配接器上叫用要求-回應作業。

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

  • System.ServiceModel.IChannelListener<IInputChannel> 提供 IInputChannel 通道,您可以用來從配接器接收輸入訊息(例如 POLLINGSTMT 作業)。

在 WCF 通道模型中為 Oracle 資料庫適配器建立訊息

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

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

  • 訊息動作是SOAP訊息標頭的一部分字串。 訊息動作會識別應在 Oracle 資料庫上叫用的作業。 下列顯示在 /SCOTT/EMP 數據表上叫用 Select 作業所指定的訊息動作: http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Select

  • 訊息本文包含操作的參數資料。 訊息本文由格式正確的 XML 組成,符合 Oracle 資料庫配接器所期望的訊息架構,以執行所需的操作。 下列訊息內文指定對 SCOTT.EMP 資料表進行的 SELECT 操作(SELECT * FROM EMP)。

    <?xml version="1.0" encoding="utf-8" ?>  
    <Select xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP">  
        <COLUMN_NAMES>*</COLUMN_NAMES>  
    </Select>  
    

    如需有關 Oracle 資料庫配接器中的訊息架構和訊息操作的資訊,請參閱 BizTalk Adapter for Oracle Database 的訊息和訊息架構

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

XmlReader readerIn = XmlReader.Create("SelectAllActivity.xml");  
Message messageIn = Message.CreateMessage(MessageVersion.Default,  
    "http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Select",  
    readerIn);  

這很重要

您必須在 訊息 實例中提供訊息動作。 建立 訊息 實例時,通常會完成此動作。

WCF 通道模型中 LOB 數據類型的串流支援

配接器所呈現的一些作業支援LOB資料類型的端對端串流。 針對這些作業,透過通道傳送和接收訊息的建立和使用方式將決定 LOB 資料是否支援串流。

如需 Oracle 資料庫配接器如何支援 LOB 數據串流的詳細資訊,請參閱 在 Oracle Database 配接器中串流大型對象數據類型

如需在程式代碼中實作節點值串流以支援LOB數據的端對端串流的詳細資訊,請參閱 使用WCF通道模型串流Oracle Database LOB資料類型

另請參閱

使用 WCF 通道模型開發 Oracle 資料庫應用程式