从业务流程调用web / wcf服务:添加生成的项目与添加服务引用

时间:2012-10-17 04:55:56

标签: biztalk biztalk-2010 biztalk-orchestrations biztalk-wcf

如果我想从业务流程调用Web服务或wcf方法,我可以通过向项目添加服务引用或添加生成的项来实现。这两种方法的优势是什么?是否有最佳实践?

1 个答案:

答案 0 :(得分:5)

Steef -Jan Wiggers回答了类似的问题here

TL; DR - 始终使用Generated Items wizard

My 10c - 虽然Add Service导入的.xsd文件被添加为模式并设置为BtsCompile,但存在一些限制,例如:

  • 添加服务引用将添加客户端代理,这在BizTalk项目中是不需要的(并且可能会“诱惑”您的开发人员做傻事,例如从自定义程序集中使用此代理)
  • 服务参考会导致导入复杂的WSDL(例如,使用泛型或其他模式的依赖项),请参阅Considerations when consuming Web Services

使用Add Generated Items向导为您做了额外的工作:

  • 添加用于访问服务的端口类型,已针对正确的消息类型进行了预配置。但请注意,它将端口类型添加到虚拟.odx - 即在将端口类型移动到其他位置之前不要删除odx。
  • 允许您同时创建“发送端口”绑定。

我建议使用向导的一件事是为WCF引用创建一个文件夹,并始终将所有工件导入到文件夹中(即不要通常将端口与端口分离,并将虚拟.odx保留在那里以及)。这样,如果您需要重新生成项目,只需删除文件夹中的所有内容并重新开始(遗憾的是,向导没有等效的Update Service Reference

另请注意,如果您确实将生成的模式和端口类型移动到单独的程序集中,则需要将类型修饰符访问权限更改为Public(默认为内部)