2012-02-29 199 views
25

我將要工作的,涉及到多種元素的項目:WCF服務或Web API

  • ASP.NET MVC網站
  • C#控制檯應用程序
  • iPhone應用程序

爲了讓所有這些單獨的應用程序與數據庫交談,我的直接想法是使用WCF服務。

不過,我現在需要的API添加到站點允許第三方選擇,從他們自己的應用程序中插入和更新記錄。

在我的腦海裏,我只想創建我的WCF服務的單獨RESTful服務端點這將使用身份驗證會被鎖定,只會給訪問某些方法。

不過,我一直在今天閱讀有關MVC 4在Web API功能,其目的是要成爲RESTful API中最新的東西?

我應該沿着使用Web API的路線走嗎?或者因爲我的其他應用程序需要Web服務,我應該堅持使用WCF服務嗎?

+0

的[VS WCF的ASP.NET Web API(http://stackoverflow.com/questions/9348639/wcf-vs-asp-net-web-api) – nawfal 2014-10-29 23:00:11

回答

16

如果您打算進行RESTful開發,那麼您肯定會想要使用ASP.Net Web Api(最初名爲WCF Web Api,並且其目標是創建「使REST成爲.NET中的頭等公民」

另一個要考慮的是,WCF REST入門套件是no longer supported

注意,使用Web API並不意味着你必須使用ASP.Net MVC或IIS甚至,因爲它可以self hosted

爲了處理這是非CRUD在本質上,我建議谷歌搜索業務「REST非CRUD」。我發現這個博客文章RESTful URLs for non-CRUD operations(特別是有趣的評論)。如果您決定需要RPC調用,那麼可能需要使用WCF來完成。這就是說,因爲WCF REST被殺死了,我不知道最好的解決方案是什麼。兩者都可能是最好的答案,但同時它不一定是一個好答案。

另一種方法是一個WCF OData服務,但我不知道這會從iPhone的任何支持。

最後一點做(即可以在將來被刪除,因爲這是對時間敏感)

微軟已經提供了一個去住執照,這意味着它是由微軟和您的支持不應該公測在升級到文件RTM時沒有任何問題。

+0

感謝您的評論。當然,因爲我也會爲我的MVC網站使用服務/ API,我不希望整個服務/ API是RESTful? Web API有可能嗎?我知道一個WCF服務,你可以爲RESTful – 2012-03-01 10:23:33

+0

添加額外的信息發佈。 – 2012-03-01 15:49:46

+0

我不完全瞭解您的其他信息。解決方案是使用我可以從我的MVC網站引用的WCF服務。然後,我可以使用Web API(具有身份驗證),該API還與WCF服務通信以獲取數據? – 2012-03-01 17:25:28

6

Service Stack也看起來像一個選項。

演示,概述,示例是available here

+2

+1可能重複的提服務堆棧,我從來沒有聽說過。然而,縱觀他們的框架,我的第一印象是,他們爲客戶設定的「無代碼」目標並不完全準確。如果您無法訪問服務DTO,那麼Code-gen(顯然是手動的)仍然是必需的,這對於公共API來說很可能是一種場景。儘管如此,框架看起來很有希望,所以我一定會研究它。感謝您的鏈接! – Randolpho 2012-02-29 16:19:24

+0

不能沒有代碼生成,因爲您可以重複使用與您定義Web服務相同的DTO。因此,您可以獲得使用快速,可版本化的端到端序列化的類型化,簡潔的通用服務客戶端。即使是C#異常也是習慣用法的,並輸入https://github.com/ServiceStack/ServiceStack/wiki/Validation – mythz 2012-03-01 05:46:09

+0

@mythz以及如果您無法訪問定義DTO的.DLL,該怎麼辦?這是公衆可訪問的Web服務的常見情況。 – Randolpho 2012-03-02 03:56:07

4

這裏沒有正確的答案。您當然可以很好地使用WCF RESTful服務。或者你可以使用ASP.NET MVC。兩者都是完全有效的,都有優點和缺點。

最終,我建議你去任何最能維護你的感覺。

我想指出,MVC 4是處於測試階段,所以,要當心錯誤和不走活,直到它完成測試。

1

我會inlclined看看什麼對你要使用的所有平臺上最好的支持,我懷疑iPhone應用程序最終可能會駕駛你的選擇。

如果是純.NET我還是會傾向於toweards瘦SOAP服務 - 所以不考慮冷卻這些天,但它通常會做你的需要在大多數平臺上,而無需滾動定製的解決方案。

編輯

的ASP.NET Web API意味着.NET現在提供了一個很大的框架,用於開發一個RESTful API,我修改我回答說,我現在會朝着這個瘦 - 進步是偉大的!

1

既然你要創建一個ASP.NET MVC的網站,它會因爲編程模型非常相似,這些解決方案彼此或多或少的集成是相當舒適的使用的ASP.NET Web API也。

0

我有同樣的問題。

在MSDN網站, http://msdn.microsoft.com/en-us/library/jj823172(v=vs.110).aspx

發現了一個視頻教程,他們表示,對於機cosumption像iPhone或JSON或XML的Web應用程序客戶端,Web API被推薦的選項。它圍繞視頻的最後部分。

儘管對於更復雜的機器對機器通信WCF是prefereable。

http://channel9.msdn.com/Series/Building-Web-Apps-with-ASP-NET-Jump-Start/Building-Web-Apps-with-ASPNET-Jump-Start-04-Building-a-Service-Layer-with-ASPNET-Web-API

下面是從他們的介紹的截圖。

enter image description here