使用同步HTTP的ASP.NET核心Restful API通信

时间:2017-03-16 17:28:48

标签: asp.net rest asp.net-web-api asp.net-core microservices

我使用ASP.NET Core实现了多个restful API组件。我没有使用事件驱动设计或任何消息代理服务。

我想保持简单,所以 假设我有3个安静的独立组件(具有独立的ASP.NET核心项目),除了身份服务器提供者之外,还发布到同一个IIS:

  • 导航:从自己的数据库中检索菜单
  • 授权:处理权限和安全性
  • 通知
  • Identity Server:为经过身份验证的用户提供Jwt访问令牌,以授权他访问api。

除了从客户端到Apis的外部通信,API网关应该处理所有客户端请求。在内部进行某种沟通。一个很好的例子是为用户获取菜单:

  1. 用户在成功登录后获取访问令牌
  2. 然后他请求他可以查看的菜单,因此请求被转发到Navigation API
  3. Navigation API向Authorization API发出内部请求,以检查用户限制其访问某些菜单的权限。
  4. 现在,我正在通过一个名为Service Proxies的公共库管理通信,该库具有在cs文件中硬编码的所有api url(仅用于尝试该概念)

     public static class Config
    {
        public static class ServiceURLs
        {      
            public const string AuthorizationAPI ="http://localhost:port/api/Authorization/" ; 
    
        }
    }
    
    
        public class AuthorizationServiceProxy : IAuthorizationServiceProxy
        {
         //ServiceProxy is a custom class that issue http requests in order to get responses
        private ServiceProxy _serviceProxy;
    
        public AuthorizationServiceProxy(string accessToken)
        {      
            _serviceProxy = new ServiceProxy(Config.ServiceURLs.AuthorizationAPI, accessToken);
        }
    
        public async Task<List<Permission>> GetUserPermissions()
        {          
            var route = "GetUserPermissions";
            var result = await 
           _serviceProxy.GetHttpResponseContentAsType<List<Permission>>(route);
    
            return result;
        }
    

    AuthorizationProxy和所有代理只是向API发出请求到另一个。

    在我的情况下如何处理进程间通信?

0 个答案:

没有答案