我问了另一个问题,说明我无法在新的Web服务项目中使用WCF,并且已经看到它似乎是在可扩展性和安全性方面使用的技术。
我的问题很简单:
如何说服管理层(以及开发人员)转而使用WCF而不是其他Web服务技术(ASMX / CFC)?他们不会关注比较在类型之间(特别是关于ASMX),简单来说就是获得了什么。
答案 0 :(得分:8)
Plain-vanilla ASMX根本不支持WS-Security或任何其他WS- *扩展。为了实现这些,您需要使用Microsoft的Web服务增强功能(WSE)。
WSE是一种暂缓实施的解决方案,以满足.NET Web服务符合WS- *规范的需求。 WCF不仅仅是升级,它是一个完全替换。因此,WSE(以及随后的ASMX,如果您想使用WS- *协议)正式成为不支持的产品。
那么 - 您的管理层是否希望使用官方不支持的产品开始新项目?
以下是WSE无法获得的所有内容:
技术支持。也许Stack Overflow上的某个人可以帮助你,但微软不能。
错误修复。 WSE 3.0(最新发布的版本)的Visual Studio集成在Visual Studio 2008中不起作用。如果您运行的是Vista x64或Windows 7,它在Visual Studio 2005中也不起作用。
新功能。 WCF提供性能改进,REST协议,消息队列,TCP /命名管道上的二进制序列化,WCF数据服务(Linq over Web Services)以及一系列新机会。您永远不会通过WSE / ASMX获得任何这些。
Active Directory集成。哦,当然,它在WSE中使用kerberos断言“起作用” - 非常非常糟糕。 WCF很容易与Active Directory集成,因此默认以方式保护。
错误合同。 WSE / ASMX中的异常处理是残酷的,所有内容都以SoapException
或ResponseProcessingException
的形式出现在网上。使用WCF,您实际上可以将强类型异常(故障)发送回客户端。
回调合约。想要在客户端启动一些长时间运行的操作,并从服务器收到完成/状态更新的通知?艰难 - 希望你喜欢写轮询循环。
与新技术的互操作性。有时你可以获得一个WSE 3服务来与WCF或Java服务进行通信,并进行一些讨论,但不一定相反。如果您使用3.0之前的WSE版本,请忘掉它。相比之下,WCF能够通过一些简单的配置更改来支持Azure和MSMQ。
使用ASMX / WSE启动新项目相当于在.NET 1.1框架上启动新项目。在编写第一行代码之前,您的产品将是“遗留的”。
如果您的管理层理解“遗留技术”这一术语,并且我怀疑他们这样做了,您可能想要稍微抛出一点。也“过时了”。也“不支持。”
WCF已经存在了4年了。这是在野外发现任何严重问题的时间。没有任何理由不相信它是一种技术。
事实上,WSE 3于2005年底发布,所以它并不比WCF年龄大!相信一项已有5年历史的技术而不是4年前的技术是不合逻辑的 - 特别是在2年前停止对5年技术的支持时。
答案 1 :(得分:3)
好处实际上取决于您的具体情况,但总的来说,有很多。
WCF旨在从一开始就处理服务,并以非常干净的方式进行。它解决了其他技术的许多缺点。主要区别在于WCF带来的灵活性。
例如,使用ASMX或WCF执行RESTful服务非常容易。但是,如果您以后需要添加SOAP,转换,更复杂的身份验证,与富客户端的某些异步通信等,您可以轻松地重新配置和调整WCF服务应用程序以适应。使用以前的技术,您将无法进行重新架构或重写。
为了回应您的评论:安全性,我建议您在MSDN上阅读WCF's Security Model。它实际上远远优于所有用于服务架构的旧Windows技术,因此如果以安全性为重点,那么WCF绝对是最佳选择。
如果您正在处理多个身份验证来源,则尤其如此。 WCF身份验证模型基于标准,但可扩展。实现可通过多种身份验证形式访问的安全服务要简单得多,尤其是当您需要与其他身份验证服务集成时。
答案 2 :(得分:1)
微软现在认为ASMX是“传统技术”。询问您的管理层是否使用传统技术启动是个好主意。
答案 3 :(得分:0)
如果没有至少间接地比较这两种类型,你无法真正陈述可以获得什么 - 否则你没有关于改进的基线。
一般来说,WCF会给你以下内容:
不限于SOAP。这可以使服务更容易消费,而且性能更高。这可能是我作为ASP.net开发人员最大的想法。
性能。 WCF可以更快。
任何东西都可以托管WCF服务,因此您不仅限于IIS。为您的架构提供更多灵活性。
你可以做的最好的事情就是阅读它上面的MSDN文档,因为微软正在大力推动WCF而不是ASMX,并提供了大量有关这些优势的文档。 Start here: Differences Between ASMX and WCF Services
答案 4 :(得分:0)
WCF提供SOA -
对我来说,最大的好处是:交付和交易的可靠性。
坚持使用久经考验且经过充分理解的技术可能是最佳选择 - 对于我们的开发人员和推出,支持等,任何新技术都会有学习曲线。
WCF更好,更好,但在考虑任何新技术或方法时,永远不要忘记上述内容。