poco c++感性认识

学习一个框架前,要先明白它的是什么,为什么,怎么用.下面这些文字,是从中文poco官网上转过来的,正如poco c++库的特点,非常清晰,代码风格更是一目了然.

poco开发库的特点,非常适合写后台处理程序,效率也是很高的.前台界面程序使用Qt框架库,非常好,两个库相辅相成,可解决项目上的大部分问题.

一 概述

Poco C++库是:

  • 一系列C++类库,类似Java类库,.Net框架,Apple的Cocoa;
  • 侧重于互联网时代的网络应用程序
  • 使用高效的,现代的标准ANSI/ISO C++,并基于STL
  • 高可移值性,并可在多个平台下可用
  • 开源,并使用Boost Software License发布
  • 不管是否商用,都完全免费

Poco库概览

特性:

  • DynamicAny与Any类
  • Cache框架
  • 基于OpenSSL的密码系统
  • 日期,时间类库
  • 事件和通知框架
  • FTP客户端
  • 跨平台的文件系统类库
  • HTML表单类库
  • HTTP客户端和服务端(支持SSL),C++ 服务器页面编译器
  • 日志框架
  • 多线程框架(线程池,活动对象,工作队列等)
  • POP3客户端类库
  • 跨平台,一次编写,多平台编译和运行
  • 进程管理和进程间通信类库
  • 反射框架
  • 基于PCRE的正则表达式
  • SMTP客户端类库
  • 数据库访问类库(SQLite,MySQL, ODBC)
  • 支持SSL/TLS,基于OpenSSL
  • 动态类库加载
  • 先进的内存和指针管理(Buffer, Pool)
  • Socket类库
  • 网络数据流类库,支持Base64,HexBinary编解码,压缩等等
  • 字符串格式化和其它字符串工具类库
  • TCP服务器框架(多线程)
  • 文本编码和转换
  • Tuples
  • URI支持
  • 支持UTF8和Unicode编码
  • UUID生成器
  • XML生成和解析器
  • Zip文件操作类库

Poco的使命

  • Poco是一个强大的类库,并易于构建自己的应用程序
  • Poco帮助你创建跨平台的应用程序(一次编写,多平台编译和运行)
  • 模块化和可扩展,可应用于嵌入式到企业级程序
  • 提供全面,易懂的编程接口
  • 使用C++语言,快速且高效
  • Poco崇尚简易
  • 在设计,代码风格和文档上保持一致
  • Poco强调代码质量,包括可读性,综合性,一致性,编码风格和可测试性
  • Poco使得C++编程更加容易

指导方针

  • 高度关注代码质量,编码风格,一致性,可读性
  • 高度关注测试
  • 注重实用性
  • 基于现有的,可靠的组件开发

版本历史

  • Summer 2004: Günter Obiltschnig started development
  • February 2005: First release on SourceForge
  • (Release 0.91 under Sleepycat license)
  • May 2005: First contributions by Aleksandar Fabijanic
  • January 2006: Release 1.0
  • March 2006: Release 1.1
  • July 2006: Moved to Boost license, POCO Community Website
  • August 2006: Release 1.2
  • May 2007: Release 1.3
  • July 2010: Stable Release 1.3.7,
  • about 20 contributors, used in 100s of projects

支持平台

  • Microsoft Windows
  • Linux
  • Mac OS X
  • HP-UX, Solaris, AIX*
  • Embedded Linux (uClibc, glibc)
  • iOS
  • Windows Embedded CE
  • QNX

Poco应用场景

  • 创建自动化的中间件和设备
  • 工业自动化和工业设备
  • 流量控制系统
  • 健康系统
  • 测量,数据收集和测试系统
  • 消费电子产品和家庭自动化产品
  • 测量
  • 航空交通管理系统
  • VoIP
  • 票务和入口控制系统
  • 包装应用程序

Poco的优势

  • 全面的,完整的C++框架,可减少开发工作,快速让产品走向市场
  • 易学易使用,以及相当多的示例代码和良好的文档
  • 原生的C++代码,性能优秀,低内存占用
  • 平台无关,一处编写,跨平台编译和运行
    • 大多数情况下,可以开发机上完成开发和调试工作
    • 可以非常容易的迁移到新平台

