ASP.NET - 单一解决方案,MVC和WebApi项目,每个单独的模型?

时间:2013-12-19 19:02:57

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

我们已经有一个包含多个MVC Web项目的解决方案,现在正在添加一个面向客户端的WebApi项目。

API将是通过任何网络项目提供的更为缩小的版本(虽然随着时间的推移它可能会扩展得更多),所以我们来到一个决策点,如何处理模型。

跨不同项目处理模型的最佳做法是什么?

据我所知,WebApi项目中的模型将使用某些对MVC Web应用程序毫无意义的属性属性。而且作为一个例子,Display属性对WebApi毫无意义,但在View中非常有用。

这让我相信我应该为WebApi创建一组单独的模型,但也想知道我是否遗漏了某些东西。

我知道这可能是一个可能导致一系列意见的问题,因此我主要关注的是行业最佳实践。

2 个答案:

答案 0 :(得分:6)

在我的Web API和MVC Web应用程序的解决方案中,我有以下结构

模型:我的实体/业务对象。这些是由我的数据库中的Entity框架创建的。这几乎与我的数据库结构相同。我的Repositary方法(用于数据访问)返回单个实例/此类实例的集合。我的数据访问项目是一个单独的类库,已在其他地方引用,如我的web api项目等。

Web API ViewModels :特定于Web API接口/操作方法的Viewmodels(POCO类)。

MVC Web应用程序ViewModels :特定于我的剃刀视图的Viewmodels(POCO类)。 我甚至从Web API Viewmodels 继承了其中的一些,并根据需要添加了其他属性。

答案 1 :(得分:1)

我为DTO使用了一个单独的项目,因此需要使用它们的项目不会遇到循环引用的问题。

我希望WebApi项目将您的模型映射到DTO中。如果您的MVC项目正在使用WebAPI输出,则只需要引用DTO项目。这使您不必直接参考WebAPI项目。