統(tǒng)一、動態(tài)的管理系統(tǒng)配置屬性
每個系統(tǒng)中都會有需要配置的屬性,而通常這些屬性的配置都會是分散式的管理,而且很多時候都是不支持動態(tài),在實(shí)現(xiàn)這些屬性的管理(新增、編輯、刪除、保存等)時總是要不斷的做重復(fù)的工作,如果框架中能提供一個這樣的基礎(chǔ)設(shè)施那么對于系統(tǒng)的配置屬性管理來說就會比較好了,這樣的話系統(tǒng)中所有的屬性配置就可以采用統(tǒng)一的方式進(jìn)行配置、獲取、管理和動態(tài)的更新了,如果能動態(tài)的管理系統(tǒng)配置屬性的話,簡單的動態(tài)改變系統(tǒng)行為也就自然的可以實(shí)現(xiàn)了。
要實(shí)現(xiàn)一個這樣統(tǒng)一的、動態(tài)的管理系統(tǒng)配置屬性的功能,首先自然是要提供一個統(tǒng)一的屬性配置管理的服務(wù),通過此服務(wù)統(tǒng)一的獲取配置屬性、管理配置屬性、存儲配置屬性,在這些屬性被修改后怎么去通知需要知道屬性修改了的服務(wù)呢,這個時候可以用一個典型的事件訂閱/發(fā)布的模式來完成,需要訂閱的服務(wù)就可以通過實(shí)現(xiàn)訂閱的接口來獲取到屬性被修改的通知,自然,訂閱的服務(wù)需要告訴那個統(tǒng)一管理屬性的服務(wù),同時還要告訴它你需要訂閱什么主題,這樣的話就只有當(dāng)你所關(guān)心的屬性被修改的情況下才會通知到你,在得到屬性被改動的通知下可以做出相應(yīng)的反應(yīng)。
屬性配置管理的服務(wù)的代碼可能會類似如此:





















??????????????? private ConfigurationAdmin admin;
??????????????? public void setAdmin(ConfigurationAdmin admin){
???????????????????this.admin=admin;
??????????????? }













這是統(tǒng)一、動態(tài)的管理系統(tǒng)配置屬性的一種簡單的實(shí)現(xiàn)方案,而其實(shí)系統(tǒng)的配置屬性的管理會比這更復(fù)雜很多,象有些時候還需要支持遠(yuǎn)程的管理等等,但統(tǒng)一、動態(tài)的管理系統(tǒng)配置屬性能給系統(tǒng)帶來很大的好處,甚至可以使得動態(tài)的改變系統(tǒng)行為也得到實(shí)現(xiàn)。
如果你想有更好的統(tǒng)一、動態(tài)管理系統(tǒng)配置屬性的解決方案,可以參見OSGI R4中的Configuration Admin Service,它除了實(shí)現(xiàn)我之前提及的需求以外,還能提供其他更多的功能,象我所說的遠(yuǎn)程管理也是支持,在OSGI中使用會稍有不同,但更好用,但無論你是否使用OSGI,參考它來實(shí)現(xiàn)自己的一個統(tǒng)一、動態(tài)管理系統(tǒng)配置屬性的功能還是可以的......
posted on 2006-08-24 20:18 BlueDavy 閱讀(3438) 評論(2) 編輯 收藏 所屬分類: 系統(tǒng)設(shè)計 、OSGi、SOA、SCA