2010-06-16 58 views
5

我花了很長時間學習如何從RESTful服務中添加認證等角度來定製WCF;我建立了一些自定義服務主機,然後添加了使用IOC容器來實際創建服務實例等的能力等。用於XML/JSON REST API的MVC2或WCF?

我們有iPhone/iPad應用程序加上一些其他的gadgety類型的東西(技術術語!),現在使用這些(在i平臺上的XML,基於瀏覽器的JSON)以及我對性能和易於添加新操作等感到非常滿意。

我學會了DataContract序列化程序的所有弱點(和現在在孤立的情況下使用它們來讀/寫WCF以外的對象),並在那之後學習曲線陡峭,但現在我們擁有了它們,我對它們都很滿意。

現在我們有了一系列新的Web項目,爲此我跳過了使用MVC的機會 - 並且對此有了深刻的印象;模型綁定,特別是真的踢屁股。

我現在正在爲這些Web項目尋找類似的RESTful API(它們都將是類似的網站,但根據自定義需要,不同的品牌和業務邏輯的細微變化)。最初,我預計在WCF上所有這些工作都能夠很好地支持我們 - 但MVC有其自己的RESTful XML/JSON開發路徑,現在我陷入了兩者之間。

如果你正在編寫一個MVC站點,你會用WCF來實現它的REST API嗎?

我將拋出一個使用WCF的參數 - 這是正確編寫的,它可以作爲一個Windows服務獨立運行而不需要Web服務器。但是,這似乎是一個絕望的情況!

更新

我應該說,我已經使用MVC 2 & 3現在實現3個獨立的大REST服務,這是一起工作充滿了樂趣。我已經編寫了模型綁定器來包裝WCF的DataContractSerializer for XML,當然JSON支持也很好。我現在不會回去。

回答

5

我從來沒有使用WCF,但我目前使用MVC2來實現REST API。

大多數情況下它非常適合,但是存在一些差距,並且涉及到一點學習曲線。我需要使用MVCContrib以獲得更好的XML支持。我已經使用MVC期貨來支持將JSON對象發送到操作方法(請參閱:http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx)。我還需要爲此獲取源代碼並對其進行修改,以便它可以支持XML。

我聽說有一些REST框架位於.NET MVC之上,但我沒有機會嘗試它們。

如果你熟悉WCF並且它上次運行良好,那麼我會試着堅持你所知道的。

+1

是的,這是MVC支持方面的差距,讓我感到困擾;在WCF中我沒有發現任何差距,只是奇怪的行爲。但是能夠將API與該站點的MVC部分相同的狀態和對象模型進行集成將是一個真正的好處!感謝您的鏈接。 – 2010-06-16 09:47:02

+0

因爲鏈接而回答。我認爲如果可以的話,你和Darrel都建議使用MVC,所以我會這樣做。感謝你們兩位! – 2010-06-17 19:38:13

3

我已經使用WCF做了REST很長一段時間,我的建議是使用MVC。如果您只想處理XML和Json,並且您的URI空間相對簡單,那麼您可能可以使用WCF。但是,一旦你退出基本的東西,那麼你需要非常熟悉WCF來解決它的默認行爲。

+0

我當然會同意,爲了充分利用REST體驗,需要熟悉WCF。特別是我不喜歡的一件事(但直到遇到MVC時才被喜歡)是靜態路由 - 以URI模板字符串作爲屬性:路由表只是一個更好的解決方案。 – 2010-06-17 07:27:28

+0

@Andras據我所知,他們都在封面下使用相同的路由機制。唯一的區別就是他們填表的方式。隨着時間的推移,一些版本差異導致了不同的行爲,但它們都使用System.Web.Routing。 – 2010-06-17 12:36:17

+0

是的,對不起,你是對的;在我看來,MVC只是正確的 - 但是這兩個系統都是爲了解決不同的問題而設計的。我是WCF的粉絲(不是最初),爲了這個目的,我覺得爲了說再見而感到有點緊張!多麼悲傷! – 2010-06-17 19:36:53