Esempio n. 1
0
        private void RegisterClientServices()
        {
            if (!RegisterSingletonService <IServiceStatusManageFactory, ServiceStatusManageFactory>())
            {
                return;
            }
            AddStartUpTask <ServiceStatusManageStartup>();
            AddStartUpTask <RemotingClientStartup>();
            RegisterSingletonService <ClientDefaultInterceptor>();
            RegisterSingletonService <IClientFactory, ClientFactory>();
            RegisterSingletonService <IRemotingInvoke, RemotingInvoke>();
            RegisterSingletonService <ICircuitBreaker, PollyCircuitBreaker>();

            var types    = ReflectHelper.GetDependencyTypes();
            var services = types.Where(t => t.IsInterface && typeof(IService).IsAssignableFrom(t)).ToList();

            //Generate client proxy
            var proxies = ProxyGenerator.GenerateProxy(services);

            foreach (var service in services)
            {
                //Register proxy class,For support meta data using scope.
                RegisterScopedService(service, proxies.FirstOrDefault(p => service.IsAssignableFrom(p)));
            }

            RegisterInterceptors();
        }
Esempio n. 2
0
        private void RegisterInterceptors()
        {
            var interceptors = ReflectHelper.GetDependencyTypes().FindAll(t => typeof(IInterceptor).IsAssignableFrom(t));

            foreach (var interceptor in interceptors)
            {
                RegisterScopedService(interceptor);
            }
        }
Esempio n. 3
0
        private void RegisterServerServices()
        {
            if (!RegisterSingletonService <ServerDefaultInterceptor>())
            {
                return;
            }
            RegisterSingletonService <IBootstrap, ServerBootstrap>();
            AddStartUpTask <DotNettyBootstrapStartup>();
            var types    = ReflectHelper.GetDependencyTypes();
            var services = types.Where(t => t.IsInterface && typeof(IService).IsAssignableFrom(t)).Select(@interface => new
            {
                Interface      = @interface,
                Implementation = types.FirstOrDefault(p => p.IsClass && p.IsPublic && !p.IsAbstract && !p.Name.EndsWith("_____UraganoClientProxy") && @interface.IsAssignableFrom(p))
            }).Where(p => p.Implementation != null);

            foreach (var service in services)
            {
                //此处不使用接口来注册是避免同时启用服务器端和客户端冲突
                RegisterScopedService(service.Implementation);
                //RegisterScopedService(service.Interface, service.Implementation);
            }

            RegisterInterceptors();
        }