Koloni ramverk
Utvecklare | João Magalhães, koloniutvecklare och Hive Solutions |
---|---|
Stabil frisättning | 1.0.0 / maj 2011 |
OS | Cross-plattform |
Licens | GPLv3 |
Hemsida | getcolony.com |
Stora implementeringar | |
Python , JavaScript , Ruby | |
Influerad av | |
OSGi , Managed Extensibility Framework |
Colony Framework är en ramspecifikation för plugin med öppen källkod . Implementeringar av specifikationen erbjuder en runtime-komponentmodell som tillåter att plugins installeras, startas, stoppas, uppdateras och avinstalleras utan att applikationsbehållaren behöver stoppas. Specifikationen bygger starkt på Inversion of control , för att göra det lättare för applikationskomponenter att upptäcka och interagera med varandra.
Colony syftar till att eliminera komplexiteten som vanligtvis förknippas med skapandet av modulära applikationer, genom en förenklad enhetlig modell för komponentutveckling. Praktiska applikationer kan sträcka sig från modulär företagsprogramvara till applikationsmäskning.
Motivering
Colony hämtar inspiration från andra modulära lösningar som OSGi för programmeringsspråket Java och Managed Extensibility Framework (MEF) för .NET Framework .
Colony syftar till att vara en plattforms- och språkoberoende specifikation och tjäna ett brett spektrum av användningsfall. Detta inkluderar användningsfall som vanligtvis förknippas med OSGi , såsom modulariserade applikationer med en smal kärna och stora utökningsmöjligheter. Detta inkluderar även användningsfall som MEF tillgodoser, som att lägga till modularitet till en befintlig applikation, utan att utvecklaren behöver skapa sin egen plugin-infrastruktur från grunden.
Behovet av att minska antalet konfigurationssteg för att montera ett datorrutnät, samt stödja att lägga till noder och distribuera beräkningar till dem så snabbt som möjligt, driver också initiativet Colony Distributed.
Nyckelbegrepp
Koloniens konceptuella modell bygger på 6 nyckelbegrepp.
- Plugin Manager : kärnfunktion som hanterar plugin-livscykeln och beroendeinjektion .
- Plugin : en isolerad del av kod och tillhörande resurser som är vettigt av sig själv eller när man arbetar tillsammans med andra plugins.
- Capability : definierar vad ett plugin kan göra, så att det kan matchas med andra plugins som vill ha dess förmåga.
- Beroende : definierar att en plugin kräver en annan plugin för att fungera och är värdelös utan den.
- Händelse : ett meddelande som kan sändas av en plugin och lyssnas av den plugin som vill ta emot det.
- Bundle : en uppsättning relaterade plugins, avsedda att fungera tillsammans.
Insticksprogrammets livscykel inkluderar att ladda och avlasta dess resurser, injicera det i andra som en förmåga eller beroende samt att ha förmågor och/eller beroenden injicerade i den.
Distribution
Ramverket föreslår konceptet viral distribution där beräkningar kan distribueras transparent till valfritt antal noder, genom att låta varje nod köra en Colony-instans. Konceptet drar fördel av modularitetsmetoden, genom att använda plugin som enheten som ska överföras mellan noder. Konceptet kräver också tillgång till verktyg för snabb upptäckt av nya noder (t.ex. med Zeroconf- tekniker som Bonjour genom Colony Bonjour Plugin).
Viral distribution, enligt Colony-tolkningen, skulle innebära att en konfigurerad Colony-instans skulle kunna göra sin datorkraft tillgänglig för ett Colony-hanterat datornät, genom att tillkännage dess specifikationer, varefter den skulle ta emot arbetsenheter i form av plugins, dvs. kod för exekvering på instansen.
För att sätta upp en ny Colony-instans, och möjliggöra viral distributionsstöd, skulle det krävas ett operativsystem , grundläggande Colony-beroenden (t.ex. en virtuell maskin för det valda implementeringsspråket för Colony) och själva ramverkshanteraren (t.ex. med hjälp av installationsprogrammet). Att lägga till de grundläggande paketen som krävs för att komma åt och ladda ner från ett fjärranslutet plugin-förråd till instansen skulle slutföra bootstrap. Noden skulle sedan meddela sin tillgänglighet till distributionsserverplugin, och kunde börja ta emot och bearbeta arbete.
Anmärkningsvärda komponenter
Koloniramverket inkluderar en uppsättning applikationskomponenter för olika funktioner, från domänspecifika underramar till leverantörer för vanliga protokoll och tjänster.
Anmärkningsvärda komponenter inkluderar ett komplett ramverk för webbapplikationer , baserat på MVC- arkitekturmönstret, liknande Ruby on Rails och Django . Webbstacken stöds av en modulär HTTP- serverimplementering utvecklad från grunden under Colony designfilosofi. I praktiken innebär detta att även kärn-HTTP-serverkomponenter, såsom filsystemåtkomst och socket -gränssnitt, tillhandahålls som moduler och kan hotswapas . Webb-MVC-pluginen använder också den modulära ORM- enhetshanterarens plugin. För att hantera distribution fungerar distributionshanterarkomponenten som ett nav för de olika distributionsplugins som implementerar Colonys virala distributionskoncept.
Bland andra tillgängliga komponenter är en byggautomationskomponent (funktionellt jämförbar med Maven ); en utdragbar revisionskontrollfasad med förlängningar tillgängliga för Subversion , Bazaar och Mercurial ; en fristående Wiki- applikation som använder insticksprogram för revisionskontroll . För integration med andra teknologier tillhandahåller Colony servrar och klienter för vanliga protokoll som SMTP , BitTorrent , DNS , IRC , POP , Telnet , XMPP , LDAP samt stöd för Bonjour ( Apple Inc.s implementering av Zeroconf ). Vissa nischkomponenter ingår också, till exempel klienter för Twitter API och Apple Push Notification Service .
Status
Från och med 2011 anses Colony vara i alfa även om produktionsinstallationer finns.
Se även
- Plug-in
- Modulär programmering
- Komponentbaserad mjukvaruteknik
- OSGi
- Managed Extensibility Framework
externa länkar
- Colony Framework-webbplats , getcolony.com