ASP.NET MVC和Web服务

向我的ASP.NET MVC项目添加Web服务是否打破了MVC的整个概念?

该Web服务(WCF)依赖于我的MVC项目中的模型层与后端进行通信(所以它看起来像它需要成为MVC解决scheme的一部分)。

我应该添加到控制器或模型层?

这听起来像你应该把你的模型拆分成自己的程序集,并从MVC应用程序和WCF应用程序引用它。

  • YourApp.Data – 可能共享模型和数据访问
  • YourApp.Web – 如果你想分享更多的networking应用程序
  • YourApp.Web.Mvc
  • YourApp.Web.WebService

如果你想做WebServices MVC风格,也许你应该使用MVC来构build你自己的REST应用程序。

是否有一个特定的原因,你需要添加到您的MVC应用程序的Web服务? 除非有特定的原因,否则您应该像使用REST风格的Web服务一样以REST风格使用您的控制器。

请参阅Rob Connery的这篇文章以获取更多信息: ASP.Net MVC:使用RESTful架构

将模型分成自己的项目并不是打破“MVC”模式。 首先,这只是一个模式。 MVC模式的目的是在数据,数据处理程序和演示程序之间以及在它们之间进行交互的方式之间清晰地划分。 最好的办法是Sebbuild议:

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

一些可能会帮助你的是Rob Coneryjoin的MVC店面。 在这里观看video:

MVC店面video系列

如果您想查看浏览器中的实际代码,以便快速了解他是如何做到的,请转到此处: MVC Storefront Codeplex代码浏览器

我不认为将模型分成它自己的程序集对于您是否使用MVC有任何影响,您仍然有一个模型。 它在哪里是无关紧要的?

我已经做了这个。

在我的博客上看到我的结果

ps:我不认为这会打破MVC的概念,只要你认为一个Web服务是一个存储库的模型,因为所有的Web服务都是返回一个XML转储。

我已经添加了Web服务到我的应用程序,它运作良好。 我不相信它违反MVC,因为它是你的模型的替代接口。 MVC不适合Web服务,因为Web服务没有视图。

将Web服务和数据库视为一个整体。 在这个比喻下,我认为把你的Web服务embedded到你放置数据库逻辑的地方是有意义的。