选择什么?ASMX Web服务或.net 3.5中的WCF?

Hot*_*ter 12 .net wcf web-services asmx .net-3.5

我正在开发的当前项目是广泛使用Web服务,并在.net 3.5中制作.现在,当我们要实施第二阶段时,如果我们应该像之前那样使用WCF或Web服务,我们会感到困惑吗?还有什么新东西可以用,并且提出了关于Web服务或WCF的.net 4.0.

Ton*_*pel 26

我们刚刚使用WCF而不是ASMX Web Services完成了一个全新的项目.我们对结果非常满意,但确实知道有一个陡峭的学习曲线.即便如此,我们对整体结果非常满意,并且知道这是微软未来所做的一切的基础,并且完全值得痛苦 - 疣和所有.

我们通过ASMX获得的快速收益:

1)对于内部(防火墙后)服务到服务调用,我们使用net:tcp绑定,这比SOAP快得多

2)我们在同一服务上启用了net:tcp端点和"web"端点,只更新了配置文件(没有代码更改)

3)我们能够创建支持AJAX的RESTful Web服务,仅使用配置更改并使用已经内置的DataContractJsonSerializer.否则,我们将不得不编写HTTP Handler(ashx)并处理大部分Json序列化和url手工解析.

4)由于我们的网站需要扩展性能优化和稳定性,我们正在寻求转换为使用基于MSMQ的消息传递结构,该结构是异步的并且保证并参与交易; WCF提供了一个MSMQ bindng,它在我们的服务中几乎不需要更改代码 - 只需参考更新并使用现有服务正确设置MSMQ(以及为Transactional边界添加属性).

但是要警告:真的投资学习这个(购买蓝色O-Reily书并通过它).在开发过程中有一些参数名称更改,实际上不会破坏服务引用但会导致传递空参数(内置版本偏差处理),托管要考虑的模型(Windows服务与IIS)以及实例化所有模型和FaultExceptions真正理解.我们没有进去,我们有一些痛苦.但我们继续前进,对我们的学习以及我们不再与ASMX联系的灵活性和增长机会非常满意!


mar*_*c_s 11

ASMX非常简单 - 但它在很多方面都非常有限:

  • 您只能在IIS中托管您的Web服务
  • 您只能通过HTTP访问您的Web服务
  • 安全性非常有限

WCF可以解决这个问题 - 并提供更多功能.您可以根据需要在IIS中托管您的WCF服务 - 或者在控制台应用程序或Win NT服务中托管自托管服务器.您可以使用HTTP,TCP/IP,MSMQ,点对点协议,用于机上通信的命名管道等连接您的WCF服务.

绝对建议你选择WCF.它比ASMX更复杂,但它也提供了更多的功能和选择!

至于资源:MSDN WCF开发人员中心提供从初学者教程到文章和示例代码的所有内容.

另外,我建议你看一下WCF上的Pluralsight屏幕演员 - 这是一个很棒的系列,从" 创建你的第一个WCF服务 "和" 创建你的第一个WCF客户端 "一直到相当高级的主题.Aaron Skonnard在10-15分钟的截屏视频中非常精彩地解释了一切 - 强烈推荐!