Prostředí Perl Object - Perl Object Environment

Variantu Mach viz Machovo jádro

The Prostředí Perl Object nebo POE je knihovna modulů Perl napsaných v Perl programovací jazyk podle Rocco Caputo et al.

Z CPAN:

„POE byl původně vyvinut jako jádro perzistentního objektového serveru a běhového prostředí. Vyvinul se v univerzální multitaskingový a síťový rámec, který zahrnuje a poskytuje konzistentní rozhraní pro další události smyčky jako je Událost a Tk a Gtk sady nástrojů. “

Architektura POE: Vrstvy abstrakce

POE Prostředí Perl Object lze považovat za malý modulární operační systém. Jeden nebo více programů nebo instancí POE lze spustit současně a jsou obecně dobře vhodné pro kooperativní multitasking. Balíček POE se skládá z jmenné prostory a abstrakce které řídí budoucí vývoj POE v otevřené podobě Styl CPAN konvence.

Vrstva událostí

Neformální architektura se skládá ze sady vrstev s a jádro na dně. Toto malé jádro představuje vrstvu událostí, která funguje jako hlavní smyčka každé spuštěné instance POE. První hovor je „dispečerovi události“ - POE :: Jádro.

Obor názvů POE :: Kernel obsahuje sadu funkcí, které jsou zapojeny do samotného jádra. Tyto smyčkové abstrakce jsou navrženy po standardizovaném rozhraní mostu smyčky událostí POE - POE :: Smyčka. Ty lze podle potřeby kombinovat a porovnávat, aby poskytovaly runtime služby a štíhlé zařízení pro meziprocesová komunikace. Základní funkce jsou POE :: Smyčka :: Událost, POE :: Smyčka :: Anketa a POE :: Smyčka :: Vybrat. K dispozici jsou také POE :: Smyčka :: Tk a POE :: Smyčka :: Gtk které nabízejí háčky do jiných smyčkových můstků ve vnějším prostředí. Pokud to nestačí, abstrakce jádra POE :: Loop poskytuje opakovaně použitelná zpětná volání signálu, časová nebo poplachová zpětná volání a zpětná volání aktivity souboru a také administrativní funkce, jako je inicializace, provádění a finalizace smyček událostí.

K dispozici je také rámec pro vyšší úroveň balení - POE :: Macro a ladicí nástroj pro jejich testování s názvem POE :: Preprocessor. Tento rámec ustoupil POE :: Makro :: UseBytes.

POZNÁMKA: Jak Perlská tradice vyžaduje, POE je také pohyblivým cílem.

Vždy zkontrolujte CPAN zjistit, jaké nové dobroty komunita vložila do archivu. (... a pamatujte na Perlovo motto: „Existuje více než jeden způsob, jak to udělat“ na Larry )

Běžící jádro funguje prostřednictvím pravěku konečné stavové automaty zkonstruovaný z jiného souboru abstrakcí ovládaných POE :: Session architektura. POE :: Session je téměř triviálně definována jako mapa událostí k funkcím, třídě metody a / nebo objektové metody, které je zpracovávají. Objekty POE :: Session také obsahují úložný prostor sdílený všemi jeho obslužnými rutinami událostí, který se nazývá a halda. Jakýmkoli způsobem je rozdělíte, jsou stavy pevně identifikovány a jasně definovány.

Více funkcí obsluha události je nazývána podtřída POE :: Session POE :: NFA - událost řízená Nedeterministický konečný automat (A chytřejší konečný stavový stroj). Tato obslužná rutina události se přesouvá z jednoho přísně definovaného stavu do jiného, ​​jak to vyžadují události, hlasování, výběry uživatelů nebo jiné externí události. Tento státní stroj působí zapouzdřit širokou škálu obecných událost řízena vlákna umožňující mnohem přísnější sledování podél exekuční cesta než relativně neformální POE :: Session.

I / O vrstva

