使用WCF促进AJAX调用是否有优势?

时间:2009-11-26 21:52:36

标签: asp.net-mvc ajax wcf architecture

我目前正在阅读一份提案,其中此人建议使用WCF服务来促进Web应用程序中的AJAX调用。他们说WCF可以更有效地序列化数据。 我个人从未考虑采用这种方法。我一直喜欢使用jQuery的AJAX功能调用MVC控制器,这从来都不是问题。

现在有提议将WCF用于AJAX,我有点怀疑。我想保持开放的心态。对我来说,它似乎添加了另一层,不必要地使事情复杂化。这值得吗?

6 个答案:

答案 0 :(得分:3)

作为旁注,ASP.Net MVC目前使用JavaScriptSerializer(尽管已将其标记为过时的.Net 3.5)用于序列化WCF使用DataContractJsonSerializer的JSON数据。

因此,就JSON序列化效率而言,MVC将更有效,因为JavaScriptSerializer比DataContractJsonSerializer更轻量级(都快速和脏)。

HTH

答案 1 :(得分:2)

+1我也有点怀疑。我不认为平均下注者会在Ajax / jQuery中发送大量数据,如果他们认为他们需要重构一点。

因此,如果是这种情况,那么当您序列化(可能)2或3 k数据时,可以从使用WCF而非正常mvc功能获得什么样的可能获得。我认为通过Ajax发送即使是2k也是很多。

在后面的代码中使用WCF是一个好主意,但对于ajax serilization,dunno关于那个。

答案 2 :(得分:2)

我不打扰另一个层,尤其是WCF,以促进AJAX调用。如果你已经在使用MVC,那么JsonResult会很好(根据上面的Jason Fox,效率更高)。

除非您需要Web服务来处理需要Web服务的操作(即在Web上进行交互),否则为什么要这么麻烦? MVC控制器总是为我完成工作,没有烦人的开销。

答案 3 :(得分:1)

如果您使用不同的绑定在其他端点上公开相同的服务,那将是值得的,但如果您只是使用AJAX,那么我将使用返回JsonResult的MVC控制器。您仍然可以使用操作过滤器获取参数序列化。

除非只有WCF提供特定的必需功能,否则MVC控制器会更简单。您不必担心合同,绑定,配置,WCF的JSON格式等等。

答案 4 :(得分:1)

这在概念上听起来很有意思,但在一天结束时你还不会回归Json吗?也许我错过了一些东西,但是WCF返回的Json怎么能比WCF返回的Json更优化?这就像说我的XML比你的更优化?它不像WCF可以将二进制数据返回给浏览器 - 你无法使用那些数据......(或者它可以吗??)我想WCF序列化器可能比MVC更快,但瓶颈总是将通过网络获取这些数据。

当然这都是纯粹的猜测 - 我们需要您阅读的提案以提供准确的意见。这很大程度上取决于您通过Ajax发送的数据量。

答案 5 :(得分:-1)

WCF有自己的序列化程序,它(IIRC)是二进制的,它处理XML序列化不能的对象图。它也不应该具有XML的冗长开销。正如格里格所指出的那样,这可能是对优化的过度关注。

WCF比JSON更有效吗?不知道,不确定那么重要。

在编码中,会有一个瘦服务层和ASP.NET托管,因此会增加开销。它是否影响性能是一个单独的问题;与用于处理服务的.asmx或MVC控制器开销相比,它只是可见的开销。

在这种情况下,我认为你没有真正获得WCF的任何其他功能。使用WCF for ASP.NET托管Web服务会限制您使用特定的绑定协议。

编辑:查看我使用WCF进行Web服务的项目,它是Web HttpBinding。如评论中所述,那将是JSON。另一方面,如果您正在使用ASP.NET ScriptManager标记,它会动态构建代理,包括解析数据,因此您真的不知道数据是如何序列化的。