使用 Oracle 电子商务套件适配器的 WCF 通道模型概述

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

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

本节中的主题概述了如何结合使用 Oracle 电子商务适配器和 WCF 通道模型。

WCF 通道模型概述

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

Oracle 电子商务适配器是一个 WCF 自定义传输绑定,用于将 Oracle E-Business Suite 组件作为 WCF 服务公开。

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

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

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

  • IOutputChannelSystem.ServiceModel.Channels.IOutputChannel)。 此模型执行单向消息交换的客户端功能。 可以使用 IOutputChannel 来调用不需要响应的操作,例如调用没有 OUT 参数的过程。

    重要

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

  • IInputChannelSystem.ServiceModel.Channels.IInputChannel)。 此形状实现单向消息交换的服务端。 可以使用IInputChannel 接收来自适配器的入站消息。

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

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

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

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

在 WCF 通道模型中为 Oracle Enterprise Business 解决方案创建消息

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

SOAP 消息有两个重要部分,必须在创建要发送到 Oracle 电子商务适配器 的消息 实例时指定。

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

  • 消息正文包含操作的参数数据。 消息正文由格式正确的 XML 组成,符合 Oracle E-Business 适配器期望的用于请求操作的消息架构。 以下消息正文指定要调用 客户接口 并发程序的请求消息。

    <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 电子商务套件的 BizTalk 适配器的消息和消息架构

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

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

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

重要

您必须在 消息 实例中提供一个消息操作。 创建 消息 实例时通常执行此作。

另请参阅

使用 WCF 通道模型开发 Oracle 电子商务套件应用程序