在.net中设计用于Web API的相关业务实体的最佳方法是什么?

本文关键字:实体 业务 最佳 方法 是什么 用于 API Web net | 更新日期: 2023-09-27 18:05:37

我正试图在。net中像下面这样设计业务实体,这将通过Web API/oData暴露。

业务实体1:"车辆",其属性如下:

  • 车辆id字符串
  • ModelId字符串

业务实体2:"模型",其属性如下:

  • ModelId字符串
  • ModelDescription字符串

现在,如果有人使用我的Web API只获取车辆信息,并希望显示模型描述,那么他们需要进行2次HTTP调用,这将导致性能下降,特别是在慢速网络中。在这种情况下,我想知道什么是加载&将通过Web API提供最佳性能的嵌套业务实体建模?

我应该建模我的车辆类如下,它真的是一个很好的实践,为一个REST/Web API设计?对于下面的方法,由于包含实体,实体似乎也变得太重了。请建议。

业务实体1:"车辆",其属性如下:

  • 车辆id字符串
  • <
  • ModelId模型/gh>

在.net中设计用于Web API的相关业务实体的最佳方法是什么?

这完全取决于什么在使用你的API,以及它如何识别和维持一对多关系。编写您的API,以便您的第一个消费者可以以高性能的方式调用它,然后再考虑调整它。

例如,在使用Ember数据的Ember.js应用程序中,您可以选择返回子id,或者您可以将整个子id作为父属性嵌入,并且它将作为单个模型在客户端上被反序列化和跟踪。您是否想要这样做或其他完全取决于您的应用程序流。我知道Ember Data不是OData,但概念是一样的。

如果不考虑客户端和服务器端,我不认为有一个好的"这样做"的答案。

我可能会将VehicleModel创建为

public class Vehicle
{
    public string Id { get; set; }
    public string ModelId { get; set; }
    public Model Model { get; set; }
}
public class Model 
{
    public string Id { get; set; }
    public string Description { get; set; }
}

当您的API客户端请求车辆时,如果需要,我会填充Model属性,如果不需要此信息,我会将其保留为null

这样,如果你只需要车辆数据,你就可以灵活地不加载模型信息,而在需要车辆和模型的情况下,你只需要做一个API调用。对于带有外键和任何ORM框架的数据库,

也可以很好地工作。