WCF与传统的ASP.Net Web服务的区别

5

可能是重复问题:
Web Services — WCF vs. Standard


请问有没有相关的文档来说明为什么WCF比传统的ASP.NET web服务更好?我特别关注性能和安全方面。


请查看此问题 - David Basarab
5个回答

8

WCF非常灵活:

  • 可以像遗留的ASMX一样使用HTTP
  • 但也可以使用NetTCP、MSMQ、wsHttp等协议

  • WCF服务可以在IIS中托管(像遗留的ASMX)

  • 但WCF服务还可以在控制台应用程序、Windows NT服务等中进行自我托管

  • WCF提供了比ASMX更多的安全特性和安全级别(例如消息安全性)

  • WCF提供可靠的消息传递、事务支持等功能。

在WCF中,几乎任何东西都可以在配置文件中进行配置——比ASMX更灵活。

我手头没有任何现成的文档来描述这个——但我认为这就是它的实质。

Marc

附言:不确定这个链接是否对你有用:

http://whitepapers.techrepublic.com/abstract.aspx?kw=remoting&docid=270830

另外:你可能会认为微软会有很多这些白皮书来说服人们——但事实并非如此……:-)


谢谢!有什么文档可以推荐吗?我正在说服别人,所以需要不是我自己写的文件。 :-) - George2
抱歉,Marc,我没有找到相关的可下载文档。 - George2
如果我们不将WCF托管到IIS中,会有什么好处呢? - George2
如果您自行托管,您可以完全控制服务主机的构建方式;此外,您不需要IIS(也不需要担心IIS及其错误和补丁) :-) - marc_s
1
也许这会有所帮助?这是微软对WCF与其他分布式技术的性能比较:<br/>http://msdn.microsoft.com/en-us/library/bb310550.aspx - marc_s
@marc_s,您的回答中的链接多了一个“.com”。看起来该文档已被删除(无法通过快速搜索找到)。 - JW Lim

4

乔治,

我手头没有这样的文件,因为WCF为什么更好是显而易见的。

首先,因为微软:ASMX Web Services是“遗留技术”。他们还公开表示,他们不会对WSDL.EXE和其他ASMX技术的部分进行更改。我们在这个行业中已经有足够多的遗留技术和应用程序了,今天创建一个新的遗留代码毫无意义。

其次,WCF抽象出了ASMX、Remoting和WSE的概念。"任何他们能做到的,WCF都可以做得更好"。


约翰,如果我们不把WCF托管到IIS中,有什么好处? - George2
1
那么好处就是您可以将其托管在想要托管的地方。例如,您可以将其托管在Windows服务中,甚至可以将其托管在WinForms客户端应用程序中。这可用于允许两个客户端应用程序相互通信。此外,请记住IIS仅限于HTTP。有一个新的Windows进程激活服务,可以在任何协议(例如原始TCP/IP上的二进制)上激活WCF服务。 - John Saunders
1
好处是长时间运行的服务,例如在启动时缓存大量稳定数据并保持其终身持有。如果您没有使用Windows Server 2008托管自己的服务,则使用Net.Tcp传输(最高效的传输方式)的唯一方法是自己搭建服务。此外,根据您的IT设置,部署Windows服务可能比安装、配置和部署到IIS更容易。 - softveda

3
简单来说,你的问题相当于“为什么.NET比VB6更好”。随着时间的推移,任何传统技术都会成为维护和财务负担。
特别是在安全性和性能方面,我会说“这取决于具体情况”。两种选项都可以实现安全性,而性能主要取决于你编写的代码。WCF性能的一个优点是你不必将其托管在IIS中——因此你有更多的选择和灵活性来使其具有良好的性能。

没有IIS的托管有什么好处? - George2
1
我发现使用TCP作为服务主机几乎可以明显地提高速度。 - Fenton

1

WCF是一个高度可配置的堆栈,具有几乎无限的序列化、安全、传输等组合。

对于您的具体问题,WCF实现了WS-*协议,包括传输和消息安全。

WCF数据契约序列化器比acmx中使用的xmlserialzer快得多。Net.Tcp传输也比基于http的传输更加高效。

我在这里找到了一份性能比较http://msdn.microsoft.com/en-us/library/bb310550.aspx


1

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