我在.NET Core中有一个包含多个服务的微服务项目。放置控制器时,有两种方法:
Startup.cs
。 我认为第一种方法将减少编码工作量,但是第二种方法使用接口等将控制器与实际服务分开。 使用两种方法在Fabric中创建和管理它们的方式是否有所不同。
答案 0 :(得分:0)
这是一个非常广泛的主题,可以引起讨论,因为这全都取决于首选项,经验和技术堆栈。我将加两分钱,但通常不以这两种方法为准。
第一种方法(彼此隔离的每个服务的API):
第二种方法(单一API将调用转发给正确的服务):
总而言之, 两种方法的工作量都相似,不同之处在于,这些工作将分为不同的领域,您应该对两者进行评估,并考虑维护哪一种方法。在比较中不要只考虑代码,因为与发布,监视,日志记录,安全性,性能等其他方面相比,代码对整体解决方案的影响很小。
答案 1 :(得分:0)
在我们当前的项目中,我们有一个面向公众的API。对于每个域,我们有几个单独的微服务项目。个性化使我们能够根据每个微服务使用的资源进行扩展。例如,我们有一个映像服务,该服务消耗大量资源,因此进行扩展很容易。您还可以单独部署它们,如果任何服务失败,也不会破坏整个应用程序。
在所有微服务的前面,我们都有一个API网关,用于处理所有身份验证,调节,版本控制,运行状况检查,指标,日志记录等。我们为每个微服务提供接口,并针对每个上下文分别保留请求和响应模型。该层上没有业务逻辑,您还可以在需要调用多个服务的地方汇总响应。
如果您想对这种结构有任何疑问,请随时提问。