在不同的选项之间进行权衡是一个棘手的问题,因为它们不一定是相互排斥的,但这里有一些关于你提到的一些观点的开始,我也知道这不一定能解决你的 Service Fabric 问题,但我我希望它仍然有用。
从代码的角度来看,微服务环境很棒,它使开发人员的生活变得轻松。通过将功能集中到一项服务,这意味着他们可以专注于问题而不考虑不必要的依赖关系。例如,如果您要将所有方法分组到一个项目中,并且您必须更改接口,您可能会决定创建一个新的端点。在此示例中,您可能必须考虑未更改的方法的使用者,我们是否要强制他们提升或者我们很高兴他们指向以前的版本,但当然您支持多个版本。
最大的问题是微服务滋生了孤立的知识,并且通过采用一种服务的开发人员不需要知道谁或什么正在使用它的方法,这意味着你无法回答什么通常可能是一个非常重要的问题,即谁或什么正在使用这项服务,我们是否需要强迫他们提升到一个新的终点。实际上,这可能会使您的 Web 服务器陷入一些不必要的旧服务的混乱。
无论您的解决方案是什么,我都会尝试对您的逻辑进行分组,并将类似的方法放在同一个项目中。我认为您必须接受您在不完全了解解决方案将来如何发展的情况下做出决定,因此您可能不得不改组。
另一个考虑因素是需求管理和并行开发。使用微服务,您可能比使用单一服务更容易管理业务需求。假设您收到 10 个要求,并被要求在下个月交付 5 个,下个月交付另外 5 个。例如,前 5 个需求集中在业务逻辑 a 中,下一个集中在业务逻辑 b 中,如果您有两个开发人员,您可以让他们并行处理此问题,而无需分支和合并。这显然是一个很好的例子来说明这一点,但是如果它们被拆分到不同的服务上,这是一个相对容易的对话,因为很容易向业务窥视者说您的业务逻辑 A 更改需要一起进行。
有状态的 web 服务可能很难快速测试,诚然你可以解决这个问题,但我总是喜欢能够向服务发出请求并得到响应,如果我必须准备一些东西,它会减慢我的速度,这在实时诊断时可能会令人沮丧问题。