public static void RegisterComponents(UnityContainer container) { #region Infrastructures string serviceBusSetting = AppDomain.CurrentDomain.BaseDirectory + "InfrastructureSetting.xml"; MobileOAuthSettings infrastructureSetting = InfrastructureSettings.Read <MobileOAuthSettings>(serviceBusSetting); ServiceBusConfig serviceBusConfig = new ServiceBusConfig(infrastructureSetting.ServiceBus); RedisCacheSetting redisCacheConfig = infrastructureSetting.RedisCache; serviceBusConfig.Initialize(); container.RegisterInstance <ITextSerializer>(new JsonTextSerializer()); container.RegisterInstance <IMetadataProvider>(new StandardMetadataProvider()); #endregion #region Command Bus container.RegisterInstance <IMessageSender>(Topics.Commands.Path, new TopicSender(infrastructureSetting.ServiceBus, Topics.Commands.Path)); container.RegisterInstance <ICommandBus>( new CommandBus( container.Resolve <IMessageSender>(Topics.Commands.Path), container.Resolve <IMetadataProvider>(), container.Resolve <ITextSerializer>() )); #endregion #region Context container.RegisterType <OAuthDbContext>( new InjectionConstructor("MobileOAuth")); #endregion #region Cache Context container.RegisterType <RedisReadClient>(new ContainerControlledLifetimeManager(), new InjectionConstructor(redisCacheConfig)); container.RegisterType <RedisWriteClient>(new ContainerControlledLifetimeManager(), new InjectionConstructor(redisCacheConfig)); #endregion container.RegisterInstance <IUserClient>(new UserClient()); container.RegisterType <IApplicationRepository, ApplicationRepository>(); container.RegisterType <IAdminUserRepository, AdminUserRepository>(); container.RegisterType <IAppService, ApplicationService>(); container.RegisterType <IAdminUserService, AdminUserService>(); container.RegisterType <IDeviceService, RedisDeviceService>(); container.RegisterType <IRefreshTokenService, RedisRefreshTokenService>(); container.RegisterType <IUserService, UserService>(); GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container); }
public static IUnityContainer CreateContainer() { UnityContainer container = new UnityContainer(); #region Infrastructure string serviceBusSetting = AppDomain.CurrentDomain.BaseDirectory + "InfrastructureSetting.xml"; MobileOAuthSettings infrastructureSetting = InfrastructureSettings.Read <MobileOAuthSettings>(serviceBusSetting); ServiceBusConfig serviceBusConfig = new ServiceBusConfig(infrastructureSetting.ServiceBus); RedisCacheSetting redisCacheConfig = infrastructureSetting.RedisCache; serviceBusConfig.Initialize(); container.RegisterInstance <ITextSerializer>(new JsonTextSerializer()); container.RegisterInstance <IMetadataProvider>(new StandardMetadataProvider()); #endregion #region Command Bus // event bus container.RegisterInstance <IMessageSender>(Topics.Commands.Path, new TopicSender(infrastructureSetting.ServiceBus, Topics.Commands.Path)); container.RegisterInstance <ICommandBus>( new CommandBus( container.Resolve <IMessageSender>(Topics.Commands.Path), container.Resolve <IMetadataProvider>(), container.Resolve <ITextSerializer>() )); #endregion #region Event Bus container.RegisterInstance <IMessageSender>(Topics.Events.Path, new TopicSender(infrastructureSetting.ServiceBus, Topics.Events.Path)); container.RegisterInstance <IEventBus>( new EventBus( container.Resolve <IMessageSender>(Topics.Events.Path), container.Resolve <IMetadataProvider>(), container.Resolve <ITextSerializer>())); #endregion #region Cache Context container.RegisterType <RedisReadClient>(new ContainerControlledLifetimeManager(), new InjectionConstructor(redisCacheConfig)); container.RegisterType <RedisWriteClient>(new ContainerControlledLifetimeManager(), new InjectionConstructor(redisCacheConfig)); #endregion #region Context container.RegisterType <OAuthDbContext>( new InjectionConstructor("MobileOAuth")); #endregion #region Repository container.RegisterType <IUserDeviceRepository, UserDeviceRepository>(); #endregion #region CommandHandler container.RegisterType <ICommandHandler, OAuthViewGenerator>("OAuthViewGenerator"); var oAuthViewGenerator = new CommandProcessor(new SessionSubscriptionReceiver(infrastructureSetting.ServiceBus, Topics.Commands.Path, Topics.Commands.Subscriptions.OAuthViewGenerator, false, new SessionSubscriptionReceiverInstrumentation(Topics.Commands.Subscriptions.OAuthViewGenerator, false)), container.Resolve <ITextSerializer>()); oAuthViewGenerator.Register(container.Resolve <ICommandHandler>("OAuthViewGenerator")); container.RegisterInstance <IProcessor>("OAuthViewGeneratorProcessor", oAuthViewGenerator); #endregion container.RegisterEventProcessor <AuthenInfoGenerator>(serviceBusConfig, Topics.Events.Subscriptions.AuthenInfoSync, false); return(container); }