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

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 虎林市| 开江县| 明光市| 沅陵县| 湖州市| 武威市| 阿拉善右旗| 宜章县| 沁水县| 浮梁县| 稻城县| 彭山县| 太原市| 南汇区| 沁水县| 孙吴县| 霞浦县| 土默特左旗| 阿拉善右旗| 衡山县| 株洲市| 安溪县| 康乐县| 当阳市| 桃园市| 鹤庆县| 鄂尔多斯市| 和田市| 开封县| 临泉县| 贵港市| 两当县| 梨树县| 平度市| 太白县| 二连浩特市| 治县。| 德州市| 公安县| 盐津县| 临沧市|