Introduction to Poco C++ Library

Before learning a framework, you must first understand what it is, why, and how to use it. The following text is transferred from the Chinese poco official website. Just like the characteristics of the poco c++ library, it is very clear, and the code style is clear at a glance.

   The characteristics of the poco development library are very suitable for writing background processing programs, and the efficiency is also very high. The front-end interface program uses the Qt framework library, which is very good. The two libraries complement each other and can solve most problems in the project.

I. Overview

The Poco C++ library is:

  • A series of C++ class libraries, similar to Java class libraries, .Net framework, Apple's Cocoa;

  • Focus on web applications in the internet age

  • Uses efficient, modern standard ANSI/ISO C++, based on STL

  • Highly portable and available on multiple platforms

  • Open source and released under the Boost Software License

  • It's completely free, whether it's commercial or not

Poco library overview

wKioL1YaXD7Ars-jAAKHkrkB11Q612.jpg

characteristic:

  • DynamicAny and the Any class

  • Cache framework

  • OpenSSL based cryptosystem

  • date and time library

  • Events and Notification Framework

  • FTP client

  • Cross-platform file system library

  • HTML Form Class Library

  • HTTP client and server (supports SSL), C++ server page compiler

  • logging framework

  • Multithreaded frameworks (thread pools, active objects, work queues, etc.)

  • POP3 client library

  • Cross-platform, write-once, compile and run on multiple platforms

  • Process management and inter-process communication library

  • reflection frame

  • PCRE based regular expressions

  • SMTP client class library

  • Database Access Class Libraries (SQLite, MySQL, ODBC)

  • Supports SSL/TLS, based on OpenSSL

  • Dynamic class library loading

  • Advanced memory and pointer management (Buffer, Pool)

  • Socket class library

  • Network data stream library, support Base64, HexBinary codec, compression, etc.

  • Libraries for string formatting and other string utilities

  • TCP server framework (multi-threaded)

  • Text encoding and conversion

  • Tuples

  • URI support

  • Support UTF8 and Unicode encoding

  • UUID generator

  • XML generation and parser

  • Zip file manipulation library

Poco's mission

  • Poco is a powerful class library and easy to build your own applications

  • Poco helps you create cross-platform applications (write once, compile and run on multiple platforms)

  • Modular and scalable for embedded to enterprise-level applications

  • Provides a comprehensive, easy-to-understand programming interface

  • Using C++ language, fast and efficient

  • Poco advocates simplicity

  • Be consistent in design, code style and documentation

  • Poco emphasizes code quality, including readability, synthesis, consistency, coding style, and testability

  • Poco makes C++ programming easier

Guidelines

  • Strong focus on code quality, coding style, consistency, readability

  • High focus on testing

  • Focus on practicality

  • Develop based on existing, reliable components

Version history

  • 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

Support platform

  • Microsoft Windows

  • Linux

  • Mac OS X

  • HP-UX, Solaris, AIX*

  • Embedded Linux (uClibc, glibc)

  • iOS

  • Windows Embedded CE

  • QNX

Poco application scenarios

  • Create automated middleware and appliances

  • Industrial Automation and Industrial Equipment

  • flow control system

  • health system

  • Measurement, data collection and test systems

  • Consumer Electronics and Home Automation Products

  • Measurement

  • Air Traffic Management System

  • VoIP

  • Ticketing and Entrance Control Systems

  • packaging application

Advantages of Poco

  • Comprehensive, complete C++ framework to reduce development effort and get products to market quickly

  • Easy to learn and use, with quite a lot of sample code and good documentation

  • Native C++ code, excellent performance, low memory footprint

  • Platform independent, write in one place, compile and run across platforms

    • In most cases, development and debugging work can be done on the development machine

    • Can be easily migrated to new platforms

       

 

Design & Implementation

   Written in modern, standard ANSI C++, using the C++ STL library. Modular design, few external dependencies, easy to compile and use. Combining traditional object-oriented and modern C++ design, the code is easy to read, the code style is unified, and the test cases are quite comprehensive.

Support platform

  • Desktop/Server: Windows, Linux, Mac OS X, Solaris, HP-UX, AIX

  • Embedded system: Windows Embedded CE, Embedded Linux (uClibc or glibc), iOS, QNX, VxWorks, Android

  • Minimum system requirements: 75 MHz ARM9, 8 MB RAM (Embedded Linux).

License

  • Boost Software License 1.0

Core Features

  • Dynamic typing with support for Any and DynamicAny

  • Provide caching framework

  • date and time

  • Events and Notification Framework

  • (Translated by libPoco.com, please indicate when reprinting)

  • PCRE based regular expressions

  • dynamic library loading

  • Perfect pointer and memory management (buffer, pool)

  • String formatting and tools

  • tuples

compression

  • zlib-based compression/decompression classes

  • Create and extract ZIP files

encryption

  • Supports multiple hash algorithms

  • Support X509 digital certificate

  • Symmetric and RSA algorithms

  • Support streams encryption and decryption

  • Based on OpenSSL

database

  • Different databases provide a unified access interface (SQLite, MySQL, ODBC)

  • Automatic data type matching

  • Support for collection classes (std::vector, std::set, std::map, etc.)

  • Support for recordsets and tuples

  • Support connection pool

File system

  • Cross-platform file path manipulation

  • directory listing

  • Wildcard support

  • file attribute management

log

  • Extensible logging framework, pluggable logging channels and message formatting

  • Log output to terminal, log file, syslog, remote syslog, Windows Event Service

Multithreading

  • Thread and thread synchronization class library

  • Thread Pool

  • work queue

  • Active object

  • task management

  • timer

The internet

  • Streaming, datagram, multicast, server and native sockets.

  • TCP server framework (multi-threaded)

  • Reflection Server Framework

  • HTTP(S) client and server framework

  • HTTP Authentication

  • CSP (C++ Server Page) compiler

  • FTP client

  • SMTP and POP3 clients

  • (Translated by libPoco.com, please indicate when reprinting)

  • Support URI, UUID

  • HTML form handling

  • MIME support

  • Supports SSL/TLS based on OpenSSL

  • WebSocket (RFC 6455) client and server

Process management and IPC

  • Process start and stop

  • interprocess synchronization

  • Shared memory

flow

  • Base64 and HexBinary codecs

  • Compression (zlib)

  • line terminator car change

  • memory stream

  • text encoding conversion

  • URI stream read

text encoding

  • UTF-8 and Unicode support

  • Text encoding and conversion

  • character classification

Tools

  • Supports command line and server programming frameworks

  • Command Line Argument Parser

  • Configuration file parsing

  • Supports Unix and Windows background services

XML

  • XML Parsing Based on Expat

  • SAX2 (Simple API for XML, version 2) parser

  • DOM (Document Object Model, Level 1-3) parser

  • XML generator

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325440972&siteId=291194637