2008-09-23 96 views
48

向我的ASP.NET MVC項目添加Web服務是否打破了MVC的整個概念?ASP.NET MVC和Web服務

Web服務(WCF)依賴於我的MVC項目中的Model層與後端進行通信(因此它在我看來需要成爲MVC解決方案的一部分)。

我應該將此添加到Controller還是Model層?

回答

27

這聽起來像你應該將你的模型拆分成它自己的程序集並從你的MVC應用程序和WCF應用程序中引用它。

  • YourApp.Data - 共享的模型和數據訪問可能
  • YourApp.Web - 如果你想分享在您的網絡應用更加
  • YourApp.Web.Mvc
  • YourApp.Web .WebService

如果你想做WebServices MVC風格,也許你應該使用MVC來構建你自己的REST應用程序。

+0

難道你不會複製服務中的控制器邏輯嗎?並且通過使用模型不會節省任何東西,因爲您最終會編寫兩次控制器代碼。 – 2009-04-09 03:25:49

19

是否有一個特定的原因需要將Web服務添加到您的MVC應用程序?除非有特定的原因,否則應該像使用REST風格的Web服務一樣以REST風格使用您的控制器。

退房此帖來自羅布·康納利的詳細資料: ASP.Net MVC: Using RESTful architecture

+0

這是相當古老的,但你可能有我的問題的答案。爲了動態加載一個下拉列表,其中的值會在另一個下拉列表發生變化時動態加載,我需要一個Web服務。這是我如何在webForms中完成的。這是如何在MVC中完成的? – Erix 2012-07-26 22:29:10

+2

鏈接被破壞,我無法找到更新的鏈接。該內容可在Wayback Machine上獲得:http://web.archive.org/web/20130119131317/http://wekeroad.com/2007/12/06/aspnet-mvc-using-restful-architecture – 2013-07-23 15:55:42

0

我對我的應用程序添加Web服務,而且運作良好。我不相信它違反了MVC,因爲它是你模型的另一個接口。 MVC不適合Web服務,因爲Web服務沒有視圖。

+4

Web服務可以使用MVC以及網站或RSS源創建。實際上,這是MVC概念的強項之一 - 相同的控制器操作可以將數據傳遞給任何類型的視圖 - Web服務輸出的內容使其成爲視圖。 :) – hangy 2008-10-26 00:39:13

2

我不認爲將模型分成它自己的程序集對於您是否使用MVC有任何影響,您仍然有模型。它在哪裏是無關緊要的?

11

將Model分離到自己的項目中並沒有打破「MVC」模式。首先,這只是一種模式。 MVC模式的目的是在您的數據,數據處理程序和演示者之間以及您在它們之間進行交互的方式之間清晰地劃分界限。做到這一點的最好辦法是勒布如何建議:

  • YourApp.Data
  • YourApp.Web.Mvc
  • YourApp.Web.WebService

東西可能會幫助你的是Rob Conery將MVC Storefront放在一起。去觀看的視頻在這裏:

MVC Storefront Video Series

如果你想看看在瀏覽器中實際的代碼來快速查看他做到了,去這裏: MVC Storefront Codeplex Code Browser

1

我有一個去做這件事。

見我的結果在my blog

PS:我不相信這將打破MVC的概念,只要你認爲Web服務是一個資源庫的模式,因爲所有的網絡服務也正在恢復一個XML轉儲。

0

將Web服務和數據庫視爲一體。在這個比喻中,我認爲將Web服務嵌入到你放置數據庫邏輯的地方是有意義的。