繁体   English   中英

WCF与Web服务与套接字:选择哪个?

[英]WCF vs. Web service vs. Sockets: which to choose?

关于Web服务,我有两个相关的问题:

(1)我目前正在编写一组应用程序,但是我发现也许我没有使用正确的工具来完成这项工作。 规格如下:

  • 在不同的VPN和防火墙后面有许多Windows服务器。
  • 每个服务器都有一个运行的Windows服务,该服务通过Web服务将其有关的各种信息通过Web服务报告给集中式服务器,我已编写并可以访问这两个信息。

因此,我既是生产者又是消费者,并且我停留在同一平台(.NET)上。 也许Web服务不是要走的路? 我之所以纯粹使用它,是因为它易于编写和部署,并且我对它们最满意。 我真的应该为此使用WCF吗?

(2)在Web服务中,我正在创建一个State对象来表示服务器的状态,并将其作为参数发送。 但是,添加服务引用会创建State类的代理。 将State对象的属性复制到代理,然后发送代理似乎很费劲。 我是否应该在自动生成的代码中将代理类替换为真实类(即,包括对State类的引用)?

通过“ Web服务”,我假设您是指ASMX? 我认为WCF是可行的,仅仅是因为您没有损失,却获得了很大的灵活性。 例如,您可以通过简单的配置更改从XML-over-HTTP切换为Binary-over-TCP。

我建议使用WCF并使用Net.Tcp绑定。 对于300个客户来说,它应该足够有效。 对于代理类问题,在生成代理时,请对svcutil工具使用/ reference选项。 这将允许您在服务器和客户端之间共享类。 如果您担心互操作性,我将不使用此选项,但是由于您声明同时开发了clietn和服务,因此在.Net中这都是一种有效的用法。

您对“ Web服务”和WCF的区分是错误的。

ASMX Web服务是.NET 1.0中引入的原始.NET SOAP Web服务技术。 它已被WCF取代,WCF可以完成ASMX的所有工作,以及更多功能(包括对WS- *标准的支持)。

微软现在认为ASMX Web服务以及它们所基于的XML序列化器是“传统技术”。 请参阅“ Microsoft说:ASMX Web服务是“传统技术” ”。

使用WCF,由于您可以控制操作的两面,并且可以共享在其中定义服务协定的.dll,因此您可以并且应该使用ChannelFactory<IYourServiceContractHere>而不是通过服务自动生成那些丑陋的代理类。引用。

这是我在此主题上发现的第一篇文章: http : //blogs.msdn.com/juveriak/archive/2008/02/03/using-channels-vs-proxies-in-wcf.aspx

如果它是平台无关的,我当然会推荐WCF。

我已经完全按照您的描述做了,对300多个地点产生了巨大影响。 我认为您打错了电话。

您可能会考虑的另一件事是使用MSMQ。 但是,在这种情况下,您将需要编写事件触发器(COM)或事件队列处理服务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM