在C#(其他.Net OOP语言)中,我有2个web服务。 Svc1返回一个复杂的数据类型,它成为svc2的参数。请注意,它是相同的复杂类型。
现在,我创建了这两个webservices的2个代理类。这意味着同一类型会生成两次。
如何确保在2个代理中只有该类型的一个副本?您可以假设2个webservices的相同或不同的名称空间。
答案 0 :(得分:1)
同时生成两个代理:
svcutil http://example.com/svc1?wsdl http://example.com/svc2?wsdl
如果两个服务中的类型实际上相同(名称和名称空间),它将只为客户端生成一个代理类。
另一种可能性是为第一个服务生成代理类:
svcutil http://example.com/svc1?wsdl
将生成的.cs
文件编译为一个程序集,例如MyAssembly.dll
,并在导入第二个服务时使用/reference选项:
svcutil /reference:MyAssembly.dll http://example.com/svc2?wsdl
这将在WSDL和提供的程序集中查找相同的类型。
答案 1 :(得分:0)
我最近遇到过类似的问题;我没有尝试达林的建议。
IDesign的Miguel Castro在2009年3月的DevConnections上发表了关于“WCF手动方式......正确方法”的精彩演讲。他展示了如何重用服务合同和代理。从我的笔记:我们公司还没有转向WCF,但这看起来像是要走的路(对我来说)。
编辑:我在此找到了article by Mr. Castro。