使用RPC服务结构的API网关模式

时间:2017-04-12 09:09:32

标签: c# azure azure-service-fabric

我们有3项服务

  1. eShopCustomer
  2. eShopCart
  3. eShopPayments
  4. eShopOrders
  5. 因此,为了在这些微服务之间进行通信,我们创建了另一个名为eShopAPI的webapi项目,作为使用eShopAPI中的RPC模型与上述微服务进行通信的途径。因此,eShopAPI项目是暴露的REST API。

    这个过程是好的吗?

    让我们看一下下面的一些示例代码

       [ServiceRequestActionFilter]
    [Route("api/[controller]")]
    public class OrderController : ApiController
    {
        IOrderService _orderService = ServiceProxy.Create<IOrderService>(new Uri("fabric:/eShop/OrderService"));
        ICartService _cartService = ServiceProxy.Create<ICartService>(new Uri("fabric:/eShop/CartService"));
    
        // GET api/values/5 
        [Route("api/order/{id}")]
        public string CreateOrder([FromBody] OrderViewmodel model)
        {
            _orderService.CreateOrder(id);
            _cartService.AddItems();
            return "value";
        }
    
    }
    
    
    [ServiceRequestActionFilter]
    [Route("api/[controller]")]
    public class BasketController : ApiController
    {
        IBasketService _orderService = ServiceProxy.Create<IBasketService>(new Uri("fabric:/eShop/BasketService"));
    
    
        // GET api/values/5 
        [Route("api/order/{id}")]
        public string Get(long id)
        {
            _orderService.GetOrder(id);
            return "value";
        }
    
    }`enter code here`
    

1 个答案:

答案 0 :(得分:0)

我建议您不要将业务逻辑保留在api层中,而是使用N层架构。在我看来,你需要另一个业务流程层(无状态服务/服务),它将负责服务请求的流程(验证,编排等)