如何构建一个新的ASP MVC应用程序?

时间:2014-12-07 17:50:21

标签: asp.net asp.net-mvc asp.net-web-api asp.net-mvc-5 asp.net-identity

我需要开始一个新的mvc项目,而且我一直都有关于asp身份的问题,永远都不知道该放在哪里!

我打算组织这样的解决方案:

  • ProjectWebUI - 具有asp身份框架的mvc应用程序(由带身份验证的Internet模板制作)
  • ProjectDataAccessLayer - 使用dapper作为数据库访问技术的存储库类
  • ProjectWebAPI - 网络服务

但是我有点困惑,在开始编码之前我需要更有经验的人的建议(因为到目前为止我的所有项目都只是一个有数据访问权限的项目):

  1. 在使用标准Entity Framework进行数据访问的WebUI项目中使用asp标识并在单独的程序集中使用dapper进行其他数据访问是不是一个好主意?
  2. 如果asp身份在WebUI项目中,我是否有一些问题需要接收对WebAPI项目的身份验证访问?

1 个答案:

答案 0 :(得分:2)

这就是我组织我最近的一个项目的方式:

  • Common - 这是解决方案中的核心项目。它包含所有域实体以及从ASP.NET Identity Framework继承自ApplicationUser类的IdentityUser类。通常,此类位于新的ASP.NET MVC项目模板中;我决定将它放入核心库,因为它代表了更高层和抽象级别可能需要的通用实体。因此,Common引用了Microsoft.AspNet.Identity.CoreMicrosoft.AspNet.Identity.EntityFramework个程序集。

  • DataAccess - 此项目引用Common库并包含Entity Franework DatabaseContext以及一些存储库。我使用Code First方法,我的DatabaseContext继承自IdentityDbContext<ApplicationUser>。所以它为我提供了一个很好的数据库结构,包含UsersRoles的表以及其他ASP.NET Identity的东西,以及代表我Common项目中的自定义业务实体的表,所以我可以轻松地将我的自定义实体与Identity对象连接。

  • WebApi - 这是使用RESTDataAccess个库的Common服务。所有授权和身份验证作业都在此处使用令牌身份验证完成。

  • Web - 这只是我REST服务的网络客户端。

所以,回答你的问题:如果它真的很小且易于管理,你可以将ASP.NET Identity类和Entity Framework数据库上下文放在一个项目中;否则,最好离开默认项目模板并为每个主要应用程序模块引入图层。