Wiki

Poco Libraries, Описание библиотеки POCO

Библиотеки классов C++ нового поколения для сетевых приложений

POCO, (или C++ Portable Components), это коллекция библиотек классов с открытым исходным кодом которая упрощает и ускоряет разработку сетевых мультиплатформенных приложений на C++. Библиотеки хорошо интегрируются со Стандартной Библиотекой C++ (STL) и органично заполняют множество функциональных пробелов в ней. Модульная структура и эффективная реализация делает POCO идеальным кандидатом для использования при разработке для embedded устройств (прошивки и прочее), область, в которой C++ становится все более и более популярным, так как подходит как для низкоуровневой (устройства ввода/вывода, обработчики прерываний и прочее) так и для высокоуровневой объектно-ориентированной разработки. Естественно, POCO подходит и для разработки корпоративных приложений. Сайт проекта: http://pocoproject.org Библиотеки POCO освобождают разработчика от изобретения колеса и позволяют ему тратить время на более стоящие вещи, например разрабатывать быстрее и работать над конкретными особенностями своего приложения отличающие его от прочих.

Цели и Миссия

POCO создан для сетевых мультиплатформенных разработок на C++, как Cocoa от Apple для Mac, или Ruby on Rails для Web разработок - мощная и вместе с тем простая в использовании платформа для построения ваших приложений. POCO построен с жестким соблюдением C++ стандарта ANSI/ISO включающего стандартную библиотеку. Разработчики POCO пытались соблюсти равновесие между использованием сложных механизмов C++ и удержанием классов и кода в понятном и простом состоянии.

Особенности

  • threads, thread synchronization and advanced abstractions for multithreaded programming
  • streams and filesystem access
  • shared libraries and class loading
  • powerful logging and error reporting
  • security
  • network programming (TCP/IP sockets, HTTP, FTP, SMTP, etc.)
  • XML parsing (SAX2 and DOM) and generation
  • configuration file and options handling
  • database access

Платформы и совместимость

POCO запускается на различных платформах, включая:

  • Windows
  • Mac OS X
  • (embedded) Linux
  • HP-UX
  • Tru64
  • Solaris
  • QNX

Пример использования (MSVS 8.0):

1) Устанавливаем библиотеку Распаковываем (например в C:/POCO) и прописываем в переменных окружения два пути: POCO_BASE=p:\poco PATH=$(PATH);p\poco\bin 2) Собираем библиотеку: C:\poco\bin\Foundation_vs80.sln и собираем его, получаем c:\poco\bin\PocoFoundationd.dll 3) Открываем примеры, здесь я рассмотрю Logger c:\poco\Foundation\samples\Logger\Logger_vs80.vcproj ------------- Logger.cpp -------------

using Poco::Logger;
using Poco::PatternFormatter;
using Poco::FormattingChannel;
using Poco::ConsoleChannel;
using Poco::FileChannel;
using Poco::Message;
 
int main(int argc, char** argv)
{
    // set up two channel chains - one to the
    // console and the other one to a log file.
    FormattingChannel* pFCConsole = new FormattingChannel(new PatternFormatter("%s: %p: %t"));
    pFCConsole->setChannel(new ConsoleChannel);
    pFCConsole->open();
 
    FormattingChannel* pFCFile = new FormattingChannel(new PatternFormatter("%Y-%m-%d %H:%M:%S.%c %N [ %P ] : %s:%q:%t"));
    pFCFile->setChannel(new FileChannel("sample.log"));
    pFCFile->open();
 
    // create two Logger objects - one for
    // each channel chain.
    Logger& consoleLogger = Logger::create("ConsoleLogger", pFCConsole, Message::PRIO_INFORMATION);
    Logger& fileLogger    = Logger::create("FileLogger", pFCFile, Message::PRIO_WARNING);
 
    // log some messages
    consoleLogger.error("An error message");
    fileLogger.error("An error message");
 
    consoleLogger.warning("A warning message");
    fileLogger.error("A warning message");
 
    consoleLogger.information("An information message");
    fileLogger.information("An information message");
 
    Logger::get("ConsoleLogger").error("Another error message");
 
    return 0;
}

Результат работы (на экране)
ConsoleLogger: Error: An error message
ConsoleLogger: Warning: A warning message
ConsoleLogger: Information: An information message
ConsoleLogger: Error: Another error message

Результат работы (в файле sample.org)
2007-10-11 10:12:19.8 WKS-323[1204]:FileLogger:E:An error message
2007-10-11 10:12:19.9 WKS-323[1204]:FileLogger:E:A warning message
2007-10-11 10:12:23.5 WKS-323[312]:FileLogger:E:An error message
2007-10-11 10:12:23.6 WKS-323[312]:FileLogger:E:A warning message

Andrew.Selivanov (at) gmail.com для http://www.crossplatform.ru
Материалы статьи разрешается использовать в соответствии с лицензией GNU FDL

Эта статья в Wikipedia
Обсуждение >>>