设计 & 实现

基于现代的、标准的ANSI C++编写,使用C++ STL库。模块化设计,极少的外部依赖,易于编译和使用。结合传统的面向对象与现代的C++设计,代码易读,代码风格统一,以及相当全面的测试用例。

支持平台

  • 桌面/服务器: Windows, Linux, Mac OS X, Solaris, HP-UX, AIX
  • 嵌入式系统: Windows Embedded CE, Embedded Linux (uClibc or glibc), iOS, QNX, VxWorks, Android
  • 最低系统要求: 75 MHz ARM9, 8 MB RAM (Embedded Linux).

License

  • Boost Software License 1.0

核心特性

  • 支持Any 和 DynamicAny 的动态类型
  • 提供缓存框架
  • 日期和时间
  • 事件与通知框架
  • (libPoco.com翻译,转载请注明)
  • 基于PCRE的正则表达式
  • 动态库加载
  • 完美的指针和内存管理 (buffer, pool)
  • 字符串格式化和工具
  • tuples

压缩

  • 基于zlib的压缩/解压类
  • 创建和解压ZIP文件

加密

  • 支持多种hash算法
  • 支持X509数字证书
  • 对称的和 RSA算法
  • 支持streams加解密
  • 基于OpenSSL

数据库

  • 不同的数据库提供了统一的访问接口(SQLite, MySQL, ODBC)
  • 自动数据类型匹配
  • 支持集合类 (std::vector, std::set, std::map, etc.)
  • 支持记录集和tuples
  • 支持连接池

文件系统

  • 跨平台的文件路径操作
  • 目录列表
  • 通配符支持
  • 文件属性管理

日志

  • 可扩展的日志框架,可拔插的日志通道和消息格式化
  • 日志可输出到终端,日志文件,syslog,远程syslog,Windows事件服务

多线程

  • 线程和线程同步类库
  • 线程池
  • 工作队列
  • 活动对象
  • 任务管理
  • 定时器

网络

  • 流,数据报,多播,服务器和原生socket.
  • TCP服务器框架(多线程)
  • 反射服务器框架
  • HTTP(S)客户和服务器框架
  • HTTP认证
  • CSP(C++ Server Page)编译器
  • FTP客户端
  • SMTP和POP3客户端
  • (libPoco.com翻译,转载请注明)
  • 支持URI, UUID
  • HTML表单处理
  • MIME支持
  • 基于 OpenSSL支持SSL/TLS
  • WebSocket (RFC 6455) 客户和服务器

进程管理和 IPC

  • 进程启停
  • 进程间同步
  • 共享内存

  • Base64 和 HexBinary 编解码
  • 压缩(zlib)
  • 行结束符车换
  • 内存stream
  • 文本编码转换
  • URI流读取

文本编码

  • 支持UTF-8 和 Unicode
  • 文本编码和转换
  • 字符分类

工具类

  • 支持命令行和服务器程序框架
  • 命令行参数解析器
  • 配置文件解析
  • 支持Unix和Windows后台服务

XML

  • 基于 Expat 的XML解析
  • SAX2 (Simple API for XML, version 2) 解析器
  • DOM (Document Object Model, Level 1-3) 解析器
  • XML生成器
时间: 2024-10-12 21:38:55

poco c++感性认识的相关文章

Entity Framework工具POCO Code First Generator的使用

在使用Entity Framework过程中,有时需要借助工具生成Code First的代码,而Entity Framework Reverse POCO Code First Generator是一款不错的工具 在Visual Studio中,通过"工具"→"扩展和更新..."来安装Entity Framework Reverse POCO Code First Generator 这里添加一个控制台项目,并在项目中添加POCO Code First Genera

POCO库——Foundation组件之核心Core

核心Core: Version.h:版本控制信息,宏POCO_VERSION,值格式采用0xAABBCCDD,分别代表主版本.次版本.补丁版本.预发布版本: Poco.h:简单地包含了头文件Foundation.h: Foundation.h:使用其他任何Foundation模块前需要包含的头文件,主要定义库导出宏POCO_DLL.Foundation_API以及自动连接相应配置正确的库引用文件lib:包含库配置文件Config.h: 平台相关的Platform.h以及各个平台相应的文件Plat

