我最近发现了一种使用Global.asax实现RESTful服务的方法(通过处理Application_BeginRequest事件)。基本上,我认为在传统ASP.NET中实现RESTful Web服务是可能的(也是容易的),而不需要WCF。为什么我需要WCF来构建RESTful服务?
它需要约30行代码来确定你想调用哪个方法(来自URL),并将它的参数(从查询字符串,通过反射)传递给它,并使用XmlSerializer对结果进行序列化。这一切都会导致可以通过HTTP GET请求访问的Web服务,并返回标准的XML数据。
因此,有鉴于此,是否有任何理由在创建仅通过HTTP GET请求调用的RESTful Web服务时使用WCF? WCF引入了大量的开销和限制,而上面描述的Global.asax方法更容易实现,定制和部署。
注 - JSON端点也可以在不使用WCF的情况下通过使用JavaScriptSerializer来实现。
另外 - HTTP POST请求可以用类似的方式由Global.asax来处理。
所以最后,在这种情况下使用WCF的原因是什么?有更好的可伸缩性或性能吗?
是的 - 当然 - 如果你只需要REST,你可以推出自己的。无论如何,我会使用WCF,因为:如果您突然需要通过SOAP公开您的服务方法,例如使用tcp/ip的内部使用,或类似的东西?如果你自己推出了,你现在必须移动到WCF,或者你自己也滚动整个SOAP支持。 WCF只是给你很多选择 - 大部分是通过配置 - 如果你需要它们的话。 – 2010-07-24 10:19:20