【问题标题】:ASP.NET Web API 2 ViewModels?ASP.NET Web API 2 视图模型?
【发布时间】:2017-08-19 13:45:30
【问题描述】:

我是 ASP.NET Web API 的新手(完全是 API)。我的问题是在 ASP.NET MVC 中是否有类似于 ViewModels 的东西(我猜在 API 中它们不会被称为 ViewModels,即使存在这样的东西),还是我必须使用我的 DataAccess 层中的数据库模型?

【问题讨论】:

    标签: asp.net asp.net-web-api asp.net-web-api2


    【解决方案1】:

    我的问题是是否有类似于 ViewModels 的东西

    是的,它与 MVC 中的相同。名称ViewModels 无关紧要,因为它被许多名称称为DataModelModelDTO。但本质上它是一个Data Transfer Object (DTO),它没有或保持任何状态。

    同样,您应该为相应的实体拥有单独的视图模型;并且应该在模型对象中包含您的数据验证逻辑。这还为您的实际实体添加了一个抽象层,以了解您希望将哪些特定数据传输给您的客户

    【讨论】:

    • 好点,可能是 OP 正在寻找的答案。 ViewModel 实际上只是向用户公开的数据片段的另一个名称。
    • @john,如前所述,这并不重要
    【解决方案2】:

    您当然可以在 WebAPI 中拥有视图模型。您可以从您的 API 方法中返回您喜欢的任何对象。

    事实上,我建议专门在 API 场景中返回视图模型,因为您不想同时序列化任何可能附加到数据访问对象的额外属性,尤其是框架生成的属性。为您的 API 响应提供简单的 POCO 可以让您完全控制客户端收到的结果数据。

    【讨论】:

    • @john:如果你愿意,当然可以。我通常对术语“视图模型”感到满意,因为虽然结果不是 ASP.NET MVC 框架类定义中的“视图”,但它是模式定义中的“视图”,因为它最终是得到的由应用程序暴露给消费者。最终,术语取决于您和您的团队/域/等。只要说清楚和一致,你就很好。
    【解决方案3】:

    您在此处做出的选择取决于您的设计和相对应用程序的复杂性。在域模型和业务模型之间进行映射的开发成本很小。但是,出于以下原因,我确实建议为您的 api 层创建视图模型:

    • 它为您的 API 定义了一个明确的合同
    • 如果您的域模型发生变化,它不会影响您的用户
    • 您可以在不影响域层的情况下对 API 进行版本控制

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 2015-07-03
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多