MVC 项目的高效分层架构是什么?

What is the efficient layered architecture for MVC project?

我要开始一个具有以下架构的新项目:

  1. 实体(仅限客户等实体)- Class 图书馆
  2. BLL(客户的业务逻辑 - 模型)- Class 库
  3. DAL(SQL 从该层调用)- Class 库
  4. CommonUtilities(枚举,常用函数)- Class 库
  5. MVC Web 项目 - 有视图和控制器 - Web 项目

问题 1:使用这种架构是一种好的做法吗?或者我应该改进 还有更多吗?

问题 2:什么是 Web API 我是否也应该将它作为一个单独的层使用?

如果您有更好的代码可维护性架构,请告诉我。

Question 1: Is this a good practice to use this architecture? or Should I improve something more to it?

是的。它使软件的所有部分都松散耦合,这意味着您可以将一个层的一个实现替换为另一个实现,而无需大量重构代码。使用此架构,您可以轻松添加一个智能手机应用程序,该应用程序可重用 ASP.NET Web 应用程序现在使用的所有层。

Question 2: & what is Web API, Should I use it as a separate layer too?

这意味着您的 Web 应用程序使用 Web 服务层来公开您的所有应用程序功能:Web 应用程序通过像 REST 这样的 Web 服务协议与 Web API 层通信,Web API层然后使用业务逻辑层。所以这是一个额外的层。

如果您想允许 其他 开发人员使用您的业务逻辑,或者当您计划稍后制作额外的前端应用程序时,添加它可能会很有趣,例如智能手机,您知道出于某种原因您将无法在 .NET 中对其进行编程,这意味着您已经知道您将无法直接调用您的业务逻辑层。在那种情况下,您肯定需要介于两者之间的 Web 服务。

此外,如果中间没有 Web 服务层,则每次更改较低层之一的实现时都必须重新编译前端应用程序。但是,如果您的前端应用程序仅使用 Web 服务,则情况并非如此:您的应用程序不再使用 DLL,而只是通过 Internet 连接来回传递消息。

这并不意味着您每次都必须在应用程序和业务逻辑层之间创建一个 Web API 层。当您知道此应用程序将是您将为此用例构建的唯一前端,并且也不需要向其他开发人员提供 API 时,这就太过分了。如果您不确定,或者认为这些要求出现的可能性很小,请从简单的开始,不要 Web API 层。如果需要,您可以稍后添加该层。