我曾与SvcUtil工具整天一直在努力,试图让它产生一些IMS企业服务有用的代码(主要是集团管理服务,但也有其他我们需要它的正常工作.)你可以找到IMS服务的WSDL在这里http://www.imsglobal.org/es/index.html.
我得出结论,SvcUtil是微软的一个无用的事后想法,它甚至不支持WSDL和XSD标准.它无法生成符合IMS使用和同时运行的标准WSDL协定的WCF服务.尽管从以下WSDL生成了可编译的代码(http://www.imsglobal.org/services/gms/wsdl/imsGroupManServiceSync_v1p0.wsdl),观察从WCF服务生成的WSDL(?WSDL,?WSDL = wsdl0,?XSD = xsd0等)表示没有操作的存在,并且只有在代码中生成的类型的一小部分是实际认可由WCF.如果我们使用生成的代码,我们可以获得某种功能(我们使用SoapUI进行测试),但它不再符合合同,因此对真正需要调用这些服务的人来说它是无用的.
有没有SvcUtil的替代品?(请不要建议使用内置的Visual Studio"添加服务引用"工具,这与使用与SvcUtil完全相同的代码一样无用.)我们需要能够让我们对代码生成方式进行一定程度控制的东西.从WSDL契约中,每个部分最终的文件,每个代码元素最终的名称空间等等.IMC合同导入特定于WSDL中定义的服务的XSD类型,以及所有共同的XSD类型. IMS服务.我们需要能够为这些类型生成不同的程序集,并在生成的代码中引用它们(类似于SvcUtil显然应该如何执行它...但它似乎没有按照它所说的文档所说的那样做根本.)
到目前为止,我一直是WCF的忠实粉丝.当你只使用.NET/WCF服务时,它显然有效,但是当你尝试在符合标准的跨平台环境中使用它时,一切都变得糟透了.
mar*_*c_s 10
您是否看过Codeplex 上的WCF代理生成器?基于它背后的人(Kate Gregory和Michele Leroux Bustamante),希望它可能有用 - 而且你得到了消息来源,所以你可以根据自己的内容进行调整/调整!
(我没有时间认真看待它自己 - 然而 - 这是无休止的"当我绕过它时的待办事项"清单......)
另外,请在Pedram Rezaei的博客文章中查看如何使用您自己的自定义代码影响Visual Studio"添加服务参考"步骤.
小智 8
很抱歉,我没有足够的时间回复此问题,但您的问题有答案.你可以实现一个名为IWsdlImportExtension的接口,它有两个你会感兴趣的方法.它们是:
GenerateContract()和GenerateOperation()
如果实现这些方法,您实际上可以通过添加或删除CustomAttributes等来控制SvcUtil泵出代码的方式.您需要使用其中的接口编译一个dll,然后将SvcUtil配置指向DLL和接口.
使用此方法,您可以将Xml文档添加到输出的代理等等.关于此,有一些感兴趣的文章.
归档时间: |
|
查看次数: |
9682 次 |
最近记录: |