POCO (colecție de biblioteci de clasă C++)

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 17 aprilie 2020; verificările necesită 6 modificări .
POCO
Tip de biblioteca (programare)
Scris in C++03, portat parțial la C++11
Sistem de operare Platformă transversală
ultima versiune 1.10.1 (10 februarie 2020)
Licență Boost Software License
Site-ul web pocoproject.org

POCO (sau C++ Portable Components) este o colecție de biblioteci de clasă open source care simplifică și accelerează dezvoltarea aplicațiilor multi -platformă bazate pe web în C++. Bibliotecile se integrează bine cu Standard Template Library (STL) și completează fără probleme multe lacune funcționale din aceasta. Structura modulară și implementarea eficientă fac din POCO un candidat ideal pentru dezvoltarea dispozitivelor încorporate ( firmware , etc.), domeniu în care C++ devine din ce în ce mai popular, deoarece este potrivit atât pentru dispozitive de nivel scăzut ( I/O dispozitive ), manipulatori de întreruperi etc.) și pentru dezvoltare orientată pe obiecte la nivel înalt . Desigur, POCO este potrivit și pentru dezvoltarea de aplicații pentru întreprinderi .

Bibliotecile POCO eliberează dezvoltatorul de a fi nevoit să reimplementeze sarcini comune care ar putea duce la greșeli de scriere , implementare incorectă a specificațiilor și gestionarea incorectă a erorilor.

Obiective și misiune

POCO este conceput pentru suite de software C++ multiplatformă, în rețea, cum ar fi Cocoa de la Apple pentru Mac OS X sau Ruby on Rails pentru dezvoltare web . A fost conceput ca o platformă puternică, dar ușor de utilizat .

POCO este construit cu respectarea strictă a standardului ANSI/ISO C++, care include biblioteca standard. Versiunile 1.x folosesc standardul C++ 2003 (începând cu versiunea 1.4.7, C++ 2011 este parțial acceptat), versiunea 2.x se pregătește pentru o tranziție completă la standardul C++ 2011 și sfârșitul suportului pentru compilatoarele care nu acceptă acest standard. Dezvoltatorii POCO se străduiesc să găsească un echilibru între utilizarea mecanismelor complexe C++ și păstrarea claselor și a codului clar și simplu.

Caracteristici

Platforme și compatibilitate

POCO se lansează pe diverse platforme, inclusiv:

Înainte de versiunea 1.4.0, subsistemul de rețea POCO pentru Linux folosește implicit apelul de sistem select, care nu se scalează bine la sarcini mari. Există implementări ale acestui subsistem folosind apeluri poll sau epoll [1] . Ele sunt concepute pentru a depăși limita de selectare a numărului maxim de descriptor de fișier (de obicei 1024). În aplicațiile care utilizează POCO și deservesc zeci de mii de clienți în același timp, utilizarea select poate duce la o refuz de serviciu și la blocarea aplicației - atât implementările poll, cât și epoll rezolvă această problemă.
Începând cu versiunea 1.4.0, implementarea epoll este utilizată implicit pentru construirea în medii Linux:

Biblioteci POCO C++, Note de lansare , SF 2977249 :

Utilizați epoll în loc de selectați pe Linux. Metodele Poco::Net::Socket::select() și Poco::Net::Socket::poll() folosesc epoll sub Linux dacă biblioteca de rețea este compilată cu indicatorul -DPOCO_HAVE_FD_EPOLL. Această configurație este standard pentru Linux, dar nu pentru diverse platforme Linux încorporate.

Text original  (engleză)[ arataascunde] fix SF# 2977249: Folosiți epoll în loc de selectare sub Linux Poco::Net::Socket::select() și Poco::Net::Socket::poll() va folosi epoll sub Linux dacă biblioteca Net este compilată cu -DPOCO_HAVE_FD_EPOLL . Aceasta este valoarea implicită pentru configurația de compilare Linux (dar nu pentru diferitele configurații de construcție care vizează platformele Linux încorporate).

Exemplu de utilizare (MSVS 8.0)

1) Instalați biblioteca: Dezambalați (de exemplu, în C:\Poco) și setați două căi în variabilele de mediu:

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

2) Construirea bibliotecii: Deschideți C:\Poco\bin\Foundation_vs80.sln și construiți-o, obțineți C:\Poco\bin\PocoFoundation.dll

3) Deschideți exemplul (luați în considerare Logger): C:\Poco\Foundation\samples\Logger\Logger_vs80.vcproj

//Fișier Logger.cpp folosind Poco :: Logger ; folosind Poco :: PatternFormatter ; folosind Poco :: FormattingChannel ; folosind Poco :: ConsoleChannel ; folosind Poco :: FileChannel ; folosind Poco :: Message ; int main ( int argc , char ** argv ) { // configurați două lanțuri de canale - unul către // consolă și celălalt către un fișier jurnal. FormattingChannel * pFCConsole = nou FormatttingChannel ( nou PatternFormatter ( "%s:%p:%t" )); pFCConsole -> setChannel ( nou ConsoleChannel ); pFCConsole -> deschide (); FormattingChannel * pFCFile = nou FormattingChannel ( nou PatternFormatter ( „%Y-%m-%d %H:%M:%S.%c %N[%P]:%s:%q:%t" )); pFCFile -> setChannel ( nou FileChannel ( "sample.log" )); pFCFile -> deschide (); // creează două obiecte Logger - unul pentru // fiecare lanț de canale. Logger & consoleLogger = Logger :: create ( "ConsoleLogger" , pFCConsole , Mesaj :: PRIO_INFORMATION ); Logger & fileLogger = Logger :: create ( "FileLogger" , pFCFile , Mesaj :: PRIO_WARNING ); // înregistrează câteva mesaje consoleLogger . eroare ( "Un mesaj de eroare" ); fileLogger . eroare ( "Un mesaj de eroare" ); consoleLogger . warning ( "Un mesaj de avertizare" ); fileLogger . eroare ( "Un mesaj de avertizare" ); consoleLogger . informație ( „Un mesaj de informare” ); fileLogger . informație ( „Un mesaj de informare” ); Logger :: get ( "ConsoleLogger" ). eroare ( "Un alt mesaj de eroare" ); returnează 0 ; }

------------- Rezultatul operațiunii (pe ecran) --------------

ConsoleLogger: Eroare: Un mesaj de eroare ConsoleLogger: Avertisment: Un mesaj de avertizare ConsoleLogger: Informații: Un mesaj de informare ConsoleLogger: Eroare: Un alt mesaj de eroare

------------- Rezultatul muncii (în fișierul sample.log) -------------

2007-10-11 10:12:19.8 WKS-323[1204]:FileLogger:E:Un mesaj de eroare 2007-10-11 10:12:19.9 WKS-323[1204]:FileLogger:E:Un mesaj de avertizare 2007-10-11 10:12:23.5 WKS-323[312]:FileLogger:E:Un mesaj de eroare 2007-10-11 10:12:23.6 WKS-323[312]:FileLogger:E:Un mesaj de avertizare

Note

  1. Iatskevici Serghei. PoCo, asamblare de la Spectr Soft (link indisponibil) (28 august 2010). Preluat la 8 octombrie 2010. Arhivat din original la 11 martie 2012. 

Vezi și

Link -uri