poco库介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
POCO C++库导游
2010年07月16日星期五 15:23
POCO C++库导游
Introduction
A Guided Tour of the POCO C++ Libraries
简介
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++高级特性、易于理解的类、干净的代码、连续及易于维护间得到平衡.
Foundation基本库
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 (类似 C # events) 使这种工作变得容易. 下面的示例显示如何使用POCO的 events. 示例中, 类Source 的公共event命名为theEvent,该event有一个int型参数. 用户可调用操作符 +=订阅改事件和调用-=操作符取消订阅, 同时传递对象指针和成员函数指针.事件可通过调用()操作符发射, 见 Source::fireEvent().
#include "Poco/BasicEvent.h"
#include "Poco/Delegate.h"
#include
using Poco::BasicEvent;
using Poco::Delegate;
class Source{
public:
BasicEvent
void fireEvent(int n){
theEvent(this, n);
}
};
class Target{
public:
void onEvent(const void* pSender, int& arg){
std::cout << "onEvent: " << arg << std::endl;
}
};
int main(int argc, char** argv){
Source source;
Target target;
source.theEvent += Delegate
source.theEvent -= Delegate
}
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