.NET 中微服务的设计策略

Design strategy for Microservices in .NET

微服务 .NET 相互通信的好方法是什么?使用 NETMQ(ZeroMQ 的端口)进行点对点通信会更好(为了性能)还是通过总线(NServiceBus 或 RhinoBus)更好? 您也会将数据访问层分解为微服务吗?

-英度

基于服务总线的设计允许您的应用程序利用 decoupling middleware design pattern. You have explicit control in terms of how each Microservice communicates. You can also throttle traffic. However, it really depends on your requirements. Please refer to this tutorial 在 .NET (C#) 中构建和测试微服务。

我们正沿着同样的道路开始。与所有新的热门新方法一样,您必须小心,您实际上正在实现使用微服务方法的好处。

我们评估了 Azure Service Fabric 作为一种可能性。作为托管您的应用程序的地方,它似乎很有前途。如果您希望您的应用程序与环境紧密集成,还有一个令人印象深刻的 API。这种集成可能会回答您的问题。需要注意的是 API 仍在不断变化(它正在改进)并且文档很少。感觉也有点像"vendor lock".

为了简单起见,我们首先让我们的微服务成为通过 REST 进行通信的简单无状态应用程序。端点是 well-documented 并且包含合同版本号作为 URI 的一部分。我们打算稍后在需要时(即性能)引入更复杂的交互方式。

为了回答您关于 "data access layer" 的问题,我的观点是每个微服务都应该以最适合该服务的方式保持状态。实际存储是微服务私有的,其他服务只能通过其 public API.

使用该数据

我们最近开源了我们的 .NET 微服务框架,它涵盖了微服务所需的几个模式。我建议至少看一下以了解在进入这种架构时需要什么。 https://github.com/gigya/microdot