2010-07-24 94 views
1

我最近發現了一種使用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的原因是什麼?有更好的可伸縮性或性能嗎?

+0

是的 - 當然 - 如果你只需要REST,你可以推出自己的。無論如何,我會使用WCF,因爲:如果您突然需要通過SOAP公開您的服務方法,例如使用tcp/ip的內部使用,或類似的東西?如果你自己推出了,你現在必須移動到WCF,或者你自己也滾動整個SOAP支持。 WCF只是給你很多選擇 - 大部分是通過配置 - 如果你需要它們的話。 – 2010-07-24 10:19:20

回答

4

你也可以使用Asp.Net MVC來實現REST非常簡單。

你沒有得到免費的這種方法是什麼:

  • 非HTTP綁定。
  • 支持多種消息格式。
  • 非IIS託管。
  • 控制過程激活。
  • 控制實例創建。
  • 對象池。
  • 消息排隊。
  • 交易。
  • 可擴展性和可靠性。
  • 在WCF之上構建的其他技術,如OData支持。

如果這些都不適用於您的方案 - 您不需要WCF。

+1

如果這些都不適合和「從不」將會 – 2010-07-24 09:00:06

0

答案是,2個不同的管道,但WCF管道是專門爲服務構建的,並且ASP.Net是爲通過HTTP呈現內容而構建的。兩者都有其優缺點。

如果您對ASP.net堆棧感到滿意,並且不必擔心標準等問題,那麼ASP.Net就可以。

但是,如果您想要兩全其美,請嘗試使用WCF Data Services,WCF的所有酷炫內置功能,而不用麻煩。目前,MVC沒有生成OData的視圖引擎。

相關問題