使用 Oracle E-Business Suite 适配器的 WCF 通道模型概述

若要调用 Microsoft BizTalk Adapter for Oracle E-Business Suite 上的操作,代码将充当 WCF 客户端,并将出站操作发送到适配器。 在 WCF 通道模型中,代码通过通道发送请求消息来调用适配器上的操作。

若要调用入站操作,例如使用适配器提供的 轮询 操作接收基于轮询的数据更改消息,代码将充当 WCF 服务,并从适配器接收入站操作。 换句话说,代码通过通道从适配器接收请求消息。

本节中的主题概述了将 Oracle E-Business 适配器与 WCF 通道模型配合使用。

WCF 通道模型概述

客户端和服务通过交换 SOAP 消息进行通信。 WCF 通道模型是此消息交换的低级抽象。 它提供接口和类型,使你能够使用称为通道堆栈的分层协议堆栈发送和接收消息。 堆栈的每一层都由一个通道组成,每个通道都是从 WCF 绑定创建的。 最底层是传输通道。 传输通道在服务和客户端之间实现基础传输机制,并将每条消息呈现给更高层 (,最终使用的应用程序) 为 System.ServiceModel.Message。 WCF Message 类是 SOAP 消息的抽象。 WCF 提供了多个通道接口(称为通道形状),用于为基本 SOAP 消息交换模式(例如请求-答复或单向)建模。 WCF 传输绑定提供更高层可用于发送和接收消息的一个或多个通道形状的实现。 有关 WCF 通道模型的详细信息,请参阅 中的 https://go.microsoft.com/fwlink/?LinkId=82614“通道模型概述”。

Oracle E-Business 适配器是一个 WCF 自定义传输绑定,它以 WCF 服务的形式公开 Oracle E-Business Suite 项目。

Oracle 电子商务套件适配器支持的通道形状

适配器实现以下 WCF 通道形状:

  • IRequestChannel (System.ServiceModel.Channels.IRequestChannel) 。 IRequestChannel 接口实现请求-回复消息交换的客户端。 可以使用 IRequestChannel 来执行想要使用响应的操作,例如,对接口表执行 SELECT 查询。

  • IOutputChannel (System.ServiceModel.Channels.IOutputChannel) 。 此形状实现单向消息交换的客户端。 可以使用 IOutputChannel 调用不需要使用响应的操作,例如调用没有 OUT 参数的过程。

    重要

    适配器对 Oracle 客户端的所有基础调用都是同步的。 这包括对 Oracle 客户端的调用,这些调用是通过 IOutputChannel 调用的操作的结果。 使用 IOutputChannel 时,适配器会放弃从 Oracle 客户端收到的响应。

  • IInputChannel (System.ServiceModel.Channels.IInputChannel) 。 此形状实现单向消息交换的服务端。 使用 IInputChannel 从适配器接收入站消息。

    与任何 WCF 绑定一样,Oracle E-Business 适配器使用工厂模式向应用程序代码提供通道。 使用 Microsoft.Adapters.OracleEBSBinding 对象创建以下项的实例:

  • System.ServiceModel.ChannelFactory<IRequestChannel> 提供可用于在适配器上调用请求-响应操作的 IRequestChannel 通道。

  • System.ServiceModel.ChannelFactory<IOutputChannel> 提供 IOutputChannel 通道,可用于在适配器上调用单向操作。

  • System.ServiceModel.IChannelListener<IInputChannel> 提供 IInputChannel 通道,可用于从适配器接收入站消息。

在 WCF 通道模型中为 Oracle 企业业务解决方案创建消息

在 WCF 中, System.ServiceModel.Channels.Message 类提供 SOAP 消息的内存中表示形式。 通过调用静态 Message.Create 方法创建 Message 实例。

SOAP 消息有两个重要部分,在创建要发送到 Oracle E-Business 适配器的消息实例时,必须指定这些 部分

  • 消息操作是 SOAP 消息标头的一部分的字符串。 消息操作标识应在 Oracle E-Business Suite 上调用的操作。 下面显示了为在 Oracle E-Business Suite 中的应收账款应用程序下调用 Customer Interface 并发程序而指定的消息操作:ConcurrentPrograms/AR/RACUST

  • 消息正文包含操作的参数数据。 消息正文由格式正确的 XML 组成,这些 XML 对应于 Oracle E-Business 适配器为请求的操作所需的消息架构。 以下消息正文指定调用 Customer Interface 并发程序的请求消息。

    <RACUST xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/ConcurrentPrograms/AR">
      <Description>Customer Interface Program</Description>
      <StartTime></StartTime>
      <CREATE_RECIPROCAL_CUSTOMER>Yes</CREATE_RECIPROCAL_CUSTOMER>
      <ORG_ID>203</ORG_ID>
    </RACUST>
    
    

    有关 Oracle E-Business 适配器消息架构和操作的消息操作的信息,请参阅适用于 Oracle E-Business Suite 的 BizTalk 适配器的消息和消息架构

    Create 方法已重载,并提供许多不同的选项来提供消息正文。 以下代码演示如何通过使用 XmlReader 提供消息正文来创建 Message 实例。 在此代码中,从文件读取消息正文。

XmlReader readerIn = XmlReader.Create("ConcProgRequest.xml");
Message messageIn = Message.CreateMessage(MessageVersion.Default,
    "ConcurrentPrograms/AR/RACUST",
    readerIn);

其中,ConProgRequest.xml 包含请求消息。

重要

必须在 Message 实例中提供 消息 操作。 这通常在创建 Message 实例时完成。

另请参阅

使用 WCF 通道模型开发 Oracle E-Business Suite 应用程序