SubmitDirect(BizTalk Server 示例)

SubmitDirect 示例演示如何以编程方式从 将单向消息和请求/响应消息提交到 Microsoft BizTalk Server。基于 NET 的应用程序。 示例演示了适用于适配器的 BizTalk Server API 的用法。 此外,它还提供了一个名为 Submit 的接收适配器,可使用该适配器将消息提交给 BizTalk Server。

必备条件

在运行此示例之前,请确保您以 BizTalk Isolated Host Users 组成员的身份登录到计算机。

本示例的用途

本示例演示如何执行与 BizTalk 适配器相关的各项任务。 具体而言,它演示如何执行以下任务:

  • 使用运行于 BizTalk Server 进程外部的独立适配器。 Submit 适配器是一个独立适配器,因为它是由 BizTalk Server 进程外部的进程创建的(它是作为 .NET 应用程序启动的)。

  • 向 BizTalk Server 提交成批的消息。 Submit 适配器使用批消息提交功能一次提交多条消息。

  • 使用请求/响应范例同步提交消息,以及使用单向范例异步提交消息。

  • 向 BizTalk Server 注册适配器。 本示例演示如何注册适配器并提供了一个可以自动注册适配器的可执行注册程序。

    本示例实际包含两个示例,如下所示:

  • 批量提交单向消息。 控制台应用程序 SubmitMessages.exe 从其命令行中获取字符串并将每个字符串作为单独的消息提交给 BizTalk Server。 BizTalk Server 在接收位置接收每条提交的消息,并通过直通接收和发送管道发送它们,然后将它们写入一个文本文件。

  • 提交请求/响应消息。 控制台应用程序 SubmitRequest.exe 获取在其命令行中指定的 .xml 文件,然后将其提交给 BizTalk Server。 该 .xml 文件的架构定义的元素包含两个整数型字段。 BizTalk Server 接收该 .xml 文件,然后使用业务流程对其加以处理(使用一个请求/响应端口)。 它使用映射来生成 XML 响应消息,该消息返回的是一个整数,该整数是请求中的两个整数的乘积。 当控制台应用程序收到该响应后,它将显示结果。

本示例所在的位置

<示例路径>\AdaptersDevelopment\SubmitDirect\

下表列出了本示例中的文件及其用途说明。

文件 说明
Cleanup.bat 取消部署程序集并将其从全局程序集缓存 (GAC) 中删除;删除发送和接收端口;根据需要删除 Microsoft Internet 信息服务 (IIS) 虚拟目录。
Setup.bat 生成并初始化本示例。
SubmitDirect.sln 解决方案文件,包括 ProcessRequest 文件夹中的 BizTalk 项目和其他文件夹中的 Microsoft Visual C# 项目。
SubmitMessagesBinding.xml、SubmitRequestBinding.xml 用于如端口绑定之类的自动化设置。
\ProcessRequest 文件夹的内容:

DocIn.xsd、DocOut.xsd、Multiplier.odx、Multiply.btm、ProcessRequest.btproj
提供了一个在请求/响应方案下执行整数乘法的 BizTalk 项目。
\SubmitMessages 文件夹的内容:

AssemblyInfo.cs、SubmitMessages.cs、SubmitMessages.csproj
提供了一个用于控制台应用程序的 Visual C# 项目,该程序将其命令行字符串参数作为一批单独的消息进行传递。
\SubmitRequest 文件夹的内容:

AssemblyInfo.cs、DocInstance.xml、SubmitRequest.cs、SubmitRequest.csproj
提供了一个用于控制台应用程序的 C# 项目,该程序传递一个 .xml 文件 (DocInstance.xml),文件中包含两个要进行相乘的整数。
在 \TransportProxyUtils 文件夹中:

AssemblyInfo.cs、MessageHelper.cs、MessagingAPIInterface.cs、MessagingAPIs.cs、ResponseCallBack.cs、TpBatchAsyncCallback.cs、TpBatchAsyncResult.cs、TpBatchStatus.cs、TransportProxyUtils.csproj
为提交适配器的运行时部分提供一个 C# 项目,该项目实现同步和异步消息提交以及批处理和单请求消息提交的方法。
在 \TransportProxyUtilsReg 文件夹中:

AssemblyInfo.cs、RegisterAdapter.cs、TransportProxyUtilsReg.csproj
提供一个 Visual C# 项目,该项目演示可用于向 BizTalk Server 注册适配器的代码。
在 \TransportProxyUtilsUI 文件夹中:

AssemblyInfo.cs、TransportProxyUtilsMgmt.cs、TransportProxyUtilsUI.csproj
提供了一个用于 Submit 适配器的用户界面部分的 Visual C# 项目。

生成并初始化本示例

