POCO(應用程式)

本詞條是多義詞,共5個義項
更多義項 ▼ 收起列表 ▲

POCO C++ Libraries 提供一套 C++ 的類庫用以開發基於網路的可移植的應用程式,功能涉及執行緒、執行緒同步、檔案系統訪問、流操作、共享庫和類載入、套接字以及網路協定包括:HTTP、FTP、SMTP 等;其本身還包含一個 HTTP 伺服器,提供 XML 的解析和 SQL 資料庫的訪問接口。

POCO C++庫是開源的用於簡化和加速C++開發面向網路、可移植應用程式的C++庫集,POCO庫和C++標準庫可以很好的集成並填補了C++標準庫缺乏的功能空隙。POCO庫的模組化、高效的設計及實現使得POCO特別適合嵌入式開發。在嵌入式開發領域,由於C++既適合底層(設備I/O、中斷處理等)和高層面向對象開發,越來越流行。當然POCO也準備好了面對企業級挑戰。

包含4個核心庫及一些附加庫. 這4個核心庫是: Foundation, XML, Util 和 Net. 附加庫中其中2個是NetSSL和Data,NetSSL為Net庫中的網路類提供SSL支持, Data庫提供訪問不同SQL資料庫的一致性接口。 POCO以網路中心的跨平台C++軟體開發,就像蘋果的Cocoa之餘Mac開發, 或Ruby on Rails 之餘Web開發—強大而不失簡單有趣的用於創建套用的平台. POCO 嚴格使用標準ANSI/ISO C++創建, 包含標準庫. 程式庫的貢獻者試圖在使用C++高級特性、易於理解的類、乾淨的代碼、連續及易於維護間得到平衡。

基本介紹

  • 軟體名稱:POCO
  • 屬性:應用程式
基本庫,XML庫,Net庫,Util庫,

基本庫

Foundation庫是POCO的心臟.它包含底層平台的封裝層,也包含經常使用的工具類和函式. 包含規定位元組大小整數類型, 轉換整數與位元組順序的函式, Poco::Any 類 (基於 boost::any), 錯誤處理及調試工具, 包含各種異常類和支持斷言. 同時也包含一些記憶體管理類, 包括基於引用計數的智慧型指針,和用與buffer管理及記憶體池的類. 對於字元串的處理, POCO包含一些函式和其他的東西, 串trim操作, 大小寫敏感的比較和大小寫轉換. 以類對Unicode的基本支持:轉換文本的不同編碼, 包括UTF-8 和 UTF-16. 支持格式化和解析數字, 包括sprintf 的類型安全變數. 還提供了基於著名的PCRE 庫的正則表達式。
POCO提供多種變數的日期和時間的處理類。在訪問檔案系統方面, POCO 擁有Poco::File 、 Poco::Path 類, 和 Poco::DirectoryIterator 類.在許多應用程式中,其中一部分需要通知其他部分自己這邊發生的事情. POCO中的Poco::NotificationCenter、 Poco::NotificationQueue 和 events 使這種工作變得容易. 下面的示例顯示如何使用POCO的 events. 示例中, 類Source 的公共event命名為theEvent,該event有一個int型參數. 用戶可調用操作符 +=訂閱改事件和調用-=操作符取消訂閱, 同時傳遞對象指針和成員函式指針.事件可通過調用操作符發射, 見 Source::fireEvent.
POCO 中的stream類已經提到過. stream作為Poco::BinaryReader 和 Poco::BinaryWriter 的參數用於寫二進制數據到流中, 自動、透明地處理位元組順序問題.
在複雜的多執行緒套用中,查找問題和bug的僅有方式就是編寫廣泛的日誌信息. POCO 提供強大可擴展的日誌框架,該框架支持過濾、路由到不同的通道以及格式化日誌信息. 日誌訊息可以寫入console、檔案、Windows 事件日誌、Unix的syslog後台或網路中.如果POCO提供的通道不夠使用,可以很方便的使用新類擴展日誌框架.
對於在運行時裝載(及卸載) 共享庫, POCO提供底層的Poco::SharedLibrary 類. 基於它的Poco::
classLoader 類模板和支持框架, 允許在運行時動態裝載和卸載C++類, 類似於JAVA和.NET. 類裝載框架使得以平台無關的方式編寫應用程式外掛程式成為小菜一碟。
最後, POCO Foundation 包含在不同級別上的多執行緒封裝. 從Poco::Thread 類和一般同步原子(Poco::Mutex, Poco::ScopedLock, Poco::Event, Poco::Semaphore, Poco::RWLock), Poco::ThreadPool 類及支持thread-local 存儲, 到高級別的活動對象(active object)的封裝. 簡單點兒說, 活動對象(active object)是擁有運行於自有執行緒中的方法的類. 這使得異步成員函式調用成為可能— 調用成員函式, 在函式執行期間, 做一堆其他的事情, 然後獲得函式的返回值. 下面的示例展示在POCO中是如何做的. ActiveAdder 類定義一個活動方法add,由addImpl成員函式實現. 在main中調用活動方法產生Poco::ActiveResult also known as a future, 最後獲得函式的返回值。

