我们正在Azure Service Fabric中构建一个架构原型,我们在其中提供了许多分区的有状态服务。这些服务实现了Rest API。我们正在实现API网关方法作为我们应用程序的公共接口。
Microsoft已在Service Fabric Wordcount示例代码中提供了此方法的示例。此示例代码仅演示转发GET请求和没有正文的PUT请求。
有没有人有任何示例代码可以演示将POST和PUT请求(带有正文数据)从网关转发到有状态服务的最佳方法?
提前致谢。
答案 0 :(得分:1)
我们自己也实施了HTTP网关服务。为了确保我们可以为任何内部协议提供一个HTTP网关,我们使用ASP.NET 5中间件为基于HTTP的内部服务(如ASP.NET WebAPI)实现了网关。它使用ServicePartitionClient
和来自CommunicationClientFactoryBase
的一些重试逻辑将来自例如/ service的请求路由到fabric:/ myapp / myservice之类的内部Service Fabric地址。
我们开源这个中间件你可以在这里找到它: https://github.com/c3-ls/ServiceFabric-HttpServiceGateway
项目的wiki中还有一些文档。
答案 1 :(得分:0)
WordCount示例中特定于Service Fabric特定的服务间通信的唯一部分是使用ServicePartitionClient
来解析分区的相应端点URI。之后,它在网关/客户端使用标准HttpWebRequest
,在有状态服务中使用标准ASP.NET WebAPI。您可以使用现有资源来查看如何扩展它以在请求正文中包含内容。