Dalším požadavkem jádra je obsluha vstupů a výstupů, které existují v jedné volané I / O vrstvě Kola. Kola iniciují akce, zpracovávají jejich výsledné události na nízké úrovni a vytvářejí události na vyšší úrovni pro relace, které je používají. Kola, jako jsou Sessions a Loops, jsou vyrobena z jednotné sady abstrakcí - POE :: Kolo - to sedí na jádře. V základní distribuci POE je sedm vysoce specializovaných a dobře definovaných kol:

  • POE :: Wheel :: Run - Vytváří a interaguje s podřízenými procesy pomocí pipe (), fork () a někdy exec (). Interakce probíhá prostřednictvím standardního vstupu a výstupu dítěte.
  • POE :: Wheel :: SocketFactory - Způsob, jak vytvořit klientské a serverové sokety bez blokování čekání na jejich založení.
  • POE :: Wheel :: Curses - Handler for non-blocking input from the Kletby knihovna textového rozhraní. Na tom staví komponenty CPAN, jako jsou Curses :: UI :: POE a Term :: Visual.
  • POE :: Wheel :: FollowTail - sleduje neustále rostoucí soubor, například protokol nebo dokument o spolupráci, a to tak, že na jeho ocasu drží popisek.
  • POE :: Wheel :: ListenAccept - Podmnožina POE :: Wheel :: SocketFactory používaná pro poslech na existujících soketech serveru a přijímání připojení od vzdálených klientů.
  • POE :: Wheel :: ReadLine - neblokující, událostmi řízený analog k Term :: ReadLine.
  • POE :: Wheel :: ReadWrite - vysoce výkonný NBIO obslužný program souborů pro POE, který používá POE Řidiči a filtry provádět čtení a zápis do vyrovnávací paměti pilníky který čerpá z další vrstvy - vlastního malého souborového systému POE.

Vrstvy souboru

Řidiči provádějí skutečnou práci při čtení a zápisu rukojetí souborů. Jsou sestaveny podle méně abstraktních definic obsažených v POE :: Driver modul. Hlavní ovladač implementovaný v době psaní tohoto článku je POE :: Driver :: SysRW - univerzální čtečka / zapisovačka pro zpracování souborů určená speciálně pro POE :: Wheel :: ReadWrite.

Další vrstva, postavená z POE :: Filtr a pravděpodobně se zaměřuje na většinu Perl Obfuscation Efficianados (viz POE # POE Humor níže), je POE :: Filtr soubor:

„Filtry se překládají mezi syrovými proudy a vařenými kousky chutné dady.“ za `sungo '
  • POE :: Filtr :: Blokovat - analyzuje vstup jako bloky pevné délky. Na výstupní straně pouze předává data bez úhony.
  • POE :: Filtr :: HTTPD - analyzuje vstup jako požadavky HTTP a překládá je do HTTP :: Žádost předměty. Na výstupní straně to trvá HTTP :: Odpověď objekty a promění je v něco vhodného k odeslání webovému klientovi / uživatelskému agentovi.
  • POE :: Filtr :: Řádek - analyzuje příchozí streamy na řádky a mění odchozí řádky na streamy. Bývalo to velmi základní, ale nedávná vylepšení přidala zajímavé funkce, jako je autodetekce nového řádku.
  • POE :: Filtr :: Reference - používá se k odesílání struktur Perlu mezi programy POE nebo mezi POE a jinými programy Perl. Na vstupní straně jsou zmrazená data (prostřednictvím Storable, FreezeThaw, YAML nebo nějakého jiného mechanismu serializace) rozmrazena do datových struktur Perlu. Na výstupu jsou odkazy dané filtru zmrazeny. Data mohou být také na vyžádání komprimována, pokud je nainstalován Compress :: Zlib.
  • POE :: Filtr :: Stream - nic nedělá. Pouze prochází daty bez jakékoli změny.

vidět POE na CPAN pro úplný seznam

Součásti POE

Několik větších balíčky byly napsány v POE podle POE :: Součást dokumentace. Jedná se o moduly řízené událostmi, z nichž mnohé fungují tak málo démoni které poskytují služby větším balíčkům, ke kterým patří. Některé z nich usnadňují komunikaci na vyšší úrovni mezi moduly, zejména samostatné aplikace, které musí zůstat nezávislé na hlavní distribuci Perlu.

Obecně jsou komponenty POE hotové postupy na vysoké úrovni, které provádějí konkrétní velké úkoly. Několik příkladů:

  • Component :: Server :: TCP - speciální servlet TCP
  • Component :: Client :: TCP - klient TCP s vědomím POE
  • POE :: Component :: IRC - téměř plně vybavený klient IRC.
  • POE :: Součást :: Server :: IRC - an RFC 2810 na RFC 2813 kompatibilní IRC server (ve vývoji)
  • POE :: Component :: UserBase - servlet ověřování uživatelů a persistence dat.
„Součásti POE mají tendenci být vysoce opakovaně použitelnými knihovnami, které zpracovávají zdlouhavé úkoly, což programátorům umožňuje soustředit se na zajímavější věci. To by však mělo platit pro každou knihovnu.“

POE Humor

  • Modul Acme :: POE :: Knee na internetu CPAN.
  • Řada hloupých rozšíření zkratek na konci Co je POE.

Viz také

externí odkazy