XML庫

POCO XML 庫支持讀取, 處理及寫XML. 遵循POCO的一個指導原則— 不要試圖重新發明已經存在的工作— POCO's XML 庫支持工業標準SAX (版本2) 及DOM接口, 很多有XML經驗的開發人員對此比較熟悉. SAX,XML的簡單API ,定義了基於事件的XML讀接口. 基於SAX的XML 解析器在讀取XML文檔時但它讀到一個元素時會通知應用程式, 字元數據, 或其他人為定義的XML元素. SAX解析器不需要將整個XML文檔裝載到記憶體中, 因此它可用於高效測解析巨大的XML檔案. 相反, DOM (文檔對象模型) 讓應用程式訪問整個XML文檔, 使用樹形的對象層級. 要達到此目的,POCO提供的 DOM 解析器需要將整個文檔裝載到記憶體. 為減小DOM文檔的記憶體占用量, POCO DOM 實現使用使用字元串spooling,經常使用的字元串如元素和屬性名僅存儲一次. XML 庫基於Expat 開源XML 解析器庫. 基於Expat 的是SAX 接口, 基於SAX接口的是DOM的實現. 對字元串, XML 庫使用std::string, UTF-8編碼. 這是的XML庫與應用程式其他部分的接口變得簡單. 在未來的版本中將提供對XPath 和 XSLT的支持。

Net庫

POCO's Net 庫使得編寫基於網路的套用容易. 不管是套用是簡單的通過純TCP socket傳送數據還是需要完整的內建HTTP server的套用,都可以在Net庫中找到有用的東西。
在最底層, Net庫包含socket類, 支持TCP流和server sockets, UDP sockets, multicast sockets, ICMP 及 raw sockets. 如果需要安全sockets, NetSSL 庫提供支持, 實現使用了 OpenSSL. 基於socket 類提供兩個框架創建TCP伺服器 — 一個是多執行緒伺服器(每個連線一個執行緒, 從執行緒池獲得), 一個是基於Acceptor-Reactor模式的伺服器. 多執行緒 Poco::Net::TCPServer 類及其支持框架也是POCO's HTTP server 實現的基礎. 在客戶端, Net庫提供類與HTTP servers通信, 要使用ftp協定傳送和接收檔案, 使用SMTP傳送郵件訊息 (包括附屬檔案) 和從POP3 server接收郵件。

Util庫

Util 庫的名稱可能會給人一些誤導, 因為它包含了創建命令行和伺服器套用的框架. 包括命令行參數處理支持(校驗, 綁定到配置屬性, etc.) 及管理配置信息. 支持不同的配置檔案格式— Windows形式的 INI 檔案, Java-類型的屬性檔案, XML檔案及Windows註冊表.
對伺服器應用程式,框架提供對Windows服務和Unix後台的透明支持. 每個伺服器套用可以註冊以Windows服務運行, 不需要額外的代碼.當然, 所有的伺服器應用程式仍然可以按命令行方式運行, 這使得測試和調測容易。

相關詞條

熱門詞條

聯絡我們