简单场景。用户/订阅订阅有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"订阅"。