我最近發現了一種使用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