POCO

POCO
POCO
Тип

библиотека (программирование)

Написана на

С++

Операционная система

Кроссплатформенный

Последняя версия

1.4.4 (3 сентября 2012)

Лицензия

Boost Software License

Сайт

http://pocoproject.org/

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

Библиотеки POCO освобождают разработчика от изобретения колёс и позволяют ему тратить время на более стоящие вещи. Например, разрабатывать быстрее и работать над конкретными особенностями своего приложения отличающими его от прочих.

Содержание

Цели и миссия

POCO создан для сетевых мультиплатформенных разработок на C++, как Cocoa от Apple для Mac OS X, или 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

До версии 1.4.0, сетевая подсистема POCO для Linux по умолчанию использует системный вызов select. Существуют реализации этой подсистемы, использующие вызовы poll или epoll.[1] Они предназначены для преодоления ограничения select на максимальный номер файлового дескриптора (обычно 1024). В приложениях, использующих POCO и обслуживающих десятки тысяч клиентов одновременно, использование select может приводить к отказу в обслуживании и падению приложения. И poll, и epoll-реализации решают эту проблему.
Начиная с версии 1.4.0, по умолчанию для сборки в Linux-средах используется epoll-реализация:

POCO C++ Libraries, Release Notes, SF 2977249:

Используйте epoll вместо select в Linux. Методы Poco::Net::Socket::select() и Poco::Net::Socket::poll() используют epoll под Linux, если сетевая библиотека скомпилирована с флагом -DPOCO_HAVE_FD_EPOLL. Эта конфигурация является стандартной для Linux, но не для различных встраиваемых Linux-платформ.

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

1) Устанавливаем библиотеку: Распаковываем (например в C:\Poco) и прописываем в переменных окружения два пути:

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

2) Собираем библиотеку: Открываем C:\Poco\bin\Foundation_vs80.sln и собираем его, получаем C:\Poco\bin\PocoFoundation.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.log) -------------

 
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

Примечания

  1. Яцкевич Сергей PoCo, сборка от Спектр Софт  (рус.) (28 августа 2010 года). Архивировано из первоисточника 11 марта 2012. Проверено 8 октября 2010.

См. также

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Полезное


Смотреть что такое "POCO" в других словарях:

  • poco — poco …   Dictionnaire des rimes

  • poco — ca 1. Como adjetivo significa ‘escaso en cantidad, calidad o intensidad’ y, como ocurre con la mayoría de los cuantificadores indefinidos, va antepuesto al sustantivo, con el que debe concordar en género y número: «Saqué en limpio pocas cosas»… …   Diccionario panhispánico de dudas

  • poco — poco, ca (Del lat. paucus). 1. adj. Escaso, limitado y corto en cantidad o calidad. 2. m. Cantidad corta o escasa. Un poco de agua. 3. adv. c. Con escasez, en corto grado, en reducido número o cantidad, menos de lo regular, ordinario o preciso. 4 …   Diccionario de la lengua española

  • poco — adv. MUS Un peu. Poco presto. ⇒POCO, adv. MUS. [S emploie dans les partitions suivi d un autre adv. pour désigner une atténuation dans le mode d exécution indiqué par l adv. qu il précède] Poco piano; poco forte; poco allegro. Voir DUREAU,… …   Encyclopédie Universelle

  • poco — / pɔko/ (tronc. po , solo nella costruzione un po e alcune altre) [lat. paucus ] (pl. m. chi ). ■ agg. 1. [che è in piccole quantità, in piccola misura: c è p. lavoro ] ▶◀ insufficiente, limitato, scarso. ◀▶ abbondante, molto, tanto. ↑ eccessivo …   Enciclopedia Italiana

  • Poco — Pays d’origine  États Unis, Californie Genre musical Musique Country Folk rock, Rock …   Wikipédia en Français

  • Poco — Poco, 2007 Основная информация …   Википедия

  • poco — PÓCO adv. (muz.; ca indicaţie de execuţie) Puţin. ♢ Poco a poco = încetul cu încetul, treptat. [< it. poco]. Trimis de LauraGellner, 26.07.2005. Sursa: DN  PÓCO adv. (muz.) puţin. o poco a poco = încetul cu încetul, treptat. (< it. poco)… …   Dicționar Român

  • Poco — Po co, adv. [It.] (Mus.) A little; used chiefly in phrases indicating the time or movement; as, poco pi[ u] allegro, a little faster; poco largo, rather slow. [1913 Webster] {Poco a poco} [It.] (Mus.) Little by little; as, poco a poco crescendo,… …   The Collaborative International Dictionary of English

  • poco — poco, ca adjetivo y adverbio limitado, corto, parvo, escaso*. ≠ mucho, suficiente, completo. ▌ dentro de poco locución adverbial próximamente …   Diccionario de sinónimos y antónimos

  • poço — |ô| s. m. 1. Cova funda aberta no solo para exploração de água. = FURO 2. Buraco ou estrutura destinada a acumular água. 3. Buraco feito para exploração de algum material do subsolo. 4. Sítio onde os rios, ribeiros, etc., apresentam maior… …   Dicionário da Língua Portuguesa


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»