【问题标题】:What is the efficient layered architecture for MVC project? [closed]MVC 项目的高效分层架构是什么? [关闭]
【发布时间】:2018-02-24 13:36:35
【问题描述】:

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

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

问题 1:使用这种架构是一种好习惯吗?还是我应该改进 更多的东西吗?

问题 2:什么是 Web API,我也应该将它用作单独的层吗?

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

【问题讨论】:

    标签: c# .net asp.net-mvc n-tier-architecture maintainability


    【解决方案1】:

    问题 1:使用这种架构是一种好习惯吗?还是我应该对其进行更多改进?

    是的。它使您的软件的所有部分都松散耦合,这意味着您可以将一个层的实现与另一个实现交换,而不必费力地重构您的代码。通过这种架构,您可以轻松添加一个智能手机应用程序,该应用程序重用 ASP.NET Web 应用程序现在使用的所有层。

    问题 2:& 什么是 Web API,我也应该将它用作单独的层吗?

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

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

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

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

    【讨论】:

    • 所以目前我不需要它。多谢。你知道为什么我在这里得到-2吗?我很惊讶。
    • 不客气。你被否决了,因为很多 Stackoverflow 成员在他们认为问题会吸引大量基于意见而不是事实的答案时标记问题。我对您的问题的回答可以被视为一种观点:其他人可能已经回答了您的第一个问题:“不。如果您正在开发一个简单的项目,那么只需将您的所有代码都写在您的 MVC 控制器中。”。或者甚至其他人可能会说他认为您不应该使用您建议的层,而只是一个应用程序层和一个辅助类层。以此类推。
    • @KaviYarasan:不过,我个人确实认为您发布了一个很好的问题,对很多人都有用。我还认为,如果一个问题会吸引固执己见的答案,那仍然可以,有明确的推理,等等。不过,StackOverflow 表示它不想成为一个论坛,并且有足够的论坛。查看辩论:meta.stackoverflow.com/questions/278500/…
    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 2015-04-02
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    相关资源
    最近更新 更多