【问题标题】:How to structure a new ASP MVC app?如何构建一个新的 ASP MVC 应用程序?
【发布时间】:2015-02-05 09:17:30
【问题描述】:

我需要开始一个新的 mvc 项目,但我总是遇到关于 asp 身份的问题,不知道该放在哪里!

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

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

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

  1. 在 WebUI 项目中使用标准实体框架进行数据访问并在单独的程序集中使用 dapper 进行其他数据访问的 asp 标识是个好主意吗?
  2. 如果 asp 身份在 WebUI 项目中,我在接收对 WebAPI 项目的身份验证访问时会遇到一些问题吗?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    • WebApi — 这是一个使用 DataAccess 和 Common 库的 REST 服务。所有的授权和身份验证工作都在这里使用令牌身份验证完成。

    • Web — 这只是我的 REST 服务的 Web 客户端。

    所以,回答您的问题:如果 ASP.NET 标识类和实体框架数据库上下文非常小且易于管理,则可以将其保存在单个项目中;否则,最好放弃默认的项目模板并为每个主要应用程序模块引入层。

    【讨论】:

    • 所以您没有更改 AccountController 内部的任何内容?我问这个是因为控制器直接与数据库对话,是否有真正的理由将每个数据访问从那里移动到单独的程序集 (DAL)?
    • @1110 是的,我将AccountController 更改为使用来自DataAccess 项目的DatabaseContext。如果您的项目不是非常小,或者您想为您的 WebApi 实现其他客户端,则绝对应该将数据访问逻辑从那里移到单独的程序集中。
    • 所以这意味着我应该将登录、注册和所有其他与用户相关的功能从帐户控制器移到 dal?还是只是 DbContext?
    • 仅将DbContext 移动到数据访问层。要在AccountController 中实现注册/登录功能,请使用ApplicationUserManager,它(间接)依赖于DbContext。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2015-12-28
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多