首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换BizTalk WCF服务

替换BizTalk WCF服务
EN

Stack Overflow用户
提问于 2015-02-27 10:50:39
回答 4查看 301关注 0票数 2

我有一个基于BizTalk的WCF服务,我不确定它是如何部署或生成的,但据我所知,它是使用BizTalk向导发布WCF服务的。问题是BizTalk服务器安装被删除了,现在服务仍然在这里,但是它不能工作,当我调用该服务时,服务响应是一个例外: BizTalk接收位置可能被禁用。我需要生成一个WCF服务来替换该服务。我有一个请求和响应示例,以及包含大量内容、XML、定义等的服务文件夹,但是没有DLL。SVC标记具有对BizTalk逻辑的引用。

<%@ ServiceHost Language="c#" Factory="Microsoft.BizTalk.Adapter.Wcf.Runtime.WSHttpWebServiceHostFactory, Microsoft.BizTalk.Adapter.Wcf.Runtime, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>

因此,我的问题是,有人知道如何根据请求或响应来生成服务,以取代服务。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-03-03 08:30:57

最后,我使用了一个ashx处理程序来处理请求(与其他响应建立在一起非常有用) xml-> generate ->解析和读取请求。唯一的问题是.ashx终止。

票数 0
EN

Stack Overflow用户

发布于 2015-02-27 12:56:36

如果只有请求和响应xml,那么就有点棘手了。即使您能够重新创建该服务,也无法保证现有的服务使用者能够继续调用该服务而不作任何更改。但是,如果您想尝试一下,这个粗略的指南将帮助您:

从soap请求和响应提取操作签名。

这应该很简单。只需查看请求xml中定义SOAP主体的部分即可。例如:

代码语言:javascript
复制
<soap:Body xmlns:m="http://www.bookshop.com/prices"> 
  <m:GetBookPrice> 
    <param1 xsi:type="xs:string">Metro 2033</param1>
  </m:GetBookPrice> 
</soap:Body> 

这表明操作名被称为GetBookPrice,并且它接受一个字符串作为参数。现在查看响应的soap主体,例如:

代码语言:javascript
复制
<soap:Body xmlns:m="http://www.bookshop.com/prices"> 
  <m:GetBookPriceResponse> 
    <return xsi:type="xs:decimal">5.99</return>
  </m:GetBookPriceResponse> 
</soap:Body> 

这告诉我们操作的返回类型是十进制的:

代码语言:javascript
复制
public decimal GetBookPrice(string bookName);

因此,现在可以在普通的WCF服务中重新创建服务操作。

服务定义可能包含复杂类型,而不是原语,在这种情况下,您需要从请求/响应xml推断类型。如果类型太大,可以尝试通过以下方法自动推断它们:

  1. 从XML推断XSD -您只需要从请求/响应文件中提取请求和响应类型,然后通过xsd.exe运行它们,这将尝试为您的请求/响应类型生成XSD模式。
  2. 从XSD推断CS -一旦您拥有XSD文件,再次使用xsd.exe来推断这些文件的类。然后可以用DataContract和DataMember属性对这些类进行注释,然后可以在服务定义中使用它们。

总之,这不是我羡慕您的任务--即使您能够忠实地重构服务和类型定义,您仍然可能会发现,现有客户端无法基于丢失了一些在请求/响应文件中不存在的可选数据来调用服务。

票数 2
EN

Stack Overflow用户

发布于 2015-02-27 13:04:28

如果使用Visual (Reference>“”)在空白项目中为服务创建客户端,则将获得需要实现的接口(以及所有参数的POCOs )。然后创建一个新的WCF项目,并使用该接口和这些类作为您的合同。

这样,您将遵守现有的模式,而不必手动解释它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28763292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档