計(jì)算機(jī)操作系統(tǒng)如Win32、Linux、Solaris等提供的OS API雖然千差萬別,但是功能其實(shí)大同小異,有進(jìn)程管理、進(jìn)程調(diào)度、進(jìn)程間通信、文件管理、IO輸入輸出、網(wǎng)絡(luò)輸入輸出、線程同步控制等等。但是要開發(fā)跨平臺的軟件卻極其困難,因?yàn)槟承┨幚矸绞接休^大出入。如果能有這樣一套框架,能封裝大部分種類的OS API,提供統(tǒng)一的接口,并且這些接口使用都是標(biāo)準(zhǔn)的統(tǒng)一的,那開發(fā)上層的應(yīng)用豈不容易?
以下是 用面向?qū)ο蠹夹g(shù)封裝的跨平臺基礎(chǔ)框架庫的初步設(shè)計(jì),大部分參考Java和.Net的設(shè)計(jì),部分引入ACE和STL的設(shè)計(jì),提供簡潔的使用接口,使得開發(fā)C++應(yīng)用系統(tǒng)如同寫Java程序一樣簡單。
本框架實(shí)現(xiàn)了基本的容器類,字符串處理類,時(shí)間處理類,IO輸入輸出流類,網(wǎng)絡(luò)類,日志框架類,郵件解析框架等,OS高級的API如 異步IO和進(jìn)程間通信等還未涉及。
目前的特點(diǎn):
1、容器類包括ARRAY、HASHMAP、VECTOR等基本容器,有內(nèi)存池機(jī)制,可以使用多種方式的iterator遍歷。
2、時(shí)間類包括Time、Locale、TimeFormat等,時(shí)間精確到毫秒,有日期和LOCALE處理,有時(shí)間格式化處理,線程安全。
3、IO輸入輸出流分輸入輸出流設(shè)備和讀寫器的設(shè)計(jì),輸入輸出設(shè)備即InputStream和OutputStream,讀寫器即Reader和Writer。可對任何對象和設(shè)備進(jìn)行IO操作。
4、網(wǎng)絡(luò)的設(shè)計(jì)是InetAddress設(shè)計(jì)完全兼容IPv6,用戶不必關(guān)心自己使用的是何種協(xié)議族。網(wǎng)絡(luò)服務(wù)器是SocketAcceptor監(jiān)聽器,它監(jiān)聽端口accept到連接后創(chuàng)建Socket對象,用戶可由此創(chuàng)建流設(shè)備進(jìn)行讀寫操作。網(wǎng)絡(luò)客戶端則對應(yīng)的使用SocketConnector連接器來連接指定的網(wǎng)絡(luò)服務(wù)器,成功后也創(chuàng)建Socket對象來處理。(類似ACE的設(shè)計(jì))
5、日志框架則吸收Log4j和Log4cplus的設(shè)計(jì),使用不同Appender來輸出日志,使用各種LayoutPattern類格式化輸出。
6、郵件解析框架完全使用面向?qū)ο蠹夹g(shù)設(shè)計(jì),使用C++語言開發(fā)的用于郵件解析和組裝的庫。它提供了一些類用來解析和組裝Internet郵件,如MimeMessage和MimeBodyPart,用于Internet郵件協(xié)議實(shí)現(xiàn)并且遵循RFC822和RFC2045規(guī)范。這些API庫用于應(yīng)用程序的開發(fā)。本郵件解析庫參考JavaMail的結(jié)構(gòu)設(shè)計(jì),有與之類似的接口和類。本解析庫用到基礎(chǔ)庫Fast庫參考ACE庫和STL、Java Framework庫設(shè)計(jì),包含一些字符串處理和容器的類。設(shè)計(jì)它們的目的是為了簡化庫的接口,并且盡量與Java庫的接口兼容,同時(shí)使用完全標(biāo)準(zhǔn)的C++特性,使庫更易維護(hù)更穩(wěn)固。下一版本將支持流數(shù)據(jù)解析功能。
7、服務(wù)器框架庫,基本引入Postfix的進(jìn)程調(diào)度機(jī)制,可大大提高系統(tǒng)的運(yùn)行穩(wěn)定性,同時(shí)簡化運(yùn)行的維護(hù)成本。同時(shí)服務(wù)器框架已封裝了大部分基礎(chǔ)的功能,如訪問權(quán)限控制、協(xié)議處理等,所以開發(fā)應(yīng)用或擴(kuò)展將更加簡單,也利于團(tuán)隊(duì)協(xié)同開發(fā)。
考慮到未來支持 應(yīng)用服務(wù)器軟件、普通軟件、PocketPC軟件、游戲等應(yīng)用軟件的開發(fā),以及跨平臺的特性,正在重新設(shè)計(jì)此框架,以使其具備跨平臺和支持多個(gè)編譯器及開發(fā)工具,以及支持小內(nèi)存應(yīng)用等,并同時(shí)希望未來的版本加入開源組織以使之更為壯大。
謝謝!