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

Jer*_*emy 4 biztalk biztalk-2010 biztalk-orchestrations biztalk-wcf

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

Stu*_*tLC 5

Steef -Jan Wiggers 在这里回答了类似的问题

TL; DR - 始终使用Generated Items wizard.

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

  • 添加服务引用将添加客户端代理,这在BizTalk项目中是不需要的(并且可能会"诱惑"您的开发人员做傻事,比如从自定义程序集中使用此代理)
  • 服务引用使得导入复杂的WSDL变得混乱(例如,使用泛型或依赖于其他模式),请参阅使用Web服务时的注意事项

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

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

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

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