【问题标题】:Biztalk and the best way to call web serviceBiztalk 和调用 Web 服务的最佳方式
【发布时间】:2012-12-06 00:04:32
【问题描述】:

我正在编写一个 biztalk 编排,它需要调用一个 Web 服务,可能是多个 Web 服务,并且可能不止一次。我看到了两个选择;第一,在单独的代码项目中使用 wsdl,并从表达式形状的代码中调用 Web 服务,第二,从 Biz 中使用它,获取模式等,并通过请求/响应端口调用。这里的最佳做法是什么?一方面,如果更新了 wsdl,那么更新代码将比更新模式和端口更容易,而且为多个 Web 服务调用构建足够多的端口似乎有很多混乱和工作。另一方面,您可以在端口级别进行的所有调整(重试一次)使得调用 Web 服务变得健壮。

【问题讨论】:

    标签: web-services biztalk biztalk-2010


    【解决方案1】:

    另请参阅此问题here,其中讨论了第三个选项,即在 BizTalk 中使用 add service reference 作为导入 XSD 的替代方法。

    IMO 您将通过使用 .NET 代理处理集成来破坏使用 BizTalk 的意义。例如:

    1. 您正在对协议 (WCF) 进行硬编码,现在需要将请求和响应消息编组到/来自您的自定义代码。使用发送端口,可以在部署时配置任何请求-响应机制 - 特别适用于单元测试和集成测试。
    2. 您将失去 BizTalk 消息传递机制的所有好处,例如重试、备份传输、恢复挂起的消息、不同端口的不同映射以及可以说的整个 pub sub 功能(例如,如果多个听众想要收听来自被调用网络服务的响应?)
    3. 您将在哪里存储 WCF serviceModel 配置设置,例如端点等?即您失去了绑定文件的灵活性。
      • 等。

    所以,TL;DR 始终在 BizTalk 中使用 WCF 适配器

    不过,我同意如果使用的服务发生更改,更新生成的项目可能会很麻烦。 FWIW,我们通过以下方式缓解了其中的一些问题:

    • 始终创建一个单独的空文件夹,在其中导入所有 导入生成的工件。
    • 保留所有生成的项目“原样”,即不要试图移动虚拟 .odx 或删除它(因为它具有预配置的端口类型)

    很遗憾,以下操作仍然需要手动应用:

    • 如果工件在您的编排的单独程序集中,请记住将端口类型的可见性更改为 public
    • 需要重新应用导入架构上的升级和区分属性(例如,记住在任何更改后记录屏幕截图)。可能这可以通过在 schma 的 <xs:annotation> 部分保存并重新粘贴来简化或自动化。
    • 如果您在 WCF 服务中使用消息协定,并且在多个应用程序中重复使用相同的引用消息,您将需要手动删除由添加生成项创建的重复项,然后重新引用现有架构。 (例如,我们对所有 BizTalk 调用都有一个标准的“响应”消息)

    【讨论】:

    • 看起来在 Biztalk 中添加服务引用会给你一个我认为不好的 SOAP 端口;我相信最好使用 WCF-Custom。它也没有给你一个绑定文件。
    • 是的,WCF-Custom 的可配置性最高。
    【解决方案2】:

    有趣的是,您可以同时拥有这两种情况。检查 this 由 Saravana Kumar 提供!!!

    它使用直通接收并使用发送端口上的 dll 使用 Web 服务,而无需经历创建模式和 Web 端口的痛苦。

    这提供了 Biztalk 的所有功能(路由响应、发送端口配置等),并且仍然可以灵活地更改架构而无需大惊小怪。

    【讨论】:

    • 嗨,Saravana Kumar 的文章有工作链接吗?
    猜你喜欢
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    相关资源
    最近更新 更多