WCF如何基于WSDL和XSD生成服务——契约优先

5

我需要基于由外部委员会定义的wsdl和xsd生成Web服务。这是为了医疗保健服务,wsdl和xsd由外部委员会定义,并且必须按照定义实现(www.caqh.org/SOAP/WSDL/CORERule2.2.0.wsdl www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd)。

是否有工具可以在dot net中生成c#类?我正在使用VS2012和dot net framework 4.0。我的背景是Java,我以前使用诸如Axis2 wsdl2java之类的工具来生成适当开关的骨架接口和类。我的目标是获得装饰有所需注释的骨架接口和类,这些注释在wsdl和xsd中定义。然后我可以填充方法和业务逻辑。我看到一些在线帖子提到使用svcutil.exe,但它们都涉及如何生成客户端代码而不是Web服务代码。


你可以看一下WSCF.blue,但是它似乎已经有3年没有更新了。 - Tim
可能是重复的SO问题 https://dev59.com/2XNA5IYBdhLWcg3wdtr5 如何使用WSDL文件创建WCF服务(而不是进行调用) - david.barkhuizen
1个回答

5
您也可以使用svcutil.exe工具来进行操作。
我下载了wsdl和xsd文件,运行了以下命令。
svcutil.exe /t:code /serviceContract /out:"c:\core\myservice.cs" "c:\core\*"

它生成了接口和请求/响应类。唯一需要做的就是创建一个实现该接口的类。例如,请查看默认的wcf应用程序项目类型。
您可以进一步尝试svcutil.exe参数。例如,它还可以生成带有绑定的wcf客户端和配置文件。请查看我在帖子开头提到的文档。

谢谢。我运行了命令svcutil.exe /t:code "C:\core\CORERule2.2.0.wsdl" /out:"C:\core\myservice.cs" "C:\core*",它生成了接口和类。但是我缺少注释,例如[ServiceContract] [OperationContract] [DataContract] [DataMember]在类文件中。我需要提供其他开关来获取这些注释吗?还是必须手动输入? - Ali Yilmaz
1
每个接口方法都设置了OperationContract属性。ServiceContract属性也在接口中设置。没有设置DataContract和DataMember属性,因为XmlSerializer用于请求和响应的序列化和反序列化。我认为使用XmlSerializer不会有问题,在某些情况下甚至可以使用它代替DataContract Serializer。 - pepo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接