【问题标题】:ASP.NET MVC with Web API Architecture具有 Web API 架构的 ASP.NET MVC
【发布时间】:2015-01-28 18:16:30
【问题描述】:

大师们, 我是 MVC 的新手。我正在为订单管理系统开发一个 Web 应用程序。我设计了架构,将以下项目作为我的解决方案的一部分:

  1. 客户端(表示层,MVC)
  2. CrossCuttingServices(框架组件,如日志记录、缓存、数据、类库)
  3. 数据(用于 DB 交互的实体框架层,C# 类库)
  4. 服务(Presentation、Web API 使用的服务层)

第一季度。我的问题是,我应该在哪里创建我的实体类或模型,它们将用于从演示到服务到数据?是在 Presentation 模型中还是在 Web API 服务层中还是作为一个单独的项目(C# 库)?

第二季度。另外,让我知道是否有任何通用实现可以从 Presentation 控制器调用 WebAPI 服务。

【问题讨论】:

    标签: asp.net-mvc asp.net-web-api architecture


    【解决方案1】:

    Q1:您将在整个解决方案中使用相同的实体,因此我建议将它们存储在您的 Data 项目中,因为它将所有与数据库相关的内容与其余逻辑分开捆绑在一起。

    Q2:您始终可以向 API 发送请求以获取结果数据,这基本上就是它们的用途。

    【讨论】:

    • 在这种情况下,对于 Q1,我需要在 MVC 表示层中引用 DAta 项目。这不是糟糕的设计
    • 您仍然需要参考该项目,但它的设计还不错。在每个项目中,您都可以更多地关注该任务的内容。此外,在表格快速增长的情况下,您最终不会弄乱主项目。
    【解决方案2】:

    我决定选择建筑,比如 1. JS Enabled Presentation (webform or only HTML + JS) 2. Web API(控制器调用数据服务(EF+Repo)作为我的数据服务层,它可以支持我的基于浏览器的前端和设备

    让我知道相同的任何缺点

    【讨论】:

      【解决方案3】:

      我们也有类似的问题,领域模型非常复杂。因此我们选择了

      • 在单独的 DomainModel DLL 中定义的数据实体模型
      • 从数据模型映射到 UI 模型的 UI 映射器类
      • 从数据模型映射到 WebAPI 模型的 WebAPI 映射器类

      我们为什么想要这个的例子?

      • UI 有分销商目录项的概念,这是目录项的特化
      • WebAPI 使用基本的 catalogueitem 数据模型,但随后根据特定资源返回不同的数据[例如,搜索 URL 返回项目 ID 和基本信息;项目查找 URL 会返回目录项目的完整详细信息。

      由于上述原因,我们的 DomainModel 中的目录项是完整的对象,然后不同的“客户”按照他们认为合适的方式进行映射。
      [这与上面Filip Stankovski所说的一致]

      【讨论】:

        猜你喜欢
        • 2015-05-26
        • 1970-01-01
        • 2011-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-14
        • 1970-01-01
        相关资源
        最近更新 更多