从Azure Service Fabric中的其他应用程序与无状态Web Api服务进行通信

时间:2017-05-16 05:12:31

标签: asp.net-web-api azure-service-fabric

我有两种不同的服务架构应用程序。两者都是无状态的web api模型。我确实有一个情况,从应用程序1中的服务1,我需要调用服务2,它是应用程序2的一部分。我在同一个集群中部署这两个应用程序。有人可以在这里建议最好的做法。什么是最好的沟通方式。请提供一些样本。

2 个答案:

答案 0 :(得分:1)

Fabric Transport (aka Service Remoting)是sdk内置通信模型。与通过HTTP或WCF进行的通信相比,它可以做得更多,特别是在通信的客户端。

当谈到与Service Fabric服务(或者实际上是任何分布式系统服务)进行通信时,您的通信应该考虑到连接可能无法在初始尝试时建立,或者在通信中断并且您真的不应该构建您的解决方案,期望始终完美地工作。其原因在于Service Fabric在任何时候都可以决定将主要节点从节点移动到另一个节点,节点本身可能会关闭,服务可能会崩溃。 Service Fabric的优点在于,在维护服务和节点的过程中,它为您带来了很多繁重的工作。

因此,就通信而言,这意味着客户需要能够做三件事(因为它真正在分布式环境中工作);

  • 解析服务的地址(找出它所在的节点,正在侦听的端口,目标分区ID和副本等等)
  • 连接到服务,打包和发送请求,然后接收并解压缩回复
  • 重试解析并在通信失败时进行连接
当您使用Service Remoting客户端(如ServiceProxy)和服务端侦听器时,

Fabric Transport does all this

对于Fabric Transport来说,这是很好的部分,你可以获得所有开箱即用的功能,而且大部分时间你也不需要更改默认设置。不好的一点是它只适用于群集中的通信,即您无法使用Fabric Transport从外部与群集中运行的服务进行通信。为此,您需要HTTP或WCF。

HTTP(s)和WCF(通过HTTP(s))通信允许您构建自己的客户端并自己处理通信。有关如何解决,连接和重试HTTP客户端的示例,this one for instance

答案 1 :(得分:0)

根据Microsoft,有三种内置通讯选项。由您来决定哪一个最适合您。我个人使用service remoting,这很容易快速设置。它还允许您在客户服务中进行异常处理。