統(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ù)的代碼可能會類似如此:

          public ? interface ?ConfigurationAdmin {

          ????????
          public ?Configure?getConfigure(String?topic);

          ????????
          public ? void ?saveOrUpdate(Configure?configure);

          ????????
          public ? void ?remove(Configure?configure);

          ????????
          public ?List?getConfigures();

          ????????
          public ? void ?addHandler(String topic,ConfigurationHandler?handler);

          ????????
          public ? void ?removeHandler(String topic,ConfigurationHandler?handler);

          }
          需要知道屬性變更的那個類看起來可能會類似如此:
          public?class?AdminServiceImpl?implements?AdminService,ConfigurationHandler{

          ??????????????? private ConfigurationAdmin admin;

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

          ?????????
          public?void?init(){
          ??????????????admin.addHandler(
          "ADMINSERVICE",this);
          ?????????}


          ?????????
          public?void?update(Configure?config){
          ???????????????
          //?屬性變化后做出相應(yīng)的動作
          ?????????}


          }

          這是統(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

          評論

          # re: 統(tǒng)一、動態(tài)的管理系統(tǒng)配置屬性 2006-08-25 08:35 Coffee and Tea

          需要考慮線程問題。  回復(fù)  更多評論   

          # re: 統(tǒng)一、動態(tài)的管理系統(tǒng)配置屬性 2008-06-13 15:03 網(wǎng)站建設(shè)

          線程問題,現(xiàn)在早已解決。  回復(fù)  更多評論   

          公告

           









          feedsky
          抓蝦
          google reader
          鮮果

          導(dǎo)航

          <2006年8月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統(tǒng)計

          隨筆分類

          隨筆檔案

          文章檔案

          Blogger's

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宜丰县| 威远县| 南投县| 波密县| 封开县| 乐清市| 门源| 宜章县| 敦煌市| 东乡族自治县| 休宁县| 双牌县| 宜昌市| 江津市| 古田县| 东台市| 涞水县| 宜川县| 湖南省| 平凉市| 河南省| 武城县| 龙江县| 工布江达县| 大姚县| 灌南县| 乌鲁木齐市| 曲靖市| 辽阳市| 察雅县| 朝阳区| 南召县| 江川县| 历史| 洪湖市| 叶城县| 庐江县| 南昌市| 安丘市| 尤溪县| 北票市|