本文介绍了从业务流程调用Web/WCF服务:添加生成的项目与添加服务参考的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

If I want to call a web service or wcf method from an orchestration, I can do it by either adding a service reference to the project or adding a generated item. What is the advantage of either approach - is there a best practice?

推荐答案

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

Steef -Jan Wiggers answers a similar question here

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

我的10c-尽管通过添加服务导入的.xsd文件是作为架构添加并设置为BtsCompile的,但是还是有一些限制,例如:

My 10c - Although the .xsd files imported by Add Service is added as a schema and set to BtsCompile, there are some limitations such as:

  • 添加服务参考"将添加客户端代理,这在BizTalk项目中是不需要的(并且可能会诱使"您的开发人员做一些愚蠢的事情,例如使用来自Custom程序集的此代理)
  • 服务参考使导入复杂的WSDL(例如具有泛型或对其他架构的依赖性)变得一团糟,请参阅使用Web服务时的注意事项

使用Add Generated Items向导可以为您完成额外的工作:

Using the Add Generated Items wizard does extra work for you:

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

我向向导推荐的一件事是为WCF参考创建一个文件夹,并始终将所有工件导入到该文件夹​​中(即,不要将端口与架构进行通常的分离,而将虚拟.odx保留在该文件夹中.以及).这样,如果您需要重新生成项目,只需删除文件夹中的所有内容,然后重新启动即可(遗憾的是,该向导没有等效的Update Service Reference.

One thing I would recommend with the Wizard, is to create a folder for the WCF reference and always import all the artifacts into the folder (i.e. don't do the usual separation of Schemas from Ports and leave the dummy .odx there as well). This way, if you need to regenerate the items, just delete everything in the folder and start again (sadly, the wizard doesn't have a Update Service Reference equivalent.

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

Also note that if you do move the generated Schemas and Port Types into a separate assembly, that you will need to change the type modifier access to Public (it is internal by default)

这篇关于从业务流程调用Web/WCF服务:添加生成的项目与添加服务参考的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-15 12:56