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); }
/// <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); }
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); }