POCO库——Foundation组件概述

Foundation组件作为POCO库的基础组件,主要包含了核心Core.缓存Cache.加解密Crypt.日期时间DateTime.动态类型Dynamic.事件events.文件系统Filesystem.哈希Hashing.日志Logging.通告机制Notifications.进程Processes.正则表达式RegularExpression.共享库SharedLibrary.数据流Streams.任务管理Tasks.文本编码Text.线程Threading.统一资源标识符URI.通用唯一

poco c++框架库应用:数据库的连接池

Poco c++中的数据库驱动部分,简洁,干净,工整,和数据库连接,封装成这样,还是比较好用的.下面是连接MySQL连接的方法. 一 需求说明 与MySQL数据库建立连接池,并在连接池中获得一个连接,实现数据库常用增删改查 二 目标说明 写出ANSI风格的代码,并输出高度结果到终端,验证程序的有效性 三 调试条件: 1.系统:ubuntu 2.qt 或 其它IDE 3.安装了mysql,有正确的访问账户和密码 四 例程说明 使用IDE:Qt Creator 项目文件:pocomysql.pro

《Entity Framework 6 Recipes》中文翻译系列 (45) ------ 第八章 POCO之获取原始对象与手工同步对象图和变化跟踪器

翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 8-6  获取原始对象 问题 你正在使用POCO,想从数据库获取原始对象. 解决方案 假设你有如图8-7所示的模型.你正在离线环境下工作,你想应用在获取客户端修改之前,使用Where从句和FirstDefault()方法从数据库中获取原始对象. 图8-7.包含一个单独实体Item的模型 按代码清单8-9的方式,在获取实体之后,使用新值更新实体并将其保存到数据库中. 代码清单8-9. 获取最新

《Entity Framework 6 Recipes》中文翻译系列 (42) ------ 第八章 POCO之使用POCO

翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第八章 POCO 对象不应该知道如何保存它们,加载它们或者过滤它们.这是软件开发中熟悉的口头禅,特别是在领域驱动设计中.这是一个聪明的做法,如果对象和持久化绑得太紧,以至于不能对领域对象进行单元测试.重构和复用.在ObjectContext上下对象中,实体框架为模型实体生成的类,高度依赖实体框架管道(Plumbing).对于一此开发人员来说,这些类对持久化机制知道得太多了.而且,它们与特定的

SOCI、LiteSQL、POCO数据库访问类库对比

最近在做视频的开发,其中视频的设备接入管理服务器.流媒体管理服务器.中心服务器都涉及到了数据库的操作,同时需要兼容大多数版本的数据库,包括mysql.sqlite.oracle.公司原来使用的是ado来进行数据库的开发的, 但是考虑到目前需要兼容linux,目前使用Poco框架封装的数据库模块进行开发. 根据项目情况我对soci.litesql.poco这三个框架进行了简单的学习来确定选择那个框架. 1.soci soci是c++数据库访问类库,目前支持MySQL.Oracle.PostgreS

Entity Framework工具POCO Code First Generator的使用(参考链接:https://github.com/sjh37/EntityFramework-Reverse-POCO-Code-First-Generator)

在使用Entity Framework过程中,有时需要借助工具生成Code First的代码,而Entity Framework Reverse POCO Code First Generator是一款不错的工具 在Visual Studio中,通过"工具"→"扩展和更新..."来安装Entity Framework Reverse POCO Code First Generator 这里添加一个控制台项目,并在项目中添加POCO Code First Genera

修改tt模板让ADO.NET C# POCO Entity Generator With WCF Support 生成的实体类继承自定义基类

折腾几天记载一下,由于项目实际需要,从edmx生成的实体类能自动继承自定义的基类,这个基类不是从edmx文件中添加的Entityobject. 利用ADO.NET C# POCO Entity Generator With WCF Support生成的tt文件(比如model.tt)中找到 partial class partial class 修改tt模板让ADO.NET C# POCO Entity Generator With WCF Support 生成的实体类继承自定义基类