Web services 使用BizTalk Web服务重新发布内部Web服务
我正在尝试使用BizTalk在两个web服务之间进行通信。 它必须是这样的:Web services 使用BizTalk Web服务重新发布内部Web服务,web-services,biztalk,biztalk-2013,biztalk-orchestrations,Web Services,Biztalk,Biztalk 2013,Biztalk Orchestrations,我正在尝试使用BizTalk在两个web服务之间进行通信。 它必须是这样的: Service1获取输入并通过BizTalk将消息发送到Service2 Service2响应该消息,将其转发给BizTalk,并将其传递给Service1 最后,Service1将响应返回给用户 我已经努力了好几天了,但是我无法在没有编译器错误的情况下构建编排,我也找不到一个带有web服务和带有键入输入的web端口的示例。我开始相信这是不可能的,至少对BizTalk来说是不可能的 最大的问题是:这可能吗?如果是,
获取输入并通过BizTalk将消息发送到Service1
Service2
响应该消息,将其转发给BizTalk,并将其传递给Service2
李>Service1
- 最后,
将响应返回给用户Service1
最大的问题是:这可能吗?如果是,如何回答?你的问题范围相当大,我想回答这个问题可能不太适合所谓的“Q+A”格式 然而,提供由一个或多个底层web服务组成的复合企业服务似乎是一个常见的需求 我已经构建了一个快速而肮脏的示例(BTS 2010/VS 2010),并将其上传到GitHub(在右下方以zip格式下载源代码) 下面是从零开始实现这一点所采取的步骤的“食谱”,但我相信您需要获得要遵循的代码 在Visual Studio中创建新的解决方案 添加WCF服务项目并发布到IIS(本示例中未涵盖范围)
- 使用默认的VS2010 WCF项目,并调用该项目
WCFService
- 为了简单起见,使用了
,但显然可以使用其他绑定 (但需要额外关注,如安全等)basicHttpBinding
- 请注意,
、ServiceContract
上的servicebeavior
,以及名称空间
的web配置中的行为名称空间
都已设置好(否则这些名称空间将默认为名称空间
)tempuri
BizTalkWCF.Orch
,BizTalkWCF.Maps
,BizTalkWCF.WCFPorts
,和BizTalkWCF.Schemas
首先是WCFPorts
- 右键单击
项目,选择“添加”,然后选择“生成的项目”WCFPorts
- 选择使用WCF服务
- 检查元数据交换(Mex)端点
- 提供WCF服务的URL(例如
)http://localhost:57582/Service.svc
- 离开名称空间(BizTalkWCF.WcfPorts)
- 完成向导-WCF工件现在应该存在了
- 如果您需要导入多个Web服务,我建议您为每个Web服务创建单独的Visual Studio解决方案文件夹
IService
)。单击它并将属性类型修改器更改为“公共”
对多部分消息类型执行相同的操作(4 x iSeries设备*-注意,服务上的每个WCF方法有2 x消息类型(一个用于请求,一个用于响应)
WCF端口项目现在应该构建
接下来是Schemas项目
添加2个模式,表示将从BizTalk中公开(发布)的内容(我称它们为BizTalkServiceRequest
和BizTalkServiceResponse
)
这个示例只是在底层WCF服务上提供了一个简单的外观,因此我在请求和响应上得到了与原始WCF服务类似的字段,具有相同的xs类型底层WCF服务上的已被请求和响应消息替换。但是,可以跨多个消息重构和重用架构(xsd:import)中的公共元素。
我刚刚使用了默认名称空间和“根”节点,但请注意,这些名称空间对BizTalk服务使用者是可见的,因此在实际项目中,您需要对此进行更多的考虑
请注意,我们没有重用导入/生成的WCF服务架构。在综合性企业中,还可以使用第三组架构,即“规范”架构,它不知道BizTalk服务使用者和使用的服务所使用的格式(还需要更多映射)
接下来是传入请求到WCF输入模式之间的映射,然后是从WCF输出模式返回BizTalk服务使用者的响应的另一个映射。
在map项目上,将.Net引用添加到WCFPorts项目和Schemas项目。
将新地图添加到地图项目
对于源架构,请查找引用的架构-BizTalkServiceRequest架构。
对于目标模式,选择WCF端口模式(名称mangled很糟糕,但它将是MyService的名称,而不是datacontracts或microsoft模式)。请注意,然后需要选择所包含的架构中需要使用的架构。选择GetDataUsingContract
架构。在元素下,将鼠标从源名称元素拖到目标架构值,并从IsAddSuffix
拖到BoolValue
元素。
对返回响应消息执行相同的操作-显然,这次WcfResponse消息是源,而公开的BizTalk响应是目标。布尔值在repsonse中没有用处,因此只映射字符串值。
地图