最近一直在學(xué)習(xí)OSGI方面的知識(shí)。買了一本《OSGI原理和最佳實(shí)踐》,可是還沒(méi)有到。遺憾的是,OSGI目前的幾個(gè)開(kāi)源框架只支持Java,對(duì)C和C++都不支持的。可惜我們公司目前主要的開(kāi)發(fā)語(yǔ)言還是c和c++,即便是引進(jìn)OSGI,所得的好處范圍有限。而我對(duì)松散耦合的模塊化開(kāi)發(fā)向往已久。查了一下OSGI對(duì)C++支持的好像是有一個(gè)開(kāi)源項(xiàng)目,不過(guò)好像應(yīng)用范圍很小。而SCA標(biāo)準(zhǔn)中是有對(duì)C++實(shí)現(xiàn)模型的支持的,但是幾個(gè)開(kāi)源的框架目前還只支持JAVA。

            昨天看了丁亮的轉(zhuǎn)載的一篇博客《C/C++:構(gòu)建你自己的插件框架 》,原文的鏈接:http://blog.chinaunix.net/u/12783/showart_662937.html 。看了一下里面講的方法,自己倒是可以實(shí)現(xiàn)。所以有了構(gòu)建自己的c/c++插件開(kāi)發(fā)框架的想法。今天先寫一下初步的設(shè)想。

          C/C++插件開(kāi)發(fā)框架的要素

            BlueDavy有一篇介紹服務(wù)框架要素的文章(鏈接:http://www.aygfsteel.com/BlueDavy/archive/2009/08/28/172259.html )。我的插件框架也要考慮、解決以下的幾個(gè)問(wèn)題:

            1、如何注冊(cè)插件;

            2、如何調(diào)用插件;

            3、如何測(cè)試插件;

            4、插件的生命周期管理;

            5、插件的管理和維護(hù);

            6、插件的組裝;

            7、插件的出錯(cuò)處理;

            8、服務(wù)事件的廣播和訂閱(這個(gè)目前還沒(méi)有考慮要支持);

            其中有幾個(gè)點(diǎn)很重要:1)插件框架要能夠使模塊松散耦合,做到真正的面向接口編程;2)框架要支持自動(dòng)化測(cè)試:包括單元測(cè)試,集成測(cè)試;3)簡(jiǎn)化部署;4)支持分布式,模塊可以調(diào)用框架外的插件。

          采用的技術(shù)
            插件框架要解決的一個(gè)問(wèn)題就是插件的動(dòng)態(tài)加載能力。這里可以使用共享庫(kù)的動(dòng)態(tài)加載技術(shù)。當(dāng)然,為了簡(jiǎn)單,第一步只考慮做一個(gè)linux下的插件框架。

            總體結(jié)構(gòu)

            框架的總體結(jié)構(gòu)上,參考OSGI的“微內(nèi)核+系統(tǒng)插件+應(yīng)用插件”結(jié)構(gòu)。這里要好好考慮一下把什么做在內(nèi)核中。關(guān)于微內(nèi)核結(jié)構(gòu),以前我做個(gè)一個(gè)微內(nèi)核流程引擎,會(huì)在后面有時(shí)間和大家分享。

            框架中模塊間的數(shù)據(jù)傳送,有兩種解決方法:一是普元采用的XML數(shù)據(jù)總線的做法。優(yōu)點(diǎn)是擴(kuò)展性好,可讀性好。但是速度有些慢。二是采用我熟悉的信元流。優(yōu)點(diǎn)的效率高,訪問(wèn)方便,但是可讀性差一點(diǎn),另外跨框架的數(shù)據(jù)傳送,需要考慮網(wǎng)絡(luò)字節(jié)序的問(wèn)題。

            對(duì)于框架間的通信,通過(guò)系統(tǒng)插件封裝,對(duì)應(yīng)用插件隱藏通信細(xì)節(jié)。

                部署

                努力做到一鍵式部署。

          posts - 19, comments - 0, trackbacks - 0, articles - 0

          Copyright © 常高偉

          主站蜘蛛池模板: 体育| 隆尧县| 富裕县| 合江县| 安泽县| 涿鹿县| 德格县| 辽源市| 泸水县| 北票市| 武穴市| 镇安县| 辛集市| 阿拉善左旗| 松滋市| 邻水| 南丹县| 吉首市| 凤阳县| 蒙阴县| 蕲春县| 绥化市| 仪征市| 丰县| 策勒县| 甘谷县| 奉化市| 楚雄市| 盐城市| 昭通市| 明水县| 汶上县| 石阡县| 芮城县| 泗阳县| 东阿县| 芦山县| 金阳县| 南川市| 康马县| 三台县|