POCO (colección de bibliotecas de clases de C++)

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 17 de abril de 2020; las comprobaciones requieren 6 ediciones .
POCO
Tipo de biblioteca (programación)
Escrito en C++03, parcialmente portado a C++11
Sistema operativo plataforma cruzada
ultima versión 1.10.1 (10 de febrero de 2020)
Licencia Licencia de software de impulso
Sitio web pocoproject.org

POCO (o C++ Portable Components) es una colección de bibliotecas de clases de código abierto que simplifica y acelera el desarrollo de aplicaciones multiplataforma basadas en web en C++. Las bibliotecas se integran bien con la Biblioteca de plantillas estándar (STL) y llenan sin problemas muchos vacíos funcionales en ella. La estructura modular y la implementación eficiente hacen de POCO un candidato ideal para el desarrollo de dispositivos embebidos ( firmware , etc.), un área en la que C++ se está volviendo cada vez más popular, ya que es adecuado tanto para dispositivos de bajo nivel ( E/S , controladores de interrupción , etc.) y para el desarrollo orientado a objetos de alto nivel . Naturalmente, POCO también es adecuado para el desarrollo de aplicaciones empresariales .

Las bibliotecas POCO liberan al desarrollador de tener que volver a implementar tareas comunes que podrían generar errores tipográficos , implementación inexacta de especificaciones y manejo incorrecto de errores.

Objetivos y misión

POCO está diseñado para suites de software C++ multiplataforma en red, como Cocoa de Apple para Mac OS X o Ruby on Rails para desarrollo web . Fue concebida como una plataforma poderosa pero fácil de usar .

POCO está construido siguiendo estrictamente el estándar ANSI/ISO C++, que incluye la biblioteca estándar. Las versiones 1.x usan el estándar C++ 2003 (a partir de la versión 1.4.7, C++ 2011 es parcialmente compatible), la versión 2.x se está preparando para una transición completa al estándar C++ 2011 y el final del soporte para compiladores que no admiten este estándar. Los desarrolladores de POCO se esfuerzan por lograr un equilibrio entre el uso de mecanismos complejos de C++ y mantener las clases y el código claros y simples.

Características

Plataformas y compatibilidad

POCO se está lanzando en varias plataformas que incluyen:

Antes de la versión 1.4.0, el subsistema de red POCO para Linux usa de forma predeterminada la llamada del sistema de selección, que no se adapta bien a cargas altas. Hay implementaciones de este subsistema usando llamadas poll o epoll [1] . Están diseñados para superar el límite de selección en el número máximo de descriptores de archivo (generalmente 1024). En las aplicaciones que usan POCO y atienden a decenas de miles de clientes al mismo tiempo, el uso de select puede provocar una denegación de servicio y el bloqueo de la aplicación; las implementaciones de encuesta y epoll resuelven este problema.
A partir de la versión 1.4.0, la implementación de epoll se usa de forma predeterminada para compilar en entornos Linux:

Bibliotecas POCO C++, notas de la versión , SF 2977249 :

Utilice epoll en lugar de seleccionar en Linux. Los métodos Poco::Net::Socket::select() y Poco::Net::Socket::poll() usan epoll en Linux si la biblioteca de red está compilada con el indicador -DPOCO_HAVE_FD_EPOLL. Esta configuración es estándar para Linux, pero no para varias plataformas integradas de Linux.

Texto original  (inglés)[ mostrarocultar] SF# 2977249 fijo: use epoll en lugar de seleccionar en Linux Poco::Net::Socket::select() y Poco::Net::Socket::poll() usará epoll en Linux si la biblioteca Net está compilada con -DPOCO_HAVE_FD_EPOLL . Este es el valor predeterminado para la configuración de compilación de Linux (pero no para las diversas configuraciones de compilación destinadas a plataformas Linux integradas).

Ejemplo de uso (MSVS 8.0)

1) Instale la biblioteca: Descomprima (por ejemplo, en C:\Poco) y establezca dos rutas en las variables de entorno:

  1. POCO_BASE=C:\Poco
  2. RUTA=$(RUTA);C:\Poco\bin

2) Construcción de la biblioteca: Abra C:\Poco\bin\Foundation_vs80.sln y constrúyalo, obtenga C:\Poco\bin\PocoFoundation.dll

3) Abra el ejemplo (considere Logger): C:\Poco\Foundation\samples\Logger\Logger_vs80.vcproj

//Archivar Logger.cpp usando Poco :: Logger ; usando Poco :: PatternFormatter ; usando Poco :: FormattingChannel ; usando Poco :: ConsoleChannel ; usando Poco :: FileChannel ; usando Poco :: Mensaje ; int principal ( int argc , char ** argv ) { // configure dos cadenas de canales: una para la // consola y la otra para un archivo de registro. FormattingChannel * pFCConsole = new FormattingChannel ( new PatternFormatter ( "%s:%p:%t" )); pFCConsole -> setChannel ( nuevo ConsoleChannel ); pFCConsole -> abrir (); FormattingChannel * pFCFile = new FormattingChannel ( new PatternFormatter ( "%Y-%m-%d %H:%M:%S.%c %N[%P]:%s:%q:%t" )); pFCFile -> setChannel ( nuevo FileChannel ( "sample.log" )); pFCFile -> abrir (); // crea dos objetos Logger - uno para // cada cadena de canales. Logger & consoleLogger = Logger :: create ( "ConsoleLogger" , pFCConsole , Mensaje :: PRIO_INFORMATION ); Logger & fileLogger = Logger :: create ( "FileLogger" , pFCFile , Message :: PRIO_WARNING ); // registrar algunos mensajes consoleLogger . error ( "Un mensaje de error" ); registrador de archivos . error ( "Un mensaje de error" ); consolaLogger . advertencia ( "Un mensaje de advertencia" ); registrador de archivos . error ( "Un mensaje de advertencia" ); consolaLogger . información ( "Un mensaje de información" ); registrador de archivos . información ( "Un mensaje de información" ); Registrador :: obtener ( "ConsoleLogger" ). error ( "Otro mensaje de error" ); devolver 0 ; }

------------- Resultado de la operación (en pantalla) -------------

ConsoleLogger: Error: un mensaje de error ConsoleLogger: Advertencia: un mensaje de advertencia ConsoleLogger: Información: Un mensaje de información ConsoleLogger: Error: Otro mensaje de error

------------- El resultado del trabajo (en el archivo sample.log) -------------

2007-10-11 10:12:19.8 WKS-323[1204]:FileLogger:E:Un mensaje de error 2007-10-11 10:12:19.9 WKS-323[1204]:FileLogger:E:Un mensaje de advertencia 2007-10-11 10:12:23.5 WKS-323[312]:FileLogger:E:Un mensaje de error 2007-10-11 10:12:23.6 WKS-323[312]:FileLogger:E:Un mensaje de advertencia

Notas

  1. Yatskevich Serguéi. PoCo, ensamblaje de Spectr Soft (enlace no disponible) (28 de agosto de 2010). Consultado el 8 de octubre de 2010. Archivado desde el original el 11 de marzo de 2012. 

Véase también

Enlaces