Biztalk和调用Web服务的最佳方式

时间:2012-12-06 00:04:32

标签: web-services biztalk biztalk-2010

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

2 个答案:

答案 0 :(得分:4)

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

IMO你将通过使用.NET代理来处理集成来破坏使用BizTalk的重点。例如:

  1. 您正在对协议(WCF)进行硬编码,现在需要将请求和响应消息封送到自定义代码中。使用发送端口,可以在部署时配置任何请求 - 响应机制 - 对于单元和集成测试尤其有用。
  2. 您将失去BizTalk的消息传递机制的所有好处,例如重试,备份传输,恢复暂停消息,不同端口的不同映射,以及可以说是整个pub子能力,(例如,如果多个听众想要听取来自被叫网络服务的回复?)
  3. 您将在哪里存储WCF serviceModel配置设置,例如端点等?即你已经失去了绑定文件的灵活性。
    • 等。
  4. 因此,TL; DR始终在BizTalk中使用WCF适配器

    然而,这就是说,我同意如果消费的服务改变可能会弄乱更新生成的项目。 FWIW,我们通过以下方式减轻其中的一部分:

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

    不幸的是,这留下了以下需要手动应用的操作:

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

答案 1 :(得分:0)

有趣的是,你可以混合使用两者。由Saravana Kumar检查this !!!

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

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