Exemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="OracleMessageBus"/> class.
        /// </summary>
        /// <param name="resolver">The resolver to use.</param>
        /// <param name="configuration">The Oracle scale-out configuration options.</param>
        public OracleMessageBus(IDependencyResolver resolver,
                                OracleScaleoutConfiguration configuration)
            : base(resolver, configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException("configuration");
            }

            if (configuration.UseOracleDependency && configuration.OracleDependencyPort.HasValue)
            {
                OracleDependency.Port = configuration.OracleDependencyPort.Value;
            }

            _connectionString  = configuration.ConnectionString;
            _dbProviderFactory = OracleClientFactory.Instance.AsIDbProviderFactory(configuration.ConnectionString);

            var traceManager = resolver.Resolve <ITraceManager>();

            _trace = traceManager[typeof(OracleMessageBus).Name];

            _dbOperationFactory           = new DbOperationFactory();
            _observableDbOperationFactory = new ObservableDbOperationFactory(null, new OracleDependencyManager(_dbProviderFactory, _trace),
                                                                             new SignalrDbDependencyFactory());
            _useOracleDependency = configuration.UseOracleDependency;

            Task.Run(() => Initialize());
        }
        /// <summary>
        /// Use Redis as the messaging backplane for scaling out of ASP.NET SignalR applications in a web farm.
        /// </summary>
        /// <param name="resolver">The dependency resolver</param>
        /// <param name="configuration">The Redis scale-out configuration options.</param>
        /// <returns>The dependency resolver.</returns>
        public static IDependencyResolver UseOracle(this IDependencyResolver resolver, OracleScaleoutConfiguration configuration)
        {
            var bus = new Lazy <OracleMessageBus>(() => new OracleMessageBus(resolver, configuration));

            resolver.Register(typeof(IMessageBus), () => bus.Value);

            return(resolver);
        }
        /// <summary>
        /// Use Oracle as the messaging backplane for scaling out of ASP.NET SignalR applications in a web farm.
        /// </summary>
        /// <param name="resolver">The dependency resolver.</param>
        /// <param name="connectionString">The connection string to the Oracle Server.</param>
        /// <param name="useOracleDependency">Flag to determine if Oracle dependency should be used.</param>
        /// <param name="oracleDependencyPort">The dependency port of the Oracle server.</param>
        /// <returns>The dependency resolver.</returns>
        public static IDependencyResolver UseOracle(this IDependencyResolver resolver, string connectionString, bool useOracleDependency = false, int?oracleDependencyPort = null)
        {
            var configuration = new OracleScaleoutConfiguration(connectionString, useOracleDependency, oracleDependencyPort);

            return(UseOracle(resolver, configuration));
        }