posts - 176, comments - 240, trackbacks - 0, articles - 7

          多版本支持

          Posted on 2007-04-22 23:15 canonical 閱讀(1526) 評論(4)  編輯  收藏 所屬分類: Witrix開發(fā)平臺
             在商業(yè)產(chǎn)品開發(fā)中,如何有效的控制同一產(chǎn)品的多個衍生版本是一個非常重要的問題??蛻舻男枨笫嵌鄻踊?,差異化的。這些差異有些很小,可以通過參數(shù)配置,資源裝載,skin切換等方式加以吸收,而有些則要求對界面布局和程序邏輯等作出較大調(diào)整。Witrix開發(fā)平臺在系統(tǒng)基礎(chǔ)架構(gòu)方面為程序的客戶化提供了有力的支持。
             1. 多版本控制的關(guān)鍵首先在于系統(tǒng)良好的模塊劃分。因此Witrix平臺的beans,auth-map(權(quán)限歸約規(guī)則)等配置文件格式都支持import/include等基礎(chǔ)的分解策略,字符串資源和錯誤碼映射等支持多重定義文件,而對于sql.xml(外部sql語句定義), meta.xml, biz.xml, hbm.xml等配置文件采用分模塊動態(tài)裝載機(jī)制。
             2. 在Witrix系統(tǒng)中定義了一個特殊的custom目錄,規(guī)定了一般性的覆蓋規(guī)則:custom目錄作為系統(tǒng)根目錄的影子目錄,如果custom目錄下存在同名文件,則優(yōu)先裝載custom目錄下的文件。例如,如果custom目錄下存在/_config/my/my.biz.xml文件,同時在根目錄下也存在/_config/my/my.biz.xml文件, 則實(shí)際裝載的是custom目錄下的實(shí)現(xiàn)。這里的一個關(guān)鍵在于只有meta.xml(元數(shù)據(jù)),biz.xml(BizFlow描述文件),.lib.xml(tpl模板庫)等具有一定完整性的文件才支持custom機(jī)制,而并不是所有資源都采用custom機(jī)制。如果每一個tpl文件,css文件,js文件等都優(yōu)先從custom目錄下裝載,則很快就會出現(xiàn)循環(huán)引用,相對路徑計算將會變得非?;靵y,更重要的是我們將無法定義資源刪除語義。
             3. 元數(shù)據(jù)文件,BizFlow描述文件,PageFlow描述文件等都支持復(fù)雜的extends機(jī)制,使得我們在擴(kuò)展時只需要對于系統(tǒng)差異部分進(jìn)行描述,而不是大段拷貝代碼。
             4. tpl模板庫和sql-map機(jī)制等采用的是追加覆蓋策略。例如custom目錄下的ui.xml標(biāo)簽庫文件并不是直接覆蓋系統(tǒng)根目錄下的ui.xml文件,而是按照標(biāo)簽名進(jìn)行細(xì)粒度的覆蓋。系統(tǒng)編譯時會自動檢查覆蓋標(biāo)簽的所有參數(shù)要求和原標(biāo)簽相兼容(例如允許增加參數(shù)而不允許減少參數(shù)),確保所有引用到原標(biāo)簽的tpl代碼仍然有效。實(shí)際上整個witrix平臺多版本擴(kuò)展機(jī)制的一個設(shè)計目標(biāo)就是確保平臺主系統(tǒng)向各個分支產(chǎn)品的單向信息流動。在具體的表現(xiàn)上就是我們隨時可以拷貝平臺主系統(tǒng)覆蓋到分支產(chǎn)品的相應(yīng)目錄,所有擴(kuò)展實(shí)現(xiàn)與主系統(tǒng)實(shí)現(xiàn)保持分離狀態(tài)。當(dāng)然為了保持設(shè)計的彈性,系統(tǒng)中也定義了開關(guān)參數(shù)用來有選擇的跳過一致性檢查。
           

          Feedback

          # re: 多版本支持  回復(fù)  更多評論   

          2007-05-13 17:01 by Jie
          canonical:
          實(shí)際上整個witrix平臺多版本擴(kuò)展機(jī)制的一個設(shè)計目標(biāo)就是確保平臺主系統(tǒng)向各個分支產(chǎn)品的單向信息流動。在具體的表現(xiàn)上就是我們隨時可以拷貝平臺主系統(tǒng)覆蓋到分支產(chǎn)品的相應(yīng)目錄,所有擴(kuò)展實(shí)現(xiàn)與主系統(tǒng)實(shí)現(xiàn)保持分離狀態(tài)

          你說的這個分支版本是指不同的項目嗎?
          按你的寫的,應(yīng)該是主干版本通過擴(kuò)展,自定義等手段,以達(dá)成項目客戶化的版本。如果是這樣,那么當(dāng)主系統(tǒng)的元數(shù)據(jù)升級后是不能隨意覆蓋到項目版本的,需要按具體情況具體分析,能直接覆蓋的只能是低層的Framework

          # re: 多版本支持  回復(fù)  更多評論   

          2007-05-16 23:42 by canonical
          分支版本可以是不同的產(chǎn)品,不一定是同一產(chǎn)品的不同實(shí)施版本。在設(shè)計上的要點(diǎn)就是盡量允許主系統(tǒng)升級后可以隨意覆蓋項目版本,因?yàn)轫椖堪姹踞槍χ靼姹镜男薷氖且宰芳臃绞竭M(jìn)行的,即并不直接修改任何主版本的文件,而是寫在獨(dú)立的文件中,平臺負(fù)責(zé)把custom內(nèi)容和基礎(chǔ)版本內(nèi)容融合。如果分支版本完全需要采用新的實(shí)現(xiàn),平臺提供了完整的替換機(jī)制,同時可選擇是否校驗(yàn)接口的兼容性。

          # re: 多版本支持  回復(fù)  更多評論   

          2007-05-19 11:59 by Jie
          其實(shí)我之前的想法也是和你一樣的。認(rèn)為只要項目實(shí)施時以擴(kuò)展方式,寫在獨(dú)立的文件中,這樣就能使核心升級時,不影響到項目,但事實(shí)真是這樣嗎?
          后來我覺的,一個業(yè)務(wù)系統(tǒng)的升級,是需要劃分scope的,哪些升級,哪些不升級是需要選擇的,因?yàn)樽罱K項目可運(yùn)行版本是 (production core + Custom) 你升級了核心,就可能會影響到這個二元組的結(jié)果
          比如一個流程,主版本定義 A->B,項目實(shí)施時,擴(kuò)展這個流程A->B-C,主版本若升級后,變成A'->B',雖然它未覆蓋項目實(shí)施擴(kuò)展出來的那部分,但實(shí)際的運(yùn)行過程已經(jīng)變成A'->B'->C了。

          # re: 多版本支持  回復(fù)  更多評論   

          2007-05-19 22:35 by canonical
          沒有人認(rèn)為核心對分支完全不影響,否則核心升級就沒有任何意義。只是升級是可選擇的,而且分支可以選擇整體覆蓋,即擴(kuò)展后整個流程A->B->C都屬于分支
          主站蜘蛛池模板: 于都县| 凌云县| 肇州县| 天全县| 固阳县| 化德县| 云梦县| 万山特区| 甘孜县| 大渡口区| 息烽县| 临湘市| 巴林左旗| 邢台县| 赤水市| 克东县| 克山县| 大姚县| 清流县| 图片| 望城县| 靖州| 鄄城县| 宕昌县| 宜春市| 弥渡县| 大安市| 海阳市| 建水县| 基隆市| 饶阳县| 松阳县| 东港市| 太仆寺旗| 舒兰市| 专栏| 娱乐| 贡嘎县| 方城县| 霍山县| 福清市|