我正处于使用Jquery开发网站的早期阶段。我想知道是使用Pagemethods还是WCF服务类。我在一个SO答案中看到,它说在所有未来的需求中尽可能多地使用WCF。如果有人能解释什么是决定因素和安全让步,我将非常感谢。
发布于 2010-06-19 12:11:11
如果页面方法或ASMX ScriptService满足您的需求,那么使用它们也没什么错。
WCF确实为桌面带来了额外的功能、灵活性和特性,但这是以额外的复杂性为代价的。如果你不打算使用这些改进,那么它只会带来复杂性。
人们会告诉你,ScriptService方法是“传统的”,基于一篇MSDN文章的一些标题文本,但这是不成比例的。事实上,newer versions of those same articles不再附带免责声明。放弃它必须是一个有意识的决定。在可预见的未来,服务器端ASP.NET、AJAX和ScriptServices不会有任何发展。
如果您只是在将调用它的页面所在的同一项目中托管一个AJAX回调端点,那么在易用性方面,您真的不能胜过page和ScriptServices。除了关于过时的FUD争论之外,我从来没有看到过一个很好的论据来解释为什么WCF的复杂性惩罚在这种情况下是合理的。
ScriptService/Page方法的JavaScriptSerializer还可以对DateTime和枚举输入参数进行反序列化,这比WCF的DataContractJsonSerializer稍微灵活一些,这通常非常方便。
发布于 2010-07-02 00:23:30
我最近面临着类似的决定--以下是一些对我们的决定有很大影响的事情:
ASMX和PageMethods在ASP.NET服务中运行,因此它们可以与ASP.NET页共享相同的会话数据。如果你大量使用会话(我不会讨论这是否是一个好的实践--那是完全不同的讨论),那么能够在你的页面调用和webservice调用之间共享它可能是一个很大的好处。在我们的例子中,我们实际上将某些授权信息存储在会话中--如果我们选择将webservices实现为WCF,我们还需要在webservice和ASP.NET服务之间滚动我们自己的单点登录框架。这没有错,但这是你可能不想投资的设计/开发/测试时间。
如果您的ASP.NET服务托管在与and服务不同的地址/端口上,那么从您的页面对它的所有调用都将被视为跨站点脚本(XSS),并且将受到浏览器的显著限制。对此有变通方法(主要是以JSONP的形式),但这些变通方法也有局限性;例如,仅支持GET类型的http请求。由于ASMX/PageMethod是在ASP.NET服务器本身内执行的,因此它们不会被视为XSS请求。当然,如果您可以保证您的WCF服务将始终部署在与您的ASP.NET服务器相同的地址/端口上,那么它们也不会被视为XSS -在这种情况下,这个问题是没有意义的。
从面向未来的角度来看,WCF可能会受到更多的关注(补丁、增强等)。比起ASMX/PageMethods。然而,没有一种技术是完全面向未来的(您不会认为10年后我们还会继续编写WCF服务吧?;)。所以你真的需要衡量一下你自己(或者你的客户)对于ASMX未来可能的弃用的水平。
发布于 2010-06-19 11:35:33
PageMethods使用的技术与ASMX web服务使用的技术大致相同。这种技术是停滞不前的。预计它不会得到增强,并且只会修复关键的bug。对于生产就绪的代码片段来说,这不是一个很好的基础。
https://stackoverflow.com/questions/3074124
复制相似问题