示例#1
0
        public static IServiceCollection AddLegacyClientConfigurationSupport(this IServiceCollection services, ClientConfiguration configuration)
        {
            if (services.Any(service => service.ServiceType == typeof(ClientConfiguration)))
            {
                throw new InvalidOperationException("Cannot configure legacy ClientConfiguration support twice");
            }

            // these will eventually be removed once our code doesn't depend on the old ClientConfiguration
            services.TryAddSingleton(configuration);
            services.TryAddFromExisting <IMessagingConfiguration, ClientConfiguration>();

            // Translate legacy configuration to new Options
            services.Configure <ClientMessagingOptions>(options =>
            {
                CopyCommonMessagingOptions(configuration, options);

                options.ClientSenderBuckets = configuration.ClientSenderBuckets;
            });

            services.Configure <SerializationProviderOptions>(options =>
            {
                options.SerializationProviders        = configuration.SerializationProviders;
                options.FallbackSerializationProvider = configuration.FallbackSerializationProvider;
            });

            // GatewayProvider
            LegacyGatewayListProviderConfigurator.ConfigureServices(configuration, services);
            return(services);
        }
示例#2
0
        /// <summary>
        /// Legacy way to create membership table. Will need to move to a legacy package in the future
        /// </summary>
        /// <returns></returns>
        internal static void ConfigureServices(GlobalConfiguration configuration, IServiceCollection services)
        {
            ILegacyMembershipConfigurator configurator = null;

            switch (configuration.LivenessType)
            {
            case LivenessProviderType.MembershipTableGrain:
                configurator = new LegacyGrainBasedMembershipConfigurator();
                break;

            case LivenessProviderType.SqlServer:
                configurator = LegacyGatewayListProviderConfigurator.CreateInstanceWithParameterlessConstructor <ILegacyMembershipConfigurator>(Constants.ORLEANS_CLUSTERING_ADONET);
                break;

            case LivenessProviderType.AzureTable:
                configurator = LegacyGatewayListProviderConfigurator.CreateInstanceWithParameterlessConstructor <ILegacyMembershipConfigurator>(Constants.ORLEANS_CLUSTERING_AZURESTORAGE);
                break;

            case LivenessProviderType.ZooKeeper:
                configurator = LegacyGatewayListProviderConfigurator.CreateInstanceWithParameterlessConstructor <ILegacyMembershipConfigurator>(Constants.ORLEANS_CLUSTERING_ZOOKEEPER);
                break;

            case LivenessProviderType.Custom:
                configurator = LegacyGatewayListProviderConfigurator.CreateInstanceWithParameterlessConstructor <ILegacyMembershipConfigurator>(configuration.MembershipTableAssembly);
                break;

            default:
                break;
            }

            configurator?.ConfigureServices(configuration, services);
        }
示例#3
0
        public static IServiceCollection AddLegacyClientConfigurationSupport(this IServiceCollection services, ClientConfiguration configuration)
        {
            if (services.Any(service => service.ServiceType == typeof(ClientConfiguration)))
            {
                throw new InvalidOperationException("Cannot configure legacy ClientConfiguration support twice");
            }

            // these will eventually be removed once our code doesn't depend on the old ClientConfiguration
            services.TryAddSingleton(configuration);
            services.TryAddFromExisting <IMessagingConfiguration, ClientConfiguration>();

            services.Configure <ClusterClientOptions>(options =>
            {
                if (string.IsNullOrWhiteSpace(options.ClusterId) && !string.IsNullOrWhiteSpace(configuration.ClusterId))
                {
                    options.ClusterId = configuration.ClusterId;
                }
            });

            // Translate legacy configuration to new Options
            services.Configure <ClientMessagingOptions>(options =>
            {
                CopyCommonMessagingOptions(configuration, options);

                options.ClientSenderBuckets = configuration.ClientSenderBuckets;
            });

            services.Configure <NetworkingOptions>(options => CopyNetworkingOptions(configuration, options));

            services.Configure <SerializationProviderOptions>(options =>
            {
                options.SerializationProviders        = configuration.SerializationProviders;
                options.FallbackSerializationProvider = configuration.FallbackSerializationProvider;
            });

            services.Configure <StatisticsOptions>((options) =>
            {
                CopyStatisticsOptions(configuration, options);
            });

            services.Configure <TelemetryOptions>(options =>
            {
                CopyTelemetryOptions(configuration.TelemetryConfiguration, services, options);
            });

            // GatewayProvider
            LegacyGatewayListProviderConfigurator.ConfigureServices(configuration, services);

            // Register providers
            LegacyProviderConfigurator <IClusterClientLifecycle> .ConfigureServices(configuration.ProviderConfigurations, services, ClusterClientDefaultProviderInitStage, ClusterClientDefaultProviderStartStage);

            return(services);
        }
        public static IServiceCollection AddLegacyClientConfigurationSupport(this IServiceCollection services, ClientConfiguration configuration = null)
        {
            if (TryGetClientConfiguration(services) != null)
            {
                throw new InvalidOperationException("Cannot configure legacy ClientConfiguration support twice");
            }

            if (configuration == null)
            {
                try
                {
                    configuration = ClientConfiguration.StandardLoad();
                }
                catch (FileNotFoundException)
                {
                    configuration = new ClientConfiguration();
                }
            }

            // these will eventually be removed once our code doesn't depend on the old ClientConfiguration
            services.TryAddSingleton(configuration);
            services.TryAddFromExisting <IMessagingConfiguration, ClientConfiguration>();

            services.Configure <ClusterClientOptions>(options =>
            {
                if (string.IsNullOrWhiteSpace(options.ClusterId) && !string.IsNullOrWhiteSpace(configuration.ClusterId))
                {
                    options.ClusterId = configuration.ClusterId;
                }
            });

            // Translate legacy configuration to new Options
            services.Configure <ClientMessagingOptions>(options =>
            {
                CopyCommonMessagingOptions(configuration, options);
                options.PropagateActivityId  = configuration.PropagateActivityId;
                options.ClientSenderBuckets  = configuration.ClientSenderBuckets;
                options.PreferredFamily      = configuration.PreferredFamily;
                options.NetworkInterfaceName = configuration.NetInterface;
            });


            services.Configure <NetworkingOptions>(options => CopyNetworkingOptions(configuration, options));

            services.Configure <SerializationProviderOptions>(options =>
            {
                options.SerializationProviders        = configuration.SerializationProviders;
                options.FallbackSerializationProvider = configuration.FallbackSerializationProvider;
            });

            services.Configure <ClientStatisticsOptions>((options) =>
            {
                CopyStatisticsOptions(configuration, options);
            });

            services.Configure <TelemetryOptions>(options =>
            {
                CopyTelemetryOptions(configuration.TelemetryConfiguration, services, options);
            });

            services.Configure <GatewayOptions>(options =>
            {
                options.GatewayListRefreshPeriod = configuration.GatewayListRefreshPeriod;
                options.PreferedGatewayIndex     = configuration.PreferedGatewayIndex;
            });
            // GatewayProvider
            LegacyGatewayListProviderConfigurator.ConfigureServices(configuration, services);

            // Register providers
            LegacyProviderConfigurator <IClusterClientLifecycle> .ConfigureServices(configuration.ProviderConfigurations, services);

            return(services);
        }