示例#1
0
        /// <summary>
        /// 框架初始化入口
        /// </summary>
        /// <param name="serviceInstall"></param>
        /// <param name="appConfig">注意:是在日志和配置模块初始化前调用的</param>
        public static void Initialize(Action <IServiceContainer> serviceInstall, Action <HostAppOptions> appConfig = null)
        {
            //IOC init
            var serviceContainer = new SimpleServiceContainer();

            ServiceLocator.SetServiceContainer(serviceContainer);

            //App中配置
            _preConfigAction?.Invoke(serviceContainer.Container);
            appConfig?.Invoke(HostApp.Options);

            //SimpleInjector调用GetInstance后,就无法再Register!这里只能手动创建。
            LogService.SetProvider(new Log4netIntegration(HostApp.Options.AppName));
            CentralConfiguration.SetProvider <ConsulConfigProvider>(new AppSettingProvider());
            EntMapper.SetProvider(new ObjMapster());

            //Reg basic func implement.
            serviceContainer.Register <IJsonSerializer, JsonSerializer>(LifeStyleType.Singleton);
            if (!HostApp.Options.IsStandalone)
            {
                serviceContainer.Register <ICacheProvider, RedisCache>(LifeStyleType.Singleton);
                serviceContainer.Register <IDistributedSrvProvider, RedisDistSrvProvider>(LifeStyleType.Singleton);

                //不是Dev环境则启用集中日志(因为读取了配置,故放在配置初始化后执行)
                if (!CentralConfiguration.IsEnvDev())
                {
                    Log4netIntegration.AddCentralLog();
                }
            }

            //最后执行应用初始化,确保日志、配置等实现都已注册!
            serviceInstall?.Invoke(serviceContainer);
        }
示例#2
0
 public ConsulConfigProvider()
 {
     if (CentralConfiguration.IsEnvDev())
     {
         LogService.DebugFormat("DeployEnv:{0}, Consul address:{1}", CentralConfiguration.DeployEnv, _client.Config.Address);
     }
 }