Beispiel #1
0
        /// <summary>
        /// 初始化同步消息总线
        /// </summary>
        private void InitializeSyncMessageBus(params Assembly[] assemblies)
        {
            DependencyResolver.RegisterTypes(x => TypeUtils.IsSyncSubscriber(x), assemblies);
            var messageBus = DependencyResolver.Resolve <ISyncMessageBus>();

            messageBus.Initialize();
            messageBus.RegisterAllSubscribersInAssemblies(assemblies);
            messageBus.Start();
        }
Beispiel #2
0
        /// <summary>
        /// 注册给定程序集中的所有的AggregateRootEvent,扫描实现了IAggregateRootEvent接口的类
        /// </summary>
        private void RegisterAggregateRootEvents(params Assembly[] assemblies)
        {
            DependencyResolver.RegisterTypes(TypeUtils.IsAggregateRootEvent, assemblies);
            var provider = DependencyResolver.Resolve <IAggregateRootEventTypeProvider>();

            foreach (var assembly in assemblies)
            {
                foreach (var aggregateRootEventType in assembly.GetTypes().Where(x => TypeUtils.IsAggregateRootEvent(x)))
                {
                    provider.RegisterAggregateRootEventTypeMapping(TypeUtils.GetAggregateRootType(aggregateRootEventType), aggregateRootEventType);
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// 注册组件到容器
        /// </summary>
        public Configuration RegisterComponents(params Assembly[] assemblies)
        {
            DependencyResolver.RegisterType(typeof(DefaultAggregateRootTypeProvider));
            DependencyResolver.RegisterType(typeof(DefaultAggregateRootEventCallbackMetaDataProvider));
            DependencyResolver.RegisterType(typeof(DefaultDomainHandlerMetaDataProvider));
            DependencyResolver.RegisterType(typeof(DefaultAggregateRootEventTypeProvider));
            DependencyResolver.RegisterType(typeof(DefaultSnapshotTypeProvider));
            DependencyResolver.RegisterType(typeof(DefaultTypeNameMapper));
            DependencyResolver.RegisterType(typeof(DefaultSyncMessageBus));
            DependencyResolver.RegisterType(typeof(Log4NetLoggerFactory));
            DependencyResolver.RegisterType(typeof(DefaultAggregateRootFactory));
            DependencyResolver.RegisterType(typeof(JsonNetSerializer));
            DependencyResolver.RegisterType(typeof(DefaultSnapshotter));
            DependencyResolver.RegisterType(typeof(NoSnapshotPolicy));
            DependencyResolver.RegisterType(typeof(Repository));
            DependencyResolver.RegisterType(typeof(JsonMessageSerializer));
            DependencyResolver.RegisterType(typeof(InMemorySubscriptionStorage));
            DependencyResolver.RegisterType(typeof(MsmqMessageTransport));
            DependencyResolver.RegisterType(typeof(DefaultAsyncMessageBus));

            DependencyResolver.Resolve <IAggregateRootTypeProvider>().RegisterAllAggregateRootTypesInAssemblies(assemblies);
            DependencyResolver.Resolve <IAggregateRootEventCallbackMetaDataProvider>().RegisterAllEventCallbackMetaDataInAssemblies(assemblies);
            DependencyResolver.Resolve <IDomainHandlerMetaDataProvider>().RegisterAllEventSubscribersInAssemblies(assemblies);

            DependencyResolver.RegisterTypes(TypeUtils.IsComponent, assemblies);
            DependencyResolver.RegisterTypes(TypeUtils.IsRepository, assemblies);
            DependencyResolver.RegisterTypes(TypeUtils.IsService, assemblies);
            DependencyResolver.RegisterTypes(TypeUtils.IsEventStore, assemblies);
            DependencyResolver.RegisterTypes(TypeUtils.IsSnapshotStore, assemblies);

            RegisterTypeNameMappings(assemblies);
            RegisterAggregateRootEvents(assemblies);
            InitializeSyncMessageBus(assemblies);

            return(this);
        }