MVC服务的最佳实践

时间:2014-03-19 08:38:32

标签: c# asp.net-mvc wcf design-patterns asp.net-web-api

我是MVC的新手并学习了这些概念。但作为一个实际的观点,作为一个初学者,几乎没有注意到。

MVC是一种演示模式。但是MVC还包含Controller和Model。这些是业务和数据逻辑。那么它是如何在演示文稿本身中迁移的。我的理解是对的吗?

如果我实现WCF服务/ Web Api的方法将如何?我阅读了文章和论坛的相关内容,但我没有清楚地了解它。

大多数人说web api是最好的组合,只是包含在控制器中。但那么该层如何作为演示和服务层分离?这里的服务层(Web api)专门用于MVC应用程序/ Web UI。一般都没有。

我使用WCF,如服务层作为一个应用程序,业务层和数据层作为类libariries。在这里,我可以在iis中托管服务并从任何地方访问。如何在MVC应用程序中使用此服务?简单地避免使用jquery实现控制器和模型以及简单的使用视图?

请使用WCF和Web API提供正确的apporach ..

2 个答案:

答案 0 :(得分:2)

您有几个问题,所以我会尝试回答所有问题。

  

MVC是一种演示模式。但是MVC还包含Controller和   模型。这些是业务和数据逻辑。那么它是如何迁移的   演示本身。我的理解是对的吗?

controller是表示层。它应该像协调器一样,不包含任何业务或持久性逻辑。 model当然可以有业务逻辑,但不能有任何持久性逻辑。持久性与基础架构有关,并不属于您的模型或控制器。

  

如果我实现WCF服务/ Web Api的方法将如何?我读   文章和论坛的主题,但我没有明确说明

您的服务可以与MVC项目分开,尽管在您的MVC项目中包含您的Web API是可以接受的。就个人而言,我认为它应该是分开的。请记住,您在MVC项目中阅读的有关服务的内容可能是指DDD(域驱动设计)意义上的本地服务或存储库。它的方式不同。

  

大多数人说网络api是最好的组合,只需包括在内   控制器。但是接下来如何将图层分离为演示文稿   服务层?这里的服务层(Web api)专门用于   仅限MVC应用程序/ Web UI。没有得到一般

WCF或Web API?根据您的需求和技能选择最佳的一个。无论哪种方式,我认为保持服务分离是最好的。同样,不要将DDD服务与自治服务层混淆。

  

我使用WCF之类的服务层作为一个应用程序和业务层   和数据层作为类libariries。在这里,我可以在iis中托管服务   从任何地方访问。如何在MVC中使用此服务   应用?简单地避免实现控制器和模型   使用jquery视图?

是的,您可以从查看的JQuery代码或控制器中调用该服务,这取决于您的需求。在您的MVC项目中创建一个可以联系您的服务和数据存储的本地服务可能更好。然后,让您的控制器使用此本地服务来满足其数据需求。

答案 1 :(得分:1)

在一个简单的应用程序中,我经常看到一个解决方案中的两个项目,一个用于Web前端的MVC项目和一个用于数据访问的类库,我们可以调用" core"。核心项目包含所有与ORM相关的类和实现接口的服务类,我们称之为处理业务逻辑的IService。

当请求进入MVC控制器时,控制器将调用IService以撤回所需的数据并将该信息传递给视图。在这种方法中,没有任何"模型"在您的MVC文件夹中,但正在使用ORM模型。对于更复杂的页面,您将创建一个MVC模型,以组合从ISservice返回的多个数据,并以对用户有意义的方式呈现它们。

在一个更大的项目中,包含IService的核心项目可能是1-WCF或Web API服务。这为您扩展应用程序提供了更大的灵活性,并允许您的网页直接向数据层发出ajax调用。

在这种情况下,当一个请求进入控制器时,它仍会调用IService,但该服务实际上是一个WCF或Web API服务。