예제 #1
0
        public static ISelfBalancingOrgService GetSelfBalancingService(IEnumerable <EnhancedServiceParams> nodeParameters, RouterRules rules)
        {
            var routingService = new RoutingService();

            foreach (var parameters in nodeParameters)
            {
                routingService.AddNode(parameters);
            }

            routingService.DefineRules(rules);
            routingService.StartRouter();

            return(new EnhancedServiceFactory <ISelfBalancingOrgService, SelfBalancingOrgService>(routingService).CreateEnhancedService());
        }
예제 #2
0
 public static async Task <IEnhancedOrgService> GetSelfBalancingService(
     IReadOnlyCollection <IServicePool <IOrganizationService> > pools, RouterRules rules = null)
 {
     return(await GetSelfBalancingService(BuildBaseParams(Guid.NewGuid().ToString()), pools, rules));
 }
예제 #3
0
        public static async Task <IEnhancedOrgService> GetSelfBalancingService(ServiceParams parameters,
                                                                               IReadOnlyCollection <IServicePool <IOrganizationService> > pools, RouterRules rules = null)
        {
            parameters.Require(nameof(parameters));
            pools.Require(nameof(pools));

            if (AutoSetMaxPerformanceParams)
            {
                parameters.AutoSetMaxPerformanceParams();
            }

            var routingService = new RoutingService <IOrganizationService>();

            foreach (var pool in pools)
            {
                routingService.AddNode(pool);
            }

            if (rules != null)
            {
                routingService.DefineRules(rules);
            }

            await routingService.StartRouter();

            var routingPool = new RoutingPool <IOrganizationService>(routingService);

            return(new EnhancedServiceFactory <IEnhancedOrgService, Services.Enhanced.EnhancedOrgService>(parameters)
                   .CreateService(routingPool));
        }
예제 #4
0
 public static async Task <IEnhancedOrgService> GetSelfBalancingService(ServiceParams serviceParameters,
                                                                        IReadOnlyCollection <ServiceParams> poolParameters, RouterRules rules = null)
 {
     return(await GetSelfBalancingService(serviceParameters, poolParameters.Select(GetPool).ToArray(), rules));
 }