Railo-palvelin, jota yleisesti kutsutaan nimellä Railo (( RY-loh) on avoimen lähdekoodin ohjelmisto, joka toteuttaa palvelinpuolen yhteistä komentosarjakieltä CFML: ää, jota käytetään usein dynaamisten verkkosivujen, verkkosovellusten ja intranet-järjestelmien luomiseen. CFML on useita ohjelmointiparadigmoja tukeva dynaaminen kieli, joka toimii Java Virtual Machinessa (JVM).
Railon kehitti Sveitsiläinen Railo Technologies GmbH tehokkaaksi vaihtoehdoksi Adobe Coldfusionille. Vuonna 2008 Railo siirtyi avoimen lähdekoodin yhteisömalliin ja siitä tuli JBoss project. Railo Open Source-projektia johtaa Railo Technologies. Kehitystyö rahoitetaan konsultointi-ja tukisopimuksilla, mutta kuka tahansa voi osallistua tenttiin koodaamalla.
Railo sai nimensä Star Trek Enterprise-elokuvassa esiintyneen muukalaiskoiran mukaan. Koiran nimi on oikeastaan Rhylo, mutta foneettisesti saksaksi se on Railo. Näin Railo voidaan lausua joko rhy-lo tai Rai-lo-molemmat ovat hyväksyttäviä.
Railo Major-julkaisuilla on koodinimi historian merkittäville ja uskollisille koirille.
historia
Railo aloitti vuonna 2002 Michael Offnerin ja Gert Franzin opiskelijaprojektina CFML-koodin kokoamiseksi PHP: hen. Päätös tehtiin PHP: n ubikviteetin vuoksi. Todettiin kuitenkin, että tämä ei antanut toivottua suorituskykyä ja vakautta, ja päätettiin siirtyä Java-alustalle sen sijaan.
projekti oli niin menestyksekäs, että siitä päätettiin kehittää edelleen kokonainen tuote. Useat alfa-ja beta-versiot julkaistiin ennen virallista versiota 1.0 huhtikuussa 2006. Railoa kehitettiin edelleen, mutta se oli suhteellisen tuntematon monille CFML: n kehittäjille, kunnes kesäkuussa 2008 Scotch on the Rocks-konferenssissa Edinburghissa, kun Railo Technologies käytti toisen päivän Keynotea julkistaakseen yhteistyön JBossin kanssa ja vaihtaakseen avoimen lähdekoodin.
toukokuussa 2012, vrt. Target Conference, perustaminen ”Railo Company Ltd” ilmoitettiin, osakeyhtiö, joka sisältää sveitsiläinen yritys Railo Technologies GmbH sekä viisi muuta yritystä toimivat CFML teollisuudessa.
Lucee Gabel
29.tammikuuta 2015 Railon alkuperäinen kehittäjä ilmoitti, ettei jatka Railon parissa. Muut rakennuttajat ovat vahvistaneet keskittyvänsä myös yksinomaan Luceen, ja vaikka Railo-yhtiö ei ole antanut virallista lausuntoa, yhteisö on yksimielinen siitä, että Railo-hankkeen jatkokehittäminen on epätodennäköistä.
Railo-yhtiö lakkautettiin 19. heinäkuuta 2016.
Julkaisuhistoria
Suurversio (Koodinimi) |
Pienversio | Julkaisupäivä | Muistiinpanot |
---|---|---|---|
0 | Alfa 1 | 10.04.2004 | ensimmäinen virallinen versio Railo CFML-moottorista. |
Alpha 2 | 2004-05-18 | ||
Alpha 3 | 03.08.2004 | ||
Alpha 4 | 2004-10-21 | ||
Beta 1 | 2005-01-16 | railon ensimmäinen beta-versio. | |
Beta 2 | 2005 | ||
Beta 3 | 2005 | ||
RC1 | 2005-09-23 | Railon ensimmäinen vapautusehdokas esiteltiin saksalaiselle CFUGILLE Münchenissä. | |
1.0 | 1.0.0.000 | 2006-04 | |
2.0 | 2.0.0.000 | 2007-09-10 | |
2.0.1.000 | |||
2.0.2.000 | |||
3.0 | 3.0.0.000 | 2008-09-09 | |
3.0.1.000 | |||
3.0.2.000 | |||
3.0.3.000 | |||
3.1
( Barry) |
3.1.0.000 | 2009-08-12 | railon ensimmäinen avoimen lähdekoodin julkaisu. |
3.1.1.000 | 2009-08-11 | ||
3.1.2.000 | 2010-11-26 | ||
3.2
( Greyfriars Bobby) |
3.2.1.000 | 2011-12-24 | |
3.2.2.000 | 2011-03-18 | ||
3.2.3.000 | 2011-06-10 | ||
3.3
( Hachiko) |
3.3.1.000 | 2011-11-03 | lisätty sisäänrakennettu tuki ORM ja monia muita ominaisuuksia. |
3.3.4.003 | 2012-06-25 | ||
4.0
( Appollo) |
4.0.0.013 | 2012-07-02 | |
4.0.5.004 | 09.07.2013 | ||
4.1
( Endaali) |
4.1.2.005 | 2013-12-11 | . |
4.2
( mene) |
4.2.0.009 | 2014-05-14 | |
4.2.1.000 | 2014-05-21 | ||
4.2.2.005 | 18.12.2014 | Railon nykyinen vakaa versio |
alustat ja lisenssi
Railo kulkee servlettinä JVM: llä ja toimii minkä tahansa servlet-kontin kanssa (esim. Apache Tomcat, Eclipse Jetty) tai sovelluspalvelimet (esim.JBoss AS, GlassFish). Web-palvelimen (esimerkiksi Apache, IIS, Nginx, Cherokee) yhdistäminen on mahdollista Mod JK: n, Mod proxyn tai vastaavan kaltaisilla liittimillä, mutta tätä Railo ei tarvitse.
Railolla on asennusohjelma Linuxille, macOS: lle ja Windowsille, joka niputtaa Apache Tomcatin. Laiturilla on myös valmiiksi konfiguroitu Railo Express-lataus.
versiosta 4.0, Railolla on komentoriviversio, joka mahdollistaa CFML: n käytön yleiskielenä servlet-ympäristön ulkopuolella.
Railo on lisensoitu nimellä LGPL v2.1 V3.1: stä lähtien, lähdekoodin ollessa saatavilla GitHubilla
Philosophy
railon ensisijainen tavoite oli tarjota ColdFusion toiminnallisuus vähemmillä resursseilla ja paremmalla suorituskyvyllä, ja Railo Technologiesin tiimi pitää edelleen ”hitautta bugina” keskeisenä kehitysfilosofiana. Monet suorituskykytestit ovat osoittaneet, että Railo toimii muita CFML-moottoreita nopeammin.
lisäksi Railo yrittää korjata monia epäjohdonmukaisuuksia perinteisessä CFML: ssä. Nämä ovat joko pakotettuja käyttäytymismuutoksia tai konfiguroitavia vaihtoehtoja Railon Ylläpitäjässä.
Railo Technologiesin tiimi on aina ollut avoin palautteelle ja aktiivinen CFML-yhteisötapahtumissa ja haluaa muistuttaa ihmisiä siitä, että Railo on yhteisöllinen projekti.
Railo Technologiesilla on myös vahvoja teknologiakumppanuuksia CFML-ohjelmistoyritysten kanssa, mukaan lukien Blue River Interactive Group (Mura CMS: n kehittäjä), CONTENS Software GmbH (CONTENS CMS: n kehittäjä) ja Intergral GmbH (Fusionreactorin ja Fusiondebugin Kehittäjä) varmistaakseen, että niiden ohjelmistot toimivat hyvin Railon kanssa. Lisäksi Railo Technologies tarjoaa muodollisia ”kumppaniohjelmia” ratkaisuihin (kehitys), isännöintiin ja koulutukseen.
Railon sovelluspalvelin on tällä hetkellä keskimäärin 7.Ladattu (ja kasvaa) 000 kertaa kuukaudessa.
railoa käyttävät useat yritykset, mm.:
ominaisuudet
- tukee oliopainotteista ohjelmointia perintö -, mixins-ja metaluokilla
- dynaaminen tyypitys ja sorsatyypitys
- kirjaimellinen notaatio matriiseille ja rakenteille
- Embedding arguments named by variables in strings (interpolointi)
- , valinnaiset argumentit ja standardiargumentit
- Kohdemuuttujan vaihteluvälin kolme tasoa: Tämä (objekti Julkinen), muuttujat (objekti yksityinen), paikalliset (funktio yksityinen)
- useiden kokonaismuuttujien Laajuus: pyyntö, istunto, asiakas, Sovellus, Palvelin, klusteri
- erilaiset käyttäjän toimittamat muuttujaalueet: Form(Post), URL (Get), Cookie, CGI
- Automatic garbage collection (via JVM)
- Global and local exception handling (via
onError
andtry/catch
) - User-defined dispatch behavior (by
onMissingMethod
and implisiittiset getters and setters) - implisiittinen object conversion (by
_toString
,_toNumeric
,_toBoolean
,_toDate
) - Native Threads
- tuki Unicodelle, monimerkkiselle koodaukselle ja i18n: lle
- Suuri standardikirjasto, joka kattaa yleiset web-kehitystarpeet
- Railo Extension Store ja Laajennusten hallinta lisäohjelmistojen ja laajennusten helppoon asentamiseen
- natiivi plug-in API CFML: ssä tai Javassa
- natiivi käsittely verkkopalvelujen luontiin ja kulutukseen
- erilliset GUI-järjestelmänvalvojat yksittäisiin verkkoyhteyksiin sekä maailmanlaajuinen palvelimen ylläpitäjä
- kaikki Järjestelmänvalvojan asetukset voidaan konfiguroida ohjelmallisesti tai muokkaamalla XML-asetustiedostoja konfiguroidaan
- natiivit resurssit kaikille sisäänrakennetuille tiedostojärjestelmän tunnisteet ja toiminnot.
- ryhmittely ja synkronointi perinteisille palvelimille ja pilvipalvelimille
- Task Manager toistuvien toimintojen ajoittamiseen tai epäonnistuneiden tapahtumien uudelleen yrittämiseen
- natiivi tuki Hibernate ORM
- suuri määrä kuvanmuokkaustoimintoja
- tapahtumien yhdyskäytävät asynkronisen koodin suorittamiseen
- natiivi tuki erilaisille välimuisteille mekanismit
- natiivi Istunnonhallinta (CFML-istunnot tai J2EE-istunnot), joissa
onSessionStart
jaonSessionEnd
käynnistimet. - integroitu käyttäjän todentaminen ja roolitoiminnot.
turvallisuus
CFML: ssä on sisäänrakennettu toiminto, joka estää koodin syöttämisen cfqueryparam
tagin kautta, ja ominaisuuksia kuten HtmlEditFormat
, XmlFormat
, JsStringFormat
. On myös kolmannen osapuolen CFML toteutuksia OWASP Enterprise Security API. ja AntiSamy project.
yksi railon merkittävimmistä arkkitehtonisista päätöksistä oli seurata JEE servlet-mallia, joka tukee useita itsenäisiä verkkoyhteyksiä yhdellä palvelimella. Tämä on tärkeä turvallisuustekijä, koska se estää toisiinsa liittymättömiä sovelluksia häiritsemästä toisiaan, kuten voi tapahtua jaetulla ColdFusion-palvelimella (jossa on vain yksi web-konteksti).
Railo toteuttaa CFML-kielen-esimerkkejä ja CFScript löytyy CFML-syntaksiosiosta.
erot
erot muista kielistä
CFML: llä on tunnistepohjainen syntaksi, joka eroaa visuaalisesti useimmista muista kielistä. Sen lisäksi se muistuttaa muita dynaamisia kieliä seuraavin poikkeuksin:
- CFML sisältää kaksi syntaksia, tag-pohjaisen syntaksin (ei XML-yhteensopiva) ja C-syntaksin, jota kutsutaan cfscriptiksi.
- CFML: n ryhmät indeksoidaan yhdellä eikä nollalla.
- CFML tukee sekä järjestettyjä että nimettyjä funktioargumentteja tai niiden yhdistelmää.
- CFML: llä ei ole staattisia muuttujia.
erot Adobe ColdFusion
vaikka Railo toteuttaa CFML: n ja on yleisesti yhteensopiva Adobe ColdFusion (ACF): n, alkuperäisen CFML-moottorin kanssa, näiden kahden välillä on joitakin huomattavia eroja:
- Railo on avoimen lähdekoodin ohjelmisto LGPL v2.1: lle. ACF on oma teknologiansa.
- Railo käyttää multi-web context-arkkitehtuuria verrattuna ACF: n single web-kontekstiin.
- Railo mahdollistaa kustomoitujen toimintojen luomisen standardilla CFML: llä.
- Railo ei voi purkaa (tai suorittaa) ACF: n salausmekanismilla salattuja malleja.
- Railolla on huomattavasti nopeampi julkaisusykli duuri -, molli-ja patch-julkaisuille.
- railossa alueet ovat aina etusijalla. ACF: ssä ”Url” – nimisen muuttujan luominen voi estää pääsyn URL-avaruuteen. Railossa muuttujaa voi käyttää vain muodossa ” muuttujia.Url” voidaan käyttää.
- Railo etsii CFC-yhdisteitä mukautetusta tunnistepolusta vain, jos tämä on määritetty vastaavasti ylläpitäjässä (sen sijaan käytössä on erillinen CFC-polku).
- Railo 4.x ottaa käyttöön Komentorivirajapinnan (Cli), jonka avulla CFML-skriptejä voidaan suorittaa komentoriviltä
- Railo sallii objektimenetelmien käytön. Joten sen sijaan käyttää array Append (arr, ”arvo”), voidaan kirjoittaa: arr.lisää (”arvo”). Append(”anotherValue”).