生成并初始化 SubmitDirect 示例

  1. 在命令窗口中,导航到下面的文件夹:

    <示例路径>\AdaptersDevelopment\SubmitDirect

  2. 运行 Setup.bat 文件,该文件将执行以下操作:

    • 为此示例的批处理提交部分创建以下输出文件夹。

      <示例路径>\AdaptersDevelopment\SubmitDirect\Out

    • 编译此示例的各种 Visual Studio 项目。

    • 向 BizTalk Server 注册提交适配器。

    • 创建并绑定BizTalk Server接收位置以及发送和接收端口。

      注意

      在创建并绑定端口时,本示例将显示以下警告:

      Warning: Receive handler not specified for receive location "SubmitDirectRL"; updating with first receive handler with matching transport type.

      Warning: Host not specified for orchestration "Microsoft.Samples.BizTalk.ProcessRequest.Multiplier"; updating with first available host.

      可以安全地忽略这些警告。 (为了适应用户安装中可能存在的命名差异,绑定文件中省略了主机名和接收处理程序。)

    • 启用接收位置,并启动发送端口和业务流程。

      注意

      在尝试运行本示例前,您应确认在生成和初始化过程中 BizTalk Server 未报告任何错误。

      注意

      如果选择在不运行 Setup.bat 文件的情况下打开并生成本示例中的项目,则必须先使用 .NET Framework 强名称实用工具 (sn.exe) 创建一个强名称密钥对。 使用该密钥对可以对生成的程序集签名。

      注意

      若要撤销 Setup.bat 所做的更改,请运行 Cleanup.bat。 必须在第二次运行 Setup.bat 之前运行 Cleanup.bat。

运行示例

由于此示例使用文件适配器,因此 BizTalk 主机 (BizTalkServerApplication) 必须正在运行。 使用以下过程运行 SubmitDirect 示例。

运行 SubmitDirect 示例的批处理提交部分

  1. 在命令窗口中,导航到下面的文件夹:

    <示例路径>\AdaptersDevelopment\SubmitDirect\SubmitMessages\bin\Debug

  2. SubmitMessages.exe 运行文件,在命令行上传递多个字符串。

    示例:SubmitMessages msg1 msg2 msg3

  3. 观察输出文件夹 Out 中创建的多个文本文件。这些文件包含命令行上传递的字符串,每个文件一个。

运行 SubmitDirect 示例的请求/响应部分

  1. 在命令窗口中,导航到下面的文件夹:

    <示例路径>\AdaptersDevelopment\SubmitDirect\SubmitRequest\bin\Debug

  2. SubmitRequest.exe 运行文件,在命令行上传递相应的 .xml 文件名。

    示例:SubmitRequest .\..\DocInstance.xml

  3. 观察显示到控制台的包含乘法运算结果的响应 XML 消息。

注释

可以在其他应用程序中使用提交适配器。 可以从任何 使用它。用于以编程方式将消息提交到BizTalk Server的基于 NET 的代码。 若要将此适配器与代码一起使用,请使用以下过程。

将示例适配器与代码一起使用

  1. 将提交适配器注册到BizTalk Server。 如果已运行随此示例提供的文件 Setup.bat,则适配器应已注册并可供使用。 否则,可以通过生成项目 TransportProxyUtils.csproj、TransportProxyUtilsUI.csproj 和 TransportProxyUtilsReg.csproj 来注册它,然后运行后一个项目生成的可执行文件,RegisterAdapter.exe。

    重要

    如果在 64 位计算机上安装 BizTalk,请将 HKEY_CLASSES_ROOT\CLSID\ 注册表项的所有实例更改为 RegisterAdapter.cs 文件中 HKEY_CLASSES_ROOT\Wow6432Node\CLSID\。

  2. 使用使用提交适配器的接收位置创建接收端口。 指定接收位置的地址。 地址可以是使用此适配器的接收位置中唯一的任何字符串。

  3. 引用 Visual Studio 项目中的程序集 Microsoft.BizTalk.SDKSamples.AdaptersDevelopment.TransportProxyUtils.dll。

  4. 使用此程序集提供的以下一个或多个方法将消息提交到BizTalk Server。

    方法 说明
    SubmitMessage ()

    BeginSubmitMessage ()

    EndSubmitMessage ()
    用于将单向消息提交到BizTalk Server的同步和异步方法。 必须在消息上下文中设置提交消息的接收位置的地址。

    返回一个指示提交状态(成功/失败)的布尔值。
    SubmitMessages ()

    BeginSubmitMessages ()

    EndSubmitMessages ()
    用于将单向消息数组提交到BizTalk Server的同步和异步方法。 应在消息的上下文中设置提交消息的接收位置的地址。

    返回一个指示提交状态(成功/失败)的布尔值。
    SubmitSyncMessage ()

    BeginSubmitSyncMessage ()

    EndSubmitSyncMessage ()
    用于将请求消息提交到BizTalk Server的同步和异步方法。 应在消息上下文中设置提交消息的接收位置的地址。

    返回响应消息。
    CreateMessageFromString () 从字符串创建BizTalk Server消息对象,并在消息上下文中设置接收位置地址属性。

    返回 BizTalk 消息对象。
    CreateMessageFromStream () 从流创建BizTalk Server消息对象,并在消息上下文中设置接收位置地址属性。

    返回BizTalk Server消息对象。

    有关这些方法的参数和返回类型的详细信息,请参阅 TransportProxyUtils 文件夹中的文件 MessagingAPIInterface.cs。

另请参阅

适配器示例 - 开发
注册适配器