【问题标题】:Dynamic web service design for multi-customer systems多客户系统的动态 Web 服务设计
【发布时间】:2016-02-21 10:33:36
【问题描述】:

我正在处理一个项目,我需要重构我的 Web 服务,因为它们将被不同的客户使用。问题是这些不同的客户可能希望根据他们的需要发送或接收一些自定义数据。我会尝试用一个例子来解释它。

假设我们为客户提供两种网络服务,

  1. WS_GetUsers |输入:无 |输出:{UserName, IsActive, Name, Surname} 列表
  2. WS_GetUserInfo |输入:用户名 |用户名、IsActive、姓名、姓氏

我们有两个客户。 Cust1Cust2 使用相同的网络服务。但是 Cust1 希望我们更改我的 WS_GetUsers 服务。因为他们只想查看活跃用户(其中​​ IsActive=1)。

所以,我想继续为这两个客户提供两种服务。但我不想更改服务的输入/输出参数。因为Cust2不想改变任何关于服务的事情,所以我不应该打扰他们。

同时,Cust2 意识到他们需要另一个信息,LastLoginDateTime,我们不会将其存储在我们的数据库中。所以,假设我们做了一些神奇的工作并开始存储这些信息。但是这里发生了同样的问题,现在我需要将该信息作为两个服务的响应发送。但 Cust1 不应受到该更改的影响。

目前,我们使用键值对数组作为输入和输出来解决这个问题。但我想知道是否有关于用于多机构/客户的网络服务的方法或方法(或你们的任何建议)。

注意:这个问题都是关于服务 i/o 参数的。根据输入改变业务流程现在不是问题。

【问题讨论】:

    标签: c# xml web-services


    【解决方案1】:

    我认为您的案例非常适合 OData Web 服务。您可以创建端点并返回 IQueryable,客户端将能够发送查询、扩展响应等。

    http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/create-an-odata-v4-endpoint

    http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/using-select-expand-and-value

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-07
      • 1970-01-01
      • 2013-11-23
      • 2017-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多