处理Web服务中常见实体的最佳方法是什么



简单场景。用户/订阅订阅有0-N个用户,反之亦然。

用户服务:

Users/GetUserSubscriptions(userId) : List<Subscriptions>
Users/GetUsers() : List<Users>

订阅服务:

Subscriptions/GetSubscriptionsUser(subscriptionId) : List<Users>
Subscriptions/GetSubscriptions() : List<Subscriptions>

当将这些服务引用添加到项目中时,例如SubscriptionService.Subscriptions和UserService.Subscribes-这同样适用于用户

但用户是常见的实体。最好的方法是什么?

直觉上,我想要同一个班,但也许这会过于复杂?

如果我把它变成一种类型,它将如何实现?

当您开始设计这个应用程序时,您显然觉得有必要将用户和订阅划分为两个不同的服务。你不必这么做。你本可以让订阅成为用户的财产,反之亦然,但你两者都没有;你把它们分开。

导致你做出这个设计选择的原因可能是正确的——你希望能够将你的系统视为由不同的服务组成,并能够在不影响订阅的情况下对用户进行更改。这些都是好事。

但是,您通过设计服务操作的方式阻止了这种情况的发生。您有属于一个域实体的操作返回另一个实体。一旦你做到了这一点,你实际上就是在撤销你最初为拆分它们所做的所有工作。

我建议重新实现您的服务操作,如下所示:

Users/GetUsers() : List<Users>
Users/GetUsersBySubscriptionId(int subscriptionId) : List<Users>
Subscriptions/GetSubscriptions() : List<Subscriptions>
Subscriptions/GetSubscriptionsByUserId(int userId) : List<Subscriptions>

这样,"用户"服务将只返回用户,"订阅"服务将仅返回订阅。这样,这些操作的使用者还可以分别处理"用户"one_answers"订阅"。

相关内容

  • 没有找到相关文章