private UnityContainer GetLocalContainer() { #region Common Settings for Web and Services var container = new UnityContainer(); container.RegisterType <IKnownSerializationTypes, CatalogEntityFactory>("catalog", new ContainerControlledLifetimeManager ()); //container.RegisterType<IKnowSerializationTypes, OrderEntityFactory>("order", new ContainerControlledLifetimeManager(), null); container.RegisterInstance <IConsumerFactory>(new DomainAssemblyScannerConsumerFactory(container)); container.RegisterType <IKnownSerializationTypes, DomainAssemblyScannerConsumerFactory>("scaned", new ContainerControlledLifetimeManager (), new InjectionConstructor (container)); container.RegisterType <IConsumerFactory, DomainAssemblyScannerConsumerFactory>(); container.RegisterType <ISystemObserver, NullSystemObserver>(); container.RegisterType <IEngineProcess, SingleThreadConsumingProcess>(); container.RegisterType <IMessageSerializer, DataContractMessageSerializer>(); container.RegisterType <IQueueWriter, InMemoryQueueWriter>(); container.RegisterType <IQueueReader, InMemoryQueueReader>(); container.RegisterType <IMessageSender, DefaultMessageSender>(new ContainerControlledLifetimeManager()); container.RegisterType <ICurrencyService, CurrencyService>(new ContainerControlledLifetimeManager()); //container.RegisterType<ICacheProvider, InMemCachingProvider>(); container.RegisterType <ICacheRepository, HttpCacheRepository>(); container.RegisterType <IOperationLogRepository, OperationLogContext>(); container.RegisterType <ILogOperationFactory, LogOperationFactory>(); //Register Sequences container.RegisterType <ISequenceService, SequenceService>(); //Register Template and Email service container.RegisterType <ITemplateService, TemplateService>(); container.RegisterType <IEmailService, NetEmailService>(); #region Interceptors // register interceptors container.RegisterType <IInterceptor, AuditChangeInterceptor>("audit"); container.RegisterType <IInterceptor, LogInterceptor>("log"); container.RegisterType <IInterceptor, EntityEventInterceptor>("events"); #endregion #region Marketing container.RegisterType <IMarketingRepository, EFMarketingRepository>(new InjectionConstructor(MarketingDatabaseName)); container.RegisterType <IMarketingEntityFactory, MarketingEntityFactory>(); container.RegisterType <IPromotionUsageProvider, PromotionUsageProvider>(); container.RegisterType <IPromotionEntryPopulate, PromotionEntryPopulate>(); #endregion //#region Search container.RegisterInstance <ISearchConnection>( new SearchConnection( ConnectionHelper.GetConnectionString("SearchConnectionString"))); container.RegisterType <ISearchService, SearchService>(new HierarchicalLifetimeManager()); container.RegisterType <ISearchIndexController, SearchIndexController>(); container.RegisterType <IBuildSettingsRepository, EFSearchRepository>(); container.RegisterType <ISearchEntityFactory, SearchEntityFactory>(new ContainerControlledLifetimeManager()); container.RegisterType <ISearchProvider, FakeSarchProvider>(); container.RegisterType <ISearchQueryBuilder, ElasticSearchQueryBuilder>(); container.RegisterType <ISearchIndexBuilder, CatalogItemIndexBuilder>("catalogitem"); //#endregion #region Assets container.RegisterType <IAssetEntityFactory, AssetEntityFactory>(); // using local storage assets container.RegisterType <IAssetRepository, FileSystemBlobAssetRepository>(); container.RegisterType <IBlobStorageProvider, FileSystemBlobAssetRepository>(); container.RegisterType <IAssetUrl, FileSystemAssetUrl>(); container.RegisterType <IAssetService, AssetService>(); #endregion #region Catalog container.RegisterType <ICatalogEntityFactory, CatalogEntityFactory>(new ContainerControlledLifetimeManager()); container.RegisterType <ICatalogRepository, EFCatalogRepository>(new InjectionConstructor(CatalogDatabaseName)); container.RegisterType <ICatalogOutlineBuilder, CatalogOutlineBuilder>(); container.RegisterType <IPricelistRepository, EFCatalogRepository>(new InjectionConstructor(CatalogDatabaseName)); container.RegisterType <ICatalogService, CatalogService>(); container.RegisterType <IPriceListAssignmentEvaluator, PriceListAssignmentEvaluator>(); container.RegisterType <IPriceListAssignmentEvaluationContext, PriceListAssignmentEvaluationContext>(); container.RegisterType <IImportJobEntityFactory, ImportJobEntityFactory>( new ContainerControlledLifetimeManager()); container.RegisterType <IImportRepository, EFImportingRepository>(); container.RegisterType <IImportService, ImportService>(); #endregion #region Customer container.RegisterType <ICustomerEntityFactory, CustomerEntityFactory>( new ContainerControlledLifetimeManager()); container.RegisterType <ICustomerRepository, EFCustomerRepository>(); container.RegisterType <ICustomerSessionService, CustomerSessionService>(); #endregion #region Inventory container.RegisterType <IInventoryEntityFactory, InventoryEntityFactory>( new ContainerControlledLifetimeManager()); container.RegisterType <IInventoryRepository, EFInventoryRepository>(); #endregion #region Order container.RegisterType <IOrderEntityFactory, OrderEntityFactory>(new ContainerControlledLifetimeManager()); var activityProvider = WorkflowConfiguration.Instance.DefaultActivityProvider; var workflowService = new WFWorkflowService(activityProvider); container.RegisterInstance <IWorkflowService>(workflowService); container.RegisterType <IOrderStateController, OrderStateController>(); container.RegisterType <IOrderRepository, EFOrderRepository>(); container.RegisterType <IShippingRepository, EFOrderRepository>(); container.RegisterType <IPaymentMethodRepository, EFOrderRepository>(); container.RegisterType <ITaxRepository, EFOrderRepository>(); container.RegisterType <ICountryRepository, EFOrderRepository>(); container.RegisterType <IOrderService, OrderService>(); #endregion #region Review container.RegisterType <IReviewEntityFactory, ReviewEntityFactory>(new ContainerControlledLifetimeManager()); container.RegisterType <IReviewRepository, EFReviewRepository>(); #endregion #region Security container.RegisterType <ISecurityEntityFactory, SecurityEntityFactory>( new ContainerControlledLifetimeManager()); container.RegisterType <ISecurityRepository, EFSecurityRepository>(); container.RegisterType <IUserSecurity, WebUserSecurity>(); container.RegisterType <IAuthenticationService, AuthenticationService>(); container.RegisterType <ISecurityService, SecurityService>(); container.RegisterType <IOAuthWebSecurity, OAuthWebSecurityWrapper>(); #endregion #region Store container.RegisterType <IStoreEntityFactory, StoreEntityFactory>(new ContainerControlledLifetimeManager()); container.RegisterType <IStoreService, StoreService>(); container.RegisterType <IStoreRepository, EFStoreRepository>(new InjectionConstructor(StoreDatabaseName)); #endregion #endregion #region MVC Helpers container.RegisterType <MarketingHelper>(); container.RegisterType <PriceListClient>(); container.RegisterType <StoreClient>(); container.RegisterType <CatalogClient>(); container.RegisterType <UserClient>(); container.RegisterType <ShippingClient>(); container.RegisterType <PromotionClient>(); container.RegisterType <DynamicContentClient>(); container.RegisterType <CountryClient>(); container.RegisterType <OrderClient>(); container.RegisterType <DisplayTemplateClient>(); container.RegisterType <SettingsClient>(); container.RegisterType <SequencesClient>(); container.RegisterType <IPaymentOption, CreditCardOption>("creditcard"); #endregion #region DynamicContent container.RegisterType <IDynamicContentService, DynamicContentService>(); container.RegisterType <IDynamicContentRepository, EFDynamicContentRepository>(); container.RegisterType <IDynamicContentEvaluator, DynamicContentEvaluator>(); #endregion #region AppConfig container.RegisterType <IAppConfigRepository, EFAppConfigRepository>(new InjectionConstructor(AppConfigDatabaseName)); container.RegisterType <IAppConfigEntityFactory, AppConfigEntityFactory>(); #endregion #region DisplayTemplates container.RegisterType <IDisplayTemplatesService, DisplayTemplatesService>(); container.RegisterType <IDisplayTemplateEvaluator, DisplayTemplateEvaluator>(); #endregion #region Events // Register event listeners container.RegisterType <IEntityEventListener, OrderChangeEventListener>("order"); container.RegisterType <IEntityEventListener, PublicReplyEventListener>("customer"); container.RegisterType <IEntityEventListener, CaseChangeEventListener>("customer"); container.RegisterType <IEntityEventListener, ReviewApprovedEventListener>("review"); container.RegisterType <IEntityEventContext, EntityEventContext>(new ContainerControlledLifetimeManager()); #endregion #region Globalization //For using database resources container.RegisterType <IElementRepository, DatabaseElementRepository>(); //For using Local Resources //container.RegisterInstance<IElementRepository>(new CacheElementRepository(new XmlElementRepository())); #endregion #region OutputCache container.RegisterType <IKeyBuilder, KeyBuilder>(); container.RegisterType <IKeyGenerator, KeyGenerator>(); container.RegisterType <IDonutHoleFiller, DonutHoleFiller>(); container.RegisterType <ICacheHeadersHelper, CacheHeadersHelper>(); container.RegisterType <ICacheSettingsManager, CacheSettingsManager>(); container.RegisterType <IReadWriteOutputCacheManager, OutputCacheManager>(); container.RegisterInstance <IActionSettingsSerialiser>(new EncryptingActionSettingsSerialiser(new ActionSettingsSerialiser(), new Encryptor())); container.RegisterType <ICacheService, CacheService>(); #endregion container.RegisterInstance <IUnityContainer>(container); return(container); }
private static UnityContainer GetLocalContainer() { var container = new UnityContainer(); container.RegisterInstance <IUnityContainer>(container); container.RegisterType <IKnownSerializationTypes, CatalogEntityFactory>("catalog", new ContainerControlledLifetimeManager()); container.RegisterInstance <IConsumerFactory>(new DomainAssemblyScannerConsumerFactory(container)); container.RegisterType <IKnownSerializationTypes, DomainAssemblyScannerConsumerFactory>("scaned", new ContainerControlledLifetimeManager(), new InjectionConstructor(container)); container.RegisterType <IConsumerFactory, DomainAssemblyScannerConsumerFactory>(); container.RegisterType <ISystemObserver, NullSystemObserver>(); container.RegisterType <IEngineProcess, SingleThreadConsumingProcess>(); container.RegisterType <IMessageSerializer, DataContractMessageSerializer>(); container.RegisterType <IQueueWriter, InMemoryQueueWriter>(); container.RegisterType <IQueueReader, InMemoryQueueReader>(); container.RegisterType <IMessageSender, DefaultMessageSender>(new ContainerControlledLifetimeManager()); container.RegisterType <ISearchService, SearchService>(); container.RegisterType <ISearchProvider, ElasticSearchProvider>(); container.RegisterType <ISearchQueryBuilder, ElasticSearchQueryBuilder>(); container.RegisterType <ISearchIndexBuilder, CatalogItemIndexBuilder>("catalogitem"); container.RegisterType <IOperationLogRepository, OperationLogContext>(); container.RegisterType <ILogOperationFactory, LogOperationFactory>(); container.RegisterType <IBuildSettingsRepository, EFSearchRepository>(); container.RegisterType <ISearchEntityFactory, SearchEntityFactory>(new ContainerControlledLifetimeManager()); container.RegisterType <ISearchIndexController, SearchIndexController>(); container.RegisterType <ICacheRepository, HttpCacheRepository>(); #region Marketing container.RegisterType <IMarketingRepository, EFMarketingRepository>(); container.RegisterType <IMarketingEntityFactory, MarketingEntityFactory>(); container.RegisterType <IPromotionUsageProvider, PromotionUsageProvider>(); container.RegisterType <IPromotionEntryPopulate, PromotionEntryPopulate>(); #endregion #region Catalog container.RegisterType <ICatalogEntityFactory, CatalogEntityFactory>(new ContainerControlledLifetimeManager()); container.RegisterType <ICatalogRepository, EFCatalogRepository>(); container.RegisterType <IPricelistRepository, EFCatalogRepository>(); container.RegisterType <ICatalogService, CatalogService>(); container.RegisterType <IPriceListAssignmentEvaluator, PriceListAssignmentEvaluator>(); container.RegisterType <IPriceListAssignmentEvaluationContext, PriceListAssignmentEvaluationContext>(); #endregion #region Customer container.RegisterType <ICustomerEntityFactory, CustomerEntityFactory>(new ContainerControlledLifetimeManager()); container.RegisterType <ICustomerRepository, EFCustomerRepository>(); container.RegisterType <ICustomerSessionService, CustomerSessionService>(); #endregion #region Inventory container.RegisterType <IInventoryEntityFactory, InventoryEntityFactory>(new ContainerControlledLifetimeManager()); container.RegisterType <IInventoryRepository, EFInventoryRepository>(); #endregion #region Order container.RegisterType <IOrderEntityFactory, OrderEntityFactory>(new ContainerControlledLifetimeManager()); var activityProvider = WorkflowConfiguration.Instance.DefaultActivityProvider; var workflowService = new WFWorkflowService(activityProvider); container.RegisterInstance <IWorkflowService>(workflowService); container.RegisterType <IOrderRepository, EFOrderRepository>(); container.RegisterType <ITaxRepository, EFOrderRepository>(); container.RegisterType <IShippingRepository, EFOrderRepository>(); container.RegisterType <IPaymentMethodRepository, EFOrderRepository>(); container.RegisterType <ICountryRepository, EFOrderRepository>(); container.RegisterType <IOrderService, OrderService>(); #endregion #region Store container.RegisterType <IStoreEntityFactory, StoreEntityFactory>(new ContainerControlledLifetimeManager()); container.RegisterType <IStoreService, StoreService>(); container.RegisterType <IStoreRepository, EFStoreRepository>(); #endregion return(container); }
/// <summary>Registers the type mappings with the Unity container.</summary> /// <param name="container">The unity container to configure.</param> /// <remarks>There is no need to register concrete types such as controllers or API controllers (unless you want to /// change the defaults), as Unity allows resolving a concrete type even if it was not previously registered.</remarks> public static void RegisterTypes(IUnityContainer container) { // NOTE: To load from web.config uncomment the line below. Make sure to add a Microsoft.Practices.Unity.Configuration to the using statements. // container.LoadConfiguration(); #region Common Settings for Web and Services // this section is common for both web application and services application and should be kept identical var isAzure = AzureCommonHelper.IsAzureEnvironment(); container.RegisterType <IKnownSerializationTypes, CatalogEntityFactory>("catalog", new ContainerControlledLifetimeManager ()); //container.RegisterType<IKnowSerializationTypes, OrderEntityFactory>("order", new ContainerControlledLifetimeManager(), null); container.RegisterInstance <IConsumerFactory>(new DomainAssemblyScannerConsumerFactory(container)); container.RegisterType <IKnownSerializationTypes, DomainAssemblyScannerConsumerFactory>("scaned", new ContainerControlledLifetimeManager (), new InjectionConstructor (container)); container.RegisterType <IConsumerFactory, DomainAssemblyScannerConsumerFactory>(); container.RegisterType <ISystemObserver, NullSystemObserver>(); container.RegisterType <IEngineProcess, SingleThreadConsumingProcess>(); container.RegisterType <IMessageSerializer, DataContractMessageSerializer>(); if (isAzure) { container.RegisterType <IQueueWriter, AzureQueueWriter>(); container.RegisterType <IQueueReader, AzureQueueReader>(); } else { container.RegisterType <IQueueWriter, InMemoryQueueWriter>(); container.RegisterType <IQueueReader, InMemoryQueueReader>(); } container.RegisterType <IMessageSender, DefaultMessageSender>(new ContainerControlledLifetimeManager()); container.RegisterType <ICurrencyService, CurrencyService>(new ContainerControlledLifetimeManager()); //container.RegisterType<ICacheProvider, InMemCachingProvider>(); container.RegisterType <ICacheRepository, HttpCacheRepository>(); container.RegisterType <IOperationLogRepository, OperationLogContext>(new PerRequestLifetimeManager()); container.RegisterType <ILogOperationFactory, LogOperationFactory>(); //Register Sequences container.RegisterType <ISequenceService, SequenceService>(); //Register Template and Email service container.RegisterType <ITemplateService, TemplateService>(); if (isAzure) { container.RegisterType <IEmailService, AzureEmailService>(); } else { container.RegisterType <IEmailService, NetEmailService>(); } container.RegisterType <ICatalogOutlineBuilder, CatalogOutlineBuilder>(); #region Interceptors // register interceptors container.RegisterType <IInterceptor, AuditChangeInterceptor>("audit"); container.RegisterType <IInterceptor, LogInterceptor>("log"); container.RegisterType <IInterceptor, EntityEventInterceptor>("events"); #endregion #region Marketing container.RegisterType <IMarketingRepository, EFMarketingRepository>(new PerRequestLifetimeManager()); container.RegisterType <IMarketingEntityFactory, MarketingEntityFactory>(); container.RegisterType <IPromotionUsageProvider, PromotionUsageProvider>(); container.RegisterType <IPromotionEntryPopulate, PromotionEntryPopulate>(); //Register prmotion evaluation policies container.RegisterType <IEvaluationPolicy, GlobalExclusivityPolicy>("global"); container.RegisterType <IEvaluationPolicy, GroupExclusivityPolicy>("group"); container.RegisterType <IEvaluationPolicy, CartSubtotalRewardCombinePolicy>("cart"); container.RegisterType <IEvaluationPolicy, ShipmentRewardCombinePolicy>("shipment"); container.RegisterType <IPromotionEvaluator, DefaultPromotionEvaluator>(); #endregion #region Search var searchConnection = new SearchConnection(ConnectionHelper.GetConnectionString("SearchConnectionString")); container.RegisterInstance <ISearchConnection>(searchConnection); container.RegisterType <ISearchService, SearchService>(new HierarchicalLifetimeManager()); container.RegisterType <ISearchIndexController, SearchIndexController>(); container.RegisterType <IBuildSettingsRepository, EFSearchRepository>(new PerRequestLifetimeManager()); container.RegisterType <ISearchEntityFactory, SearchEntityFactory>(new ContainerControlledLifetimeManager()); container.RegisterType <ISearchIndexBuilder, CatalogItemIndexBuilder>("catalogitem"); // If provider specified as lucene, use lucene libraries, otherwise use default, which is elastic search if (string.Equals(searchConnection.Provider, SearchProviders.Lucene.ToString(), StringComparison.OrdinalIgnoreCase)) { // Lucene Search implementation container.RegisterType <ISearchProvider, LuceneSearchProvider>(); container.RegisterType <ISearchQueryBuilder, LuceneSearchQueryBuilder>(); } else if (string.Equals(searchConnection.Provider, SearchProviders.AzureSearch.ToString(), StringComparison.OrdinalIgnoreCase)) { // Azure Search implementation container.RegisterType <ISearchProvider, AzureSearchProvider>(); container.RegisterType <ISearchQueryBuilder, AzureSearchQueryBuilder>(); } else { container.RegisterType <ISearchProvider, ElasticSearchProvider>(); container.RegisterType <ISearchQueryBuilder, ElasticSearchQueryBuilder>(); } #endregion #region Assets container.RegisterType <IAssetEntityFactory, AssetEntityFactory>(); // using azure assets if (isAzure) { container.RegisterType <IAssetRepository, AzureBlobAssetRepository>(); container.RegisterType <IBlobStorageProvider, AzureBlobAssetRepository>(); container.RegisterType <IAssetUrl, AzureBlobAssetRepository>(); } else { // using local storage assets container.RegisterType <IAssetRepository, FileSystemBlobAssetRepository>(); container.RegisterType <IBlobStorageProvider, FileSystemBlobAssetRepository>(); container.RegisterType <IAssetUrl, FileSystemAssetUrl>(); } container.RegisterType <IAssetService, AssetService>(); #endregion #region Catalog container.RegisterType <ICatalogEntityFactory, CatalogEntityFactory>(new ContainerControlledLifetimeManager()); container.RegisterType <ICatalogRepository, EFCatalogRepository>(new PerRequestLifetimeManager()); container.RegisterType <IPricelistRepository, EFCatalogRepository>(new PerRequestLifetimeManager()); container.RegisterType <ICatalogService, CatalogService>(); container.RegisterType <IPriceListAssignmentEvaluator, PriceListAssignmentEvaluator>(); container.RegisterType <IPriceListAssignmentEvaluationContext, PriceListAssignmentEvaluationContext>(); container.RegisterType <IImportJobEntityFactory, ImportJobEntityFactory>( new ContainerControlledLifetimeManager()); container.RegisterType <IImportRepository, EFImportingRepository>(new PerRequestLifetimeManager()); container.RegisterType <IImportService, ImportService>(); #endregion #region Customer container.RegisterType <ICustomerEntityFactory, CustomerEntityFactory>( new ContainerControlledLifetimeManager()); container.RegisterType <ICustomerRepository, EFCustomerRepository>(new PerRequestLifetimeManager()); container.RegisterType <ICustomerSessionService, CustomerSessionService>(); #endregion #region Inventory container.RegisterType <IInventoryEntityFactory, InventoryEntityFactory>( new ContainerControlledLifetimeManager()); container.RegisterType <IInventoryRepository, EFInventoryRepository>(new PerRequestLifetimeManager()); #endregion #region Order container.RegisterType <IOrderEntityFactory, OrderEntityFactory>(new ContainerControlledLifetimeManager()); var activityProvider = WorkflowConfiguration.Instance.DefaultActivityProvider; var workflowService = new WFWorkflowService(activityProvider); container.RegisterInstance <IWorkflowService>(workflowService); container.RegisterType <IOrderStateController, OrderStateController>(); container.RegisterType <IOrderRepository, EFOrderRepository>(new PerRequestLifetimeManager()); container.RegisterType <IShippingRepository, EFOrderRepository>(new PerRequestLifetimeManager()); container.RegisterType <IPaymentMethodRepository, EFOrderRepository>(new PerRequestLifetimeManager()); container.RegisterType <ITaxRepository, EFOrderRepository>(new PerRequestLifetimeManager()); container.RegisterType <ICountryRepository, EFOrderRepository>(new PerRequestLifetimeManager()); container.RegisterType <IOrderService, OrderService>(); #endregion #region Review container.RegisterType <IReviewEntityFactory, ReviewEntityFactory>(new ContainerControlledLifetimeManager()); container.RegisterType <IReviewRepository, EFReviewRepository>(new PerRequestLifetimeManager()); #endregion #region Security container.RegisterType <ISecurityEntityFactory, SecurityEntityFactory>( new ContainerControlledLifetimeManager()); container.RegisterType <ISecurityRepository, EFSecurityRepository>(new PerRequestLifetimeManager()); container.RegisterType <IUserSecurity, WebUserSecurity>(); container.RegisterType <IAuthenticationService, AuthenticationService>(); container.RegisterType <ISecurityService, SecurityService>(); container.RegisterType <IOAuthWebSecurity, OAuthWebSecurityWrapper>(); #endregion #region Store container.RegisterType <IStoreEntityFactory, StoreEntityFactory>(new ContainerControlledLifetimeManager()); container.RegisterType <IStoreService, StoreService>(); container.RegisterType <IStoreRepository, EFStoreRepository>(new PerRequestLifetimeManager()); #endregion #region Reporting container.RegisterType <IReportingService, ReportingService>(); #endregion #endregion #region MVC Helpers container.RegisterType <MarketingHelper>(); container.RegisterType <PriceListClient>(); container.RegisterType <StoreClient>(); container.RegisterType <CatalogClient>(); container.RegisterType <UserClient>(); container.RegisterType <ShippingClient>(); container.RegisterType <PromotionClient>(); container.RegisterType <DynamicContentClient>(); container.RegisterType <CountryClient>(); container.RegisterType <OrderClient>(); container.RegisterType <DisplayTemplateClient>(); container.RegisterType <SettingsClient>(); container.RegisterType <SequencesClient>(); container.RegisterType <SeoKeywordClient>(new PerRequestLifetimeManager()); container.RegisterType <ReviewClient>(); container.RegisterType <IPaymentOption, CreditCardOption>("creditcard"); container.RegisterType <ISearchFilterService, StoreSearchFilterService>(new PerRequestLifetimeManager()); #endregion #region DynamicContent container.RegisterType <IDynamicContentService, DynamicContentService>(); container.RegisterType <IDynamicContentRepository, EFDynamicContentRepository>(new PerRequestLifetimeManager()); container.RegisterType <IDynamicContentEvaluator, DynamicContentEvaluator>(); #endregion #region AppConfig container.RegisterType <IAppConfigRepository, EFAppConfigRepository>(new PerRequestLifetimeManager()); container.RegisterType <IAppConfigEntityFactory, AppConfigEntityFactory>(new ContainerControlledLifetimeManager()); #endregion #region DisplayTemplates container.RegisterType <IDisplayTemplatesService, DisplayTemplatesService>(); container.RegisterType <IDisplayTemplateEvaluator, DisplayTemplateEvaluator>(); #endregion #region Events // Register event listeners container.RegisterType <IEntityEventListener, OrderChangeEventListener>("order"); container.RegisterType <IEntityEventListener, PublicReplyEventListener>("customer"); container.RegisterType <IEntityEventListener, CaseChangeEventListener>("customer"); container.RegisterType <IEntityEventListener, ReviewApprovedEventListener>("review"); container.RegisterType <IEntityEventContext, EntityEventContext>(new PerRequestLifetimeManager()); #endregion #region Jobs container.RegisterType <GenerateSearchIndexWork>(); container.RegisterType <ProcessOrderStatusWork>(); container.RegisterType <ProcessSearchIndexWork>(); #endregion #region Globalization //For using database resources container.RegisterType <IElementRepository, DatabaseElementRepository>(new PerRequestLifetimeManager()); //For using Local Resources //container.RegisterInstance<IElementRepository>(new CacheElementRepository(new XmlElementRepository())); #endregion #region OutputCache container.RegisterType <IKeyBuilder, KeyBuilder>(new PerRequestLifetimeManager()); container.RegisterType <IKeyGenerator, KeyGenerator>(new PerRequestLifetimeManager()); container.RegisterType <IDonutHoleFiller, DonutHoleFiller>(new PerRequestLifetimeManager()); container.RegisterType <ICacheHeadersHelper, CacheHeadersHelper>(new PerRequestLifetimeManager()); container.RegisterType <ICacheSettingsManager, CacheSettingsManager>(new PerRequestLifetimeManager()); container.RegisterType <IReadWriteOutputCacheManager, OutputCacheManager>(new PerRequestLifetimeManager()); container.RegisterInstance <IActionSettingsSerialiser>(new EncryptingActionSettingsSerialiser(new ActionSettingsSerialiser(), new Encryptor())); container.RegisterType <ICacheService, CacheService>(); #endregion container.RegisterInstance(container); }
public static IUnityContainer Initialize() { #region Common Settings for Web and Services // this section is common for both web application and services application and should be kept identical var container = new UnityContainer(); container.RegisterType <IKnownSerializationTypes, CatalogEntityFactory>("catalog", new ContainerControlledLifetimeManager()); //container.RegisterType<IKnowSerializationTypes, OrderEntityFactory>("order", new ContainerControlledLifetimeManager(), null); container.RegisterInstance <IConsumerFactory>(new DomainAssemblyScannerConsumerFactory(container)); container.RegisterType <IKnownSerializationTypes, DomainAssemblyScannerConsumerFactory>("scaned", new ContainerControlledLifetimeManager(), new InjectionConstructor(container)); container.RegisterType <IConsumerFactory, DomainAssemblyScannerConsumerFactory>(); container.RegisterType <ISystemObserver, NullSystemObserver>(); container.RegisterType <IEngineProcess, SingleThreadConsumingProcess>(); container.RegisterType <IMessageSerializer, DataContractMessageSerializer>(); container.RegisterType <IQueueWriter, InMemoryQueueWriter>(); container.RegisterType <IQueueReader, InMemoryQueueReader>(); container.RegisterType <IMessageSender, DefaultMessageSender>(new ContainerControlledLifetimeManager()); container.RegisterType <ICurrencyService, CurrencyService>(new ContainerControlledLifetimeManager()); //container.RegisterType<ICacheProvider, InMemCachingProvider>(); container.RegisterType <ICacheRepository, HttpCacheRepository>(); container.RegisterType <ILogOperationFactory, LogOperationFactory>(); container.RegisterType <IOperationLogRepository, OperationLogContext>(); #region Marketing container.RegisterType <IMarketingRepository, EFMarketingRepository>(); container.RegisterType <IMarketingEntityFactory, MarketingEntityFactory>(); container.RegisterType <IPromotionUsageProvider, PromotionUsageProvider>(); container.RegisterType <IPromotionEntryPopulate, PromotionEntryPopulate>(); container.RegisterType <IDynamicContentRepository, EFDynamicContentRepository>(); #endregion #region Search var searchConnection = new SearchConnection(ConnectionHelper.GetConnectionString("SearchConnectionString")); container.RegisterInstance <ISearchConnection>(searchConnection); container.RegisterType <ISearchService, SearchService>(new HierarchicalLifetimeManager()); container.RegisterType <ISearchIndexController, SearchIndexController>(); container.RegisterType <IBuildSettingsRepository, EFSearchRepository>(); container.RegisterType <ISearchEntityFactory, SearchEntityFactory>(new ContainerControlledLifetimeManager()); container.RegisterType <ISearchIndexBuilder, CatalogItemIndexBuilder>("catalogitem"); // If provider specified as lucene, use lucene libraries, otherwise use default, which is elastic search if (string.Equals(searchConnection.Provider, SearchProviders.Lucene.ToString(), StringComparison.OrdinalIgnoreCase)) { // Lucene Search implementation container.RegisterType <ISearchProvider, LuceneSearchProvider>(); container.RegisterType <ISearchQueryBuilder, LuceneSearchQueryBuilder>(); } else { container.RegisterType <ISearchProvider, ElasticSearchProvider>(); container.RegisterType <ISearchQueryBuilder, ElasticSearchQueryBuilder>(); } #endregion #region AppConfig container.RegisterType <IAppConfigEntityFactory, AppConfigEntityFactory>(); container.RegisterType <IAppConfigRepository, EFAppConfigRepository>(); #endregion #region Assets container.RegisterType <IAssetEntityFactory, AssetEntityFactory>(); container.RegisterType <IAssetRepository, FileSystemBlobAssetRepository>(); container.RegisterType <IBlobStorageProvider, FileSystemBlobAssetRepository>(); container.RegisterType <IAssetUrl, FileSystemAssetUrl>(); #endregion #region Catalog container.RegisterType <ICatalogEntityFactory, CatalogEntityFactory>(new ContainerControlledLifetimeManager()); container.RegisterType <ICatalogRepository, EFCatalogRepository>(); container.RegisterType <ICatalogOutlineBuilder, CatalogOutlineBuilder>(); container.RegisterType <IPricelistRepository, EFCatalogRepository>(); container.RegisterType <ICatalogService, CatalogService>(); container.RegisterType <IPriceListAssignmentEvaluator, PriceListAssignmentEvaluator>(); container.RegisterType <IPriceListAssignmentEvaluationContext, PriceListAssignmentEvaluationContext>(); container.RegisterType <IImportJobEntityFactory, ImportJobEntityFactory>( new ContainerControlledLifetimeManager()); container.RegisterType <IImportRepository, EFImportingRepository>(); container.RegisterType <IImportService, ImportService>(); #endregion //#region Customer //container.RegisterType<ICustomerEntityFactory, CustomerEntityFactory>(new ContainerControlledLifetimeManager()); //container.RegisterType<ICustomerRepository, EFCustomerRepository>(); //#endregion //#region Inventory //container.RegisterType<IInventoryEntityFactory, InventoryEntityFactory>(new ContainerControlledLifetimeManager()); //#endregion #region Order container.RegisterType <IOrderEntityFactory, OrderEntityFactory>(new ContainerControlledLifetimeManager()); var activityProvider = WorkflowConfiguration.Instance.DefaultActivityProvider; var workflowService = new WFWorkflowService(activityProvider); container.RegisterInstance <IWorkflowService>(workflowService); container.RegisterType <IOrderStateController, OrderStateController>(); container.RegisterType <IOrderRepository, EFOrderRepository>(); container.RegisterType <IShippingRepository, EFOrderRepository>(); container.RegisterType <IPaymentMethodRepository, EFOrderRepository>(); container.RegisterType <ITaxRepository, EFOrderRepository>(); container.RegisterType <ICountryRepository, EFOrderRepository>(); container.RegisterType <IOrderService, OrderService>(); #endregion #region Customer container.RegisterType <ICustomerEntityFactory, CustomerEntityFactory>( new ContainerControlledLifetimeManager()); container.RegisterType <ICustomerRepository, EFCustomerRepository>(); container.RegisterType <ICustomerSessionService, CustomerSessionService>(); #endregion #region Review container.RegisterType <IReviewEntityFactory, ReviewEntityFactory>(new ContainerControlledLifetimeManager()); container.RegisterType <IReviewRepository, EFReviewRepository>(); #endregion #region Security container.RegisterType <ISecurityEntityFactory, SecurityEntityFactory>(new ContainerControlledLifetimeManager()); ////container.RegisterType<ISecurityService, SecurityService>(); container.RegisterType <ISecurityRepository, EFSecurityRepository>(); #endregion #region Store container.RegisterType <IStoreEntityFactory, StoreEntityFactory>(new ContainerControlledLifetimeManager()); container.RegisterType <IStoreService, StoreService>(); container.RegisterType <IStoreRepository, EFStoreRepository>(); #endregion #endregion container.RegisterType <GenerateSearchIndexWork>(); container.RegisterType <ProcessOrderStatusWork>(); container.RegisterType <ProcessSearchIndexWork>(); return(container); }