在.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>
这完全取决于什么在使用你的API,以及它如何识别和维持一对多关系。编写您的API,以便您的第一个消费者可以以高性能的方式调用它,然后再考虑调整它。
例如,在使用Ember数据的Ember.js应用程序中,您可以选择返回子id,或者您可以将整个子id作为父属性嵌入,并且它将作为单个模型在客户端上被反序列化和跟踪。您是否想要这样做或其他完全取决于您的应用程序流。我知道Ember Data不是OData,但概念是一样的。
如果不考虑客户端和服务器端,我不认为有一个好的"这样做"的答案。
我可能会将Vehicle
和Model
创建为
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框架的数据库,