我想在我的下一个基于ASP.NET核心的项目中使用微服务架构。
我可以通过REST在服务之间进行交换,但维护真的很重要。
微服务之间是否存在其他通信方式,例如通过像vertx这样的事件总线。
我可以使用rabbitmq,但不知道,如果这是一个不错的选择。
答案 0 :(得分:3)
我认为Rabbit MQ可以正常工作,特别是如果你有许多消费者,即需要负载平衡,和/或如果你需要持久的消息,并且从概念上讲,你的微服务可以正常处理消息。 / p>
否则,由于您正在考虑REST,我建议改为使用WCF。
只是忽略微软的例子,那些太复杂了。您需要制作一个包含协议(在WCF术语,服务合同中)的程序集+它们发送/接收的消息(在WCF术语,数据协定中),这些消息将在您的服务之间共享。拥有共享程序集将允许您摆脱那种企业风格的XML配置废话。这也将使维护比REST更简单,因为编译器将验证网络调用的正确性:更改协议后忘记更新一个服务,服务将停止编译。
Here’s my demo使用WCF在C#中实现零配置客户端 - 服务器通信。
它目前设置为使用命名管道绑定,即仅在本地工作。但是很容易从NetNamedPipeBinding
切换到NetTcpBinding
,这样可以很好地进行网络连接。
P.S。如果您选择WCF,请不要忘记抽象可以并且会泄漏。任何网络呼叫都可能因任何与网络相关的异常而失败。此外,您有时需要重新连接(如果您不想这样做,并且您每秒没有太多消息,则可以使用无连接协议,如NetHttpBinding
,但这些协议的性能要低得多)