c# - "Flexible Webservice"的策略

标签 c# json web-services

我正在为许多不同的客户构建网络服务以连接到汽车零部件数据库。该零件具有多种特性。不同的客户将需要不同的属性子集来“完成他们的任务”。

所有客户至少需要一个 ID、零件编号和姓名。有些可能需要价格,有些可能需要图像的 URL,等等。下一个客户端可能是几年后编写的,并且需要不同的属性子集。我不想发送超出他们需要的内容。

我一直在为每个需求构建具有属性子集的单独“PartDTO”,并将它们作为单独的 Web 服务方法提供,以返回相同的部件列表,但每个部件具有不同的属性。我不想为每个客户端构建此内容并为 DTO 和方法提供逻辑名称,而是希望有一种方法让客户端指定他们想要的内容。我正在返回 JSON,因此我正在考虑客户端向我传递一个 JSON 对象,列出他们在结果集中想要的属性:

ret = { ImageUrl: true, RetailPrice: true, ... }

首先,这有意义吗?

其次,我不想在这里失去的是返回 IEnumerable < DTO > 并让 JSON 工具对其进行序列化的良好语法。我当然可以构建一个“JSON”字符串并返回它,但这看起来很笨拙。

建议? C#“动态”?

最佳答案

这是 Entity-Attribute-Value model 的一个非常好的候选者。 。基本上你有一个包含 ID、名称、值的表,并且允许每个客户/方面存储他们想要的任何内容...然后当他们查询时,你返回他们的名称-值对并让他们随意使用它们。

优点: super 灵活。适合强大的模式增加大量复杂性与值(value)的情况。多个客户端的单一端点。

缺点:通常不喜欢的模式,很难有效地选择,也很难建立索引。但是,如果您所做的只是存储并返回名称-值的集合,那么应该没问题。

关于c# - "Flexible Webservice"的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20618342/

相关文章:

c# - 部署为 Windows 服务时,不会读取 asp.net Core 2 Web API appsetting.json 值

c# - 如何在 javascript asp.net c# 中检查日期和时间?

c# - 您将如何实现此属性映射到可序列化类对象的一般情况?

java - 将嵌套 JSON 对象解码为通用 Java 对象

python - 将 Python Flask 应用程序拆分为多个文件

Android:将身份验证 token 存储在共享首选项中是个好主意吗?

c# - sql异常,缺少参数化查询

php - 如何在 Slim 中访问 POST 请求的 JSON 请求体?

php - 如何在 Web 应用程序中实现 cron 作业逻辑?

javascript - 将 JSON 放入表行中