Lind.DDD.ConfigConstants統(tong)一(yi)管理(li)系統(tong)配置
Lind.DDD.ConfigConstants屬于新添(tian)(tian)加(jia)的(de)(de)(de)(de)組件(jian),用(yong)來(lai)幫助我(wo)們(men)安全(quan)的(de)(de)(de)(de)進行配(pei)置(zhi)消(xiao)息的(de)(de)(de)(de)管(guan)理(li),我(wo)們(men)在(zai)開(kai)發項目時(shi),有個(ge)感覺,你的(de)(de)(de)(de)config配(pei)置(zhi)項會越(yue)來(lai)越(yue)多(duo)(duo),越(yue)來(lai)越(yue)難以閱讀,隨(sui)著(zhu)你引(yin)用(yong)的(de)(de)(de)(de)組件(jian)增(zeng)多(duo)(duo),添(tian)(tian)加(jia)更多(duo)(duo)的(de)(de)(de)(de)配(pei)置(zhi)項也(ye)難以避免,而(er)我(wo)自己(ji)的(de)(de)(de)(de)Lind.DDD框架(jia)也(ye)是(shi)如(ru)此,今天(tian)加(jia)個(ge)日志,明天(tian)加(jia)個(ge)消(xiao)息,后天(tian)又加(jia)個(ge)緩(huan)存,相應的(de)(de)(de)(de)配(pei)置(zhi)項越(yue)來(lai)越(yue)多(duo)(duo),越(yue)來(lai)越(yue)零散,如(ru)何管(guan)理(li)它(ta)成了一個(ge)大問題,這時(shi)ConfigConstants組件(jian)誕生了。它(ta)支持(chi)(chi)(chi)多(duo)(duo)種方式的(de)(de)(de)(de)持(chi)(chi)(chi)久化,有著(zhu)自己(ji)的(de)(de)(de)(de)IoC容器,而(er)項目其(qi)它(ta)IoC(如(ru)倉儲)是(shi)分開(kai)管(guan)理(li)的(de)(de)(de)(de),你可(ke)以方便的(de)(de)(de)(de)實現xml,mongodb,sql之間的(de)(de)(de)(de)數據持(chi)(chi)(chi)久化的(de)(de)(de)(de)切換!
ConfigConstants架構圖(tu)
ConfigConstants的配置實(shi)體,它能會(hui)有更多(duo),但(dan)管理只(zhi)是集(ji)中在這一個(ge)塊中
ConfigConstants的初始化,有(you)自己的IoC容器,避(bi)免與其它組件發生沖(chong)突(tu)
static object lockObj = new object(); static IUnityContainer _container = new UnityContainer(); static UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity"); static IRepository<ConfigModel> _repository; static ConfigManager() { //讀取關于配置節點的(de)反射信息ConfigManager_Unity _container.LoadConfiguration(section, "ConfigManager_Unity"); _repository = _container.Resolve<IRepository<ConfigModel>>(); } /// <summary> /// 初始化 /// </summary> public static void Install() { if (_repository.GetModel().Count() == 0) _repository.Insert(new ConfigModel { Cache_ExpireMinutes = 20, Cache_Provider = "RedisCache", Cache_RedisHost = "localhost:6379", AoP_CacheStrategy = "EntLib", Logger_Level = "DEBUG", Logger_ProjectName = "Lind.DDD", Logger_Type = "MongoDB", MongoDB_DbName = "Test", MongoDB_Host = "localhost:27017", MongoDB_UserName = string.Empty, MongoDB_Password = string.Empty, Queue_FilePath = "FileQueue", Queue_Type = "Redis", Messaging_Email_Address = "bfyxzls@sina.com", Messaging_Email_DisplayName = "bfyxzls", Messaging_Email_Host = "smtp.sina.com", Messaging_Email_Password = "123456", Messaging_Email_Port = 21, Messaging_Email_UserName = "倉儲大(da)叔", Messaging_RtxApi = "//192.168.1.8:8012/sendnotifynew.cgi?", Messaging_SMSCharset = "utf-8", Messaging_SMSGateway = "//sms.yourname.com/Msg/SendMessage", Messaging_SMSKey = "04fa25475e07669d4809d334f08fb35b", Messaging_SMSSignType = "MD5" }); }
ConfigConstants的屬性對象,直接拿到你想要的配置字(zi)段
使用(yong)之前(qian)需要對(dui)它進行配置
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
</configSections>
<unity xmlns="//schemas.microsoft.com/practices/2010/unity">
<container name="ConfigManager_Unity">
<!--泛型類型注入-->
<register type="Lind.DDD.IRepositories.IRepository`1,Lind.DDD" mapTo="Lind.DDD.Repositories.Xml.XmlRepository`1, Lind.DDD.Repositories.Xml" />
</container>
</unity>
當(dang)你使用大叔的XML進(jin)行(xing)持久化后,得到(dao)很友好(hao)的XML文檔
感謝您的閱讀!