/// <summary> /// Register and turn on webpoint. EnableDebugEndpoint application setting should be set to true. /// </summary> public static void Register(IContainer container) { var settingValue = ConfigurationManager.AppSettings.Get("EnableDebugEndpoint"); var pipelinesContainer = container.Resolve <IMessagePipelineContainer>(); if (StringUtils.ParseOrDefault(settingValue, false)) { WebEndpoint = new Saritasa.Tools.Messages.Common.Endpoints.WebEndpoint( new AutofacServiceProviderFactory(container)); WebEndpoint.RegisterPipelines(pipelinesContainer); WebEndpoint.Start(); } settingValue = ConfigurationManager.AppSettings.Get("DebugMessagesDir"); if (!string.IsNullOrEmpty(settingValue) && Directory.Exists(settingValue)) { var fileMessageRepository = new Saritasa.Tools.Messages.Common.Repositories.FileMessageRepository(settingValue); var fileRepositoryMiddleware = new Saritasa.Tools.Messages.Common.PipelineMiddlewares.RepositoryMiddleware(fileMessageRepository); foreach (var pipeline in pipelinesContainer.Pipelines) { pipeline.AddMiddlewares(fileRepositoryMiddleware); } } }
public static IMessagePipelineContainer RegisterPipelines(params IMessagePipelineMiddleware[] middlewares) { var pipelinesContainer = new DefaultMessagePipelineContainer(); // Repositories. var connectionStringConf = ConfigurationManager.ConnectionStrings["AppDbContext"]; var connectionString = connectionStringConf.ConnectionString.Replace("{baseUrl}", AppDomain.CurrentDomain.BaseDirectory); var repositoryMiddleware = new Saritasa.Tools.Messages.Common.PipelineMiddlewares.RepositoryMiddleware( new Saritasa.Tools.Messages.Common.Repositories.AdoNetMessageRepository( System.Data.Common.DbProviderFactories.GetFactory(connectionStringConf.ProviderName), connectionString) ); var recordRepositoryMiddleware = new Saritasa.Tools.Messages.Common.PipelineMiddlewares.RepositoryMiddleware( new Saritasa.Tools.Messages.Common.Repositories.WebServiceRepository() ) { RethrowExceptions = false, }; // Command. pipelinesContainer.AddCommandPipeline() .AddMiddleware( new Saritasa.Tools.Messages.Commands.PipelineMiddlewares.CommandHandlerLocatorMiddleware( System.Reflection.Assembly.GetAssembly(typeof(Domain.UserContext.Entities.User)))) .AddMiddleware(new Saritasa.Tools.Messages.Commands.PipelineMiddlewares.CommandHandlerResolverMiddleware()) .AddMiddleware(new Saritasa.Tools.Messages.Commands.PipelineMiddlewares.CommandHandlerExecutorMiddleware { UseParametersResolve = true }) .AddMiddleware(repositoryMiddleware) .AddMiddleware(recordRepositoryMiddleware); // Query. pipelinesContainer.AddQueryPipeline() .AddMiddleware(new Saritasa.Tools.Messages.Queries.PipelineMiddlewares.QueryObjectResolverMiddleware { UseInternalObjectResolver = true, }) .AddMiddleware(new Saritasa.Tools.Messages.Queries.PipelineMiddlewares.QueryExecutorMiddleware()) .AddMiddleware(repositoryMiddleware) .AddMiddleware(recordRepositoryMiddleware); // Event. pipelinesContainer.AddEventPipeline() .AddMiddleware(new Saritasa.Tools.Messages.Events.PipelineMiddlewares.EventHandlerLocatorMiddleware( System.Reflection.Assembly.GetAssembly(typeof(Domain.UserContext.Entities.User)))) .AddMiddleware(new Saritasa.Tools.Messages.Events.PipelineMiddlewares.EventHandlerExecutorMiddleware()) .AddMiddleware(repositoryMiddleware) .AddMiddleware(recordRepositoryMiddleware); return(pipelinesContainer); }