有一个用WCF编写的Web服务,我正在添加它作为参考。当我将其添加到服务引用时,代理类生成器可以完美地工作,但是当我使用service.svc?WSDL
将其添加为Web引用时,它会生成稍微不同的类。以下是差异:
//service reference
public partial class TestServicesClient : ... // correct class name
{
public int TestMethod(string serviceID, int dealID) // correct method signature
{ ... }
}
//web reference
public partial class TestServices: ... //different class name
{
public void TestMethod(string serviceID, int dealID, bool dealIDSpecified, out int TestMethodResult, out bool TestMethodResultSpecified) // different method signature
{ ... }
}
我尝试使用wsdl.exe生成Web引用类,没有帮助。
这里有什么问题?
答案 0 :(得分:2)
这里没有错。 Service Reference
是使用WCF服务的“新”方式,它消除了诸如“指定”参数,“结果”参数和“结果特定”参数之类的开销。
您仍然可以使用其他属性/方法来检查是否指定了参数或是否存在结果。但在WCF之前,它改变了方法签名。
您使用服务引用和Web引用有点不同,这就是它的方式。
这是一些额外的阅读:
引用对"What is the difference between WCF service and web service"
的回复WCF“网络服务”是其中的一部分 更广泛的遥感 通过WCF启用通信。您 会得到更高的程度 灵活性和可移植性 WCF中的东西比通过传统的东西 ASMX因为WCF的设计,来自于 彻底,总结所有的 不同分布式编程 MS提供的基础设施。一个 可以传达WCF中的端点 与SOAP / XML一样容易 它可以通过TCP /二进制和更改 这种媒介只是一种配置 文件模块。理论上这减少了 移植时所需的新代码量 或改变业务需求,目标, 等
ASMX比WCF早,任何东西 ASMX可以这样做可以WCF(和更多)。 基本上你可以看到WCF正在尝试 逻辑上将所有的组合在一起 获得两个应用程序的不同方式 在MS世界中进行交流; ASMX 这只是众多方式中的一种 现在归入WCF伞下 能力。
答案 1 :(得分:0)
服务引用和Web引用之间几乎没有区别。 WCF使用datacontract序列化程序进行序列化。因此,将XmlSerializeFormat属性添加到serivcecontract,然后添加Web引用。您的额外参数将被删除。但它就像使用像web服务这样的wcf。还有一个限制是你需要像http一样使用网页绑定。