导致问题的服务分离问题
Separation of Services issue causing problems
我有一个结构如下的项目:
主要休息
主要服务
第二次休息
二次服务
第三次休息
第三项服务
第四个....
数据层
等等
在依赖方面,所有Rest层都可以访问Main Services和它们自己的Service,例如Second Rest可以访问Second和Main Services但不能访问Third,依此类推。
我现在面临的问题是越来越多的第二服务需要访问第三服务等中的部分代码。
人们很想将该代码从次要服务移至主要服务 - 但这对我来说似乎不正确,并且让我质疑这种分离是否有用。
我也认为将所有代码移动到一个大服务中并让所有内容都从那里访问是不对的。
我确实想到了一个项目间服务层,它可以在服务层之间提供 link,但实际上我需要为每个服务提供其中一个,以避免循环引用。
最后,为了使事情更加复杂,我不得不考虑依赖注入和项目之间接口的不同实现。
有没有人遇到过这种问题并有好的解决方案?
重构整个项目不是一种选择,因为我必须考虑业务需求,而且这样做在财务上没有意义。
有过重构一大堆烂泥的经历,什么都纠缠不清。我发现最有帮助的一件事是也反转 functions / methods 的依赖关系。如果 Rest2
调用 Service2.Foo
需要来自 Service1
的数据,那么 Rest2
的工作就是带来数据。
为了进一步加强这种方法,抵制编写和使用各种实用程序和便利函数的诱惑,这些函数会为您执行跨服务调用,或者至少让这些函数对每个模块都是私有的。
这在某种程度上与 CQS 的想法一致,甚至可以进一步推断:每个职能要么独立完成某些工作,要么协调整个团队(根据需要)。
这种方法的明显缺点是增加了 "flattened" 顶级函数的大小,但在我的例子中,它比纠缠问题小得多。
理想情况下,这种方法应该产生按层次结构组织的模块集,其中不允许任何模块调用它的兄弟或更高层。非循环数据流更容易推理!
我有一个结构如下的项目:
主要休息
主要服务
第二次休息
二次服务
第三次休息
第三项服务
第四个....
数据层
等等
在依赖方面,所有Rest层都可以访问Main Services和它们自己的Service,例如Second Rest可以访问Second和Main Services但不能访问Third,依此类推。
我现在面临的问题是越来越多的第二服务需要访问第三服务等中的部分代码。
人们很想将该代码从次要服务移至主要服务 - 但这对我来说似乎不正确,并且让我质疑这种分离是否有用。
我也认为将所有代码移动到一个大服务中并让所有内容都从那里访问是不对的。
我确实想到了一个项目间服务层,它可以在服务层之间提供 link,但实际上我需要为每个服务提供其中一个,以避免循环引用。
最后,为了使事情更加复杂,我不得不考虑依赖注入和项目之间接口的不同实现。
有没有人遇到过这种问题并有好的解决方案?
重构整个项目不是一种选择,因为我必须考虑业务需求,而且这样做在财务上没有意义。
有过重构一大堆烂泥的经历,什么都纠缠不清。我发现最有帮助的一件事是也反转 functions / methods 的依赖关系。如果 Rest2
调用 Service2.Foo
需要来自 Service1
的数据,那么 Rest2
的工作就是带来数据。
为了进一步加强这种方法,抵制编写和使用各种实用程序和便利函数的诱惑,这些函数会为您执行跨服务调用,或者至少让这些函数对每个模块都是私有的。
这在某种程度上与 CQS 的想法一致,甚至可以进一步推断:每个职能要么独立完成某些工作,要么协调整个团队(根据需要)。
这种方法的明显缺点是增加了 "flattened" 顶级函数的大小,但在我的例子中,它比纠缠问题小得多。
理想情况下,这种方法应该产生按层次结构组织的模块集,其中不允许任何模块调用它的兄弟或更高层。非循环数据流更容易推理!