2009-01-05 92 views

回答

2

我认为WCF替代ASMX和远程处理是公平的。 您可以使用ASMX和远程处理以及WCF实现更多功能,但是您拥有更多的功能,并且通常可以更好地控制正在发生的事情。

所以我相信,如果可以的话,你应该使用WCF。

4

WCF是通信库,它是.NET远程处理和“旧”ASMX Web服务以及这两个库的后继者的超集。

WCF Web服务对WS- *标准提供了更好的支持,并且互操作性问题更少。

基本上,你应该使用WCF,因为.NET Remoting的和ASMX可能被视为legecy(如果我没有记错,一些.NET远程漏洞只固定于WCF和从未在.NET远程本身)

10

WCF是一个通信堆栈,允许通过HTTP(如ASMX)和TCP(如Remoting)以及命名管道(这实际上是一个机器内跨进程调用),MSMQ以及.NET 3.5 REST公开服务。

它允许这样做,因为它将服务的通信部分从业务逻辑中分离出来。所有你需要做的就是用合适的契约属性([SeriviceContract],[OperationContract]和[DataContract]装饰你的服务类,方法和DTO。)

这有一个能够写一次服务的好处,并允许许多不同类型的客户端使用相同的服务(即Java客户端可以使用HTTP,.NET客户端可以使用TCP,传统可以使用MSMQ等)。

WCF仍然会允许您使用每个传输的所有功能,包括安全性,事务处理,可靠的消息传递等,但是您需要谨慎使用。并非所有功能都适用于所有传输,您需要相应地进行设计。 WCF允许您在合同中指定哪些功能是必需的。这样可以防止somone尝试以不支持所需功能集的方式公开您的服务(即,如果您的服务需要事务处理,则WCF运行时将不允许通过基本HTTP端点访问该服务)。

WCF也是可扩展通过自定义行为(这影响WCF运行时是如何工作的)和自定义渠道(控制服务如何WCF与外界沟通。)

WCF有一个学习曲线相比, ASMX,但ABSOLUTLY的好处在于减轻这种学习曲线。

希望有所帮助。

+1

在WCF中,DataContractSerializer可以访问非公共成员,因此它需要完全信任,而XML序列化器(在Web服务中)则不需要。由于完全可信的代码访问机器上的所有资源,因此应谨慎使用。 – Adeel 2010-01-29 10:30:40

相关问题