public Startup(IConfiguration configuration, Stack <Func <RequestDel, RequestDel> > middlewares, IServiceEntryContainer serviceEntryContainer, ILogger logger, ISerializer serializer, ITypeConvertProvider typeConvert) { Configuration = configuration; _middlewares = middlewares; _serviceEntryContainer = serviceEntryContainer; _logger = logger; _serializer = serializer; _typeConvert = typeConvert; }
public HttpMiddleware(RequestDelegate next, Stack <Func <RequestDel, RequestDel> > middlewares, IServiceEntryContainer serviceEntryContainer, ILogger logger, ISerializer serializer, ITypeConvertProvider typeConvert) { _next = next; _middlewares = middlewares; _serviceEntryContainer = serviceEntryContainer; _logger = logger; _serializer = serializer; _typeConvert = typeConvert; }
public ServiceEntryContainer(IContainer container, IServiceIdGenerator serviceIdGenerate, ITypeConvertProvider typeConvertProvider, ISerializer serializer, ILogger logger) { _container = container; _services = new List <ServiceEntry>(); _handler = new ConcurrentDictionary <Tuple <Type, string>, FastExecutor.FastExecutorHandler>(); _serializer = serializer; _logger = logger; _serviceIdGenerate = serviceIdGenerate; _typeConvertProvider = typeConvertProvider; }
public HttpServer(string ip, int port, Action <IWebHostBuilder> builderAction, IServiceEntryContainer serviceEntryContainer, ILogger logger, ISerializer serializer, ITypeConvertProvider typeConvert) { _serviceEntryContainer = serviceEntryContainer; _ip = ip; _port = port; _logger = logger; _serializer = serializer; _middlewares = new Stack <Func <RequestDel, RequestDel> >(); _builderAction = builderAction; _typeConvert = typeConvert; }
public ServiceEntryContainer(IContainer container, IServiceIdGenerator serviceIdGenerate, ITypeConvertProvider typeConvertProvider) //public ServiceEntryContainer() { _serviceIdGenerate = serviceIdGenerate; _container = container; _typeConvertProvider = typeConvertProvider; _services = new List <JimuServiceEntry>(); _handler = new ConcurrentDictionary <Tuple <Type, string>, FastInvoke.FastInvokeHandler>(); new ConcurrentDictionary <Tuple <Type, string>, object>(); }
public RemoteServiceCaller(IClientServiceDiscovery serviceDiscovery, IAddressSelector addressSelector, ITransportClientFactory transportClientFactory, ITypeConvertProvider typeConvertProvider, IServiceTokenGetter serviceTokenGetter, ILogger logger, int retryTimes = -1) { _serviceDiscovery = serviceDiscovery; _addressSelector = addressSelector; _transportClientFactory = transportClientFactory; _typeConvertProvider = typeConvertProvider; _serviceTokenGetter = serviceTokenGetter; _logger = logger; _retryTimes = retryTimes; }
public RemoteServiceExecutor(IClientServiceDiscovery serviceDiscovery, IAddressSelector addressSelector, IServiceTokenGetter serviceTokenGetter, ITransportClientFactory transportClientFactory, ITypeConvertProvider typeConvertProvider, ILogger logger, ISerializer serializer, IAuthorizationHandler authorizationHandler = null, ICache <string, List <ServerAddress> > cache = null, int retryTimes = -1) { _serviceDiscovery = serviceDiscovery; _addressSelector = addressSelector; _transportClientFactory = transportClientFactory; _typeConvertProvider = typeConvertProvider; _serviceTokenGetter = serviceTokenGetter; _authorizationHandler = authorizationHandler; _cache = cache; _logger = logger; _retryTimes = retryTimes; _serializer = serializer; }
public static IServiceHostClientBuilder UseInServerForDiscovery(this IServiceHostClientBuilder serviceHostBuilder, params ServerAddress[] address) { serviceHostBuilder.RegisterService(cb => { cb.RegisterType <ClientServiceDiscovery>().As <IClientServiceDiscovery>().SingleInstance(); }); serviceHostBuilder.AddInitializer(container => { IClientServiceDiscovery clientDiscovery = container.Resolve <IClientServiceDiscovery>(); IRemoteServiceExecutor remoteExecutor = container.Resolve <IRemoteServiceExecutor>(); ISerializer serializer = container.Resolve <ISerializer>(); ITypeConvertProvider typeConverter = container.Resolve <ITypeConvertProvider>(); ILogger logger = container.Resolve <ILogger>(); StringBuilder sb = new StringBuilder(); foreach (ServerAddress addr in address) { sb.AppendFormat(addr.Code + ","); clientDiscovery.AddRoutesGetter(async() => { RemoteCallBackData result = await remoteExecutor.InvokeAsync(new List <ServerAddress>() { addr }, "Lamp.ServiceDiscovery.InServer.GetRoutesDescAsync".ToLower(), null, null); if (result == null || result.HasError) { return(null); } List <ServiceRouteDesc> routesDesc = (List <ServiceRouteDesc>)typeConverter.Convert(result.Result, typeof(List <ServiceRouteDesc>)); ServerDesc server = new ServerDesc { ServerAddress = addr, ServiceDescriptor = new List <ServiceDesc>() }; server.ServerAddress.IsHealth = true; foreach (ServiceRouteDesc desc in routesDesc) { ServiceDesc item = (ServiceDesc)desc.ServiceDescriptor.Clone(); server.ServiceDescriptor.Add(item); } return(server); }); } if (sb.Length > 0) { logger.Info($"[config]用服务端发现服务 {sb.ToString()}"); } }); serviceHostBuilder.AddRunner(container => { ClientServiceDiscovery clientServiceDiscovery = (ClientServiceDiscovery)container.Resolve <IClientServiceDiscovery>(); clientServiceDiscovery?.RunInInit().Wait(); }); return(serviceHostBuilder); }