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