2024年3月29日发(作者:)
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;
nt += Delegate
ent(42);
nt -= Delegate
return 0;
}
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


发布评论