Railo

Serwer Railo
Deweloperzy Railo Technologies, Michael Offner, Gert Franz
Pierwsze wydanie kwiecień 2006
Wersja stabilna
4.2.2.005 / 18 grudnia 2014 ; 8 lat temu ( 18.12.2014 )
Magazyn
Napisane w Jawa
System operacyjny Windows , Linux , Unix , macOS
Dostępne w angielski, niemiecki
Typ Serwer aplikacji
Licencja LGPL v2.1
Strona internetowa github.com/getrailo/railo _ _ _

Railo Server , powszechnie określany jako Railo ( / r l aplikacji / RY -loh ), to oprogramowanie typu open source , które implementuje język skryptowy CFML po stronie serwera ogólnego przeznaczenia , często używany do tworzenia dynamicznych stron internetowych , internetowych i systemów intranetowych . CFML jest dynamicznym językiem obsługującym wiele paradygmatów programowania i działa na Wirtualna maszyna Javy (JVM).

Railo zostało stworzone przez szwajcarską firmę Railo Technologies GmbH, pomyślane jako wydajna alternatywa dla Adobe ColdFusion . W 2008 roku Railo przeszedł na model oparty na społeczności open source i stał się JBoss . Projekt Railo Open Source jest prowadzony przez Railo Technologies, a prace rozwojowe są finansowane z umów konsultingowych i wsparcia, ale każdy może wnieść kod do rozważenia.

Nazewnictwo

Railo został nazwany na cześć obcego psa ze Star Trek: Enterprise . Pies w rzeczywistości nazywa się Rhylo, ale fonetycznie po niemiecku to Railo. Zatem Railo można wymawiać albo jako rhy-lo, albo jako rai-lo - oba są dopuszczalne.

Główne wydania Railo mają kryptonim znanych i lojalnych psów z historii.

Historia

Railo rozpoczął się w 2002 roku jako studencki projekt Michaela Offnera i Gerta Franza, mający na celu skompilowanie kodu CFML do PHP , wybór dokonany ze względu na wszechobecność PHP, jednak stwierdzono, że nie zapewniało to pożądanej wydajności i stabilności, a decyzja była zamiast tego przełączyć się na Java .

Projekt okazał się na tyle udany, że postanowiono dalej rozwijać się w pełnoprawny produkt. Kilka wydań alfa i beta zostało wydanych przed oficjalnym wydaniem 1.0 w kwietniu 2006. Railo był nadal rozwijany, ale był stosunkowo nieznany wielu programistom CFML, aż do czerwca 2008 na konferencji Scotch on the Rocks w Edynburgu, kiedy Railo Technologies użyło Day 2 keynote, aby ogłosić partnerstwo z JBoss i przejście na open source.

W maju 2012 r. na zob. Konferencja obiektywna, ogłoszono powstanie "The Railo Company Ltd", Prywatnej Spółki z ograniczoną odpowiedzialnością , w skład której wchodzi szwajcarska firma Railo Technologies GmbH wraz z pięcioma innymi firmami działającymi w branży CFML.

Widelec Luce

W dniu 29 stycznia 2015 r. Projekt Lucee , rozwidlenie bazy kodu Railo 4.2, został ogłoszony przez pierwotnego programistę Railo, który stwierdził, że nie będzie dalej pracował nad Railo. Pozostali programiści potwierdzili, że również będą skupiać się wyłącznie na Lucee i – chociaż The Railo Company nie wydało oficjalnego oświadczenia – społeczność jest zgodna co do tego, że dalszy rozwój projektu Railo jest mało prawdopodobny.

W dniu 19 lipca 2016 r. Spółka Railo została rozwiązana.

Historia wydania


Wersja główna (nazwa kodowa)
Wersja drugorzędna Data wydania Notatki
0 Alfa 1 2004-04-10 Pierwsza oficjalna wersja silnika Railo CFML.
Alfa 2 2004-05-18
Alfa 3 2004-08-03
Alfa 4 2004-10-21
Beta 1 2005-01-16 Pierwsza wersja beta Railo.
Beta 2 2005
Beta 3 2005
RC1 2005-09-23 Pierwszy Release Candidate Railo został przedstawiony niemieckiemu CFUG w Monachium.
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'ego )

3.1.0.000 2009-08-12 Pierwsza wersja Open Source Railo.
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 Dodano wbudowaną obsługę ORM i wielu innych funkcji.
3.3.4.003 2012-06-25
4.0

( Apollo )

4.0.0.013 2012-07-02
4.0.5.004 2013-07-09
4.1

( koniec )

4.1.2.005 2013-12-11 .
4.2

( Togo )

4.2.0.009 2014-05-14
4.2.1.000 2014-05-21
4.2.2.005 2014-12-18 Bieżąca stabilna wersja Railo

Platformy i licencja

Railo działa na maszynie JVM jako serwlet i będzie działać z dowolnym kontenerem serwletów (np. Apache Tomcat , Eclipse Jetty ) lub serwerem aplikacji (np. JBoss AS , GlassFish ). Istnieje możliwość podłączenia serwera WWW (np. Apache , IIS , nginx , Cherokee ) z przodu za pomocą konektorów takich jak mod jk , mod proxy lub odpowiednik, ale nie jest to wymagane przez Railo.

Railo ma instalator dla systemów Linux , macOS i Windows , który zawiera Apache Tomcat . Istnieje również wstępnie skonfigurowane pobieranie Railo Express przy użyciu Jetty .

Począwszy od wersji 4.0, Railo będzie miało wersję wiersza poleceń , umożliwiającą używanie CFML jako języka ogólnego przeznaczenia, poza środowiskiem serwletów.

Railo od wersji 3.1 jest licencjonowane jako LGPL v2.1, z kodem źródłowym dostępnym na GitHub

Filozofia

Głównym celem Railo było zapewnienie funkcjonalności ColdFusion przy mniejszym zużyciu zasobów i zapewnieniu lepszej wydajności, a zespół Railo Technologies nadal „traktuje powolność jako błąd” jako podstawową filozofię rozwoju. Wiele testów wydajności wykazało, że Railo działa szybciej niż inne silniki CFML.

Oprócz tego Railo próbuje rozwiązać wiele niespójności występujących w tradycyjnym CFML. Są to albo wymuszone zmiany w zachowaniu, albo konfigurowalne opcje w Railo Administratorze.

Zespół Railo Technologies zawsze był otwarty na opinie i aktywny na wydarzeniach społecznościowych CFML i chętnie przypomina ludziom, że Railo jest projektem społecznościowym.

Railo Technologies tworzy również silne partnerstwa technologiczne z firmami zajmującymi się oprogramowaniem CFML, w tym Blue River Interactive Group (twórcy Mura CMS), CONTENS Software GmbH (twórcy CONTENS CMS) i Intergral GmbH (twórcy FusionReactor i FusionDebug ), aby zapewnić, że ich oprogramowanie dobrze współpracuje z Railo. Ponadto Railo Technologies oferuje formalne „programy partnerskie” dla rozwiązań (rozwoju), hostingu i szkoleń.

Stosowanie

Serwer aplikacji Railo ma obecnie średnio 7000 pobrań (i rośnie) miesięcznie.

Railo jest używany przez wiele firm, w szczególności:

Cechy

  • Obsługuje programowanie obiektowe z dziedziczeniem , domieszkami i metaklasami
  • Pisanie dynamiczne i kaczka
  • Notacja literałowa dla tablic i struktur
  • Osadzanie zmiennych w łańcuchach ( interpolacja )
  • Nazwane argumenty , opcjonalne argumenty i domyślne argumenty
  • Trzy poziomy zasięgu zmiennej obiektowej: This (obiekt publiczny), Variables (obiekt prywatny), Local (funkcja prywatna)
  • Wiele zakresów zmiennych globalnych: żądanie, sesja, klient, aplikacja, serwer, klaster
  • Różne zakresy zmiennych udostępniane przez użytkownika: Form (post), Url (get), Cookie, CGI
  • Automatyczne wyrzucanie elementów bezużytecznych (przez JVM)
  • Globalna i lokalna obsługa wyjątków (przez onError i try/catch )
  • Niestandardowe zachowanie wysyłania (poprzez onMissingMethod i niejawne moduły pobierające i ustawiające)
  • Niejawna konwersja obiektów (poprzez _toString , _toNumeric , _toBoolean , _toDate )
  • Wątki rodzime
  • Obsługa Unicode , kodowania wielu znaków i i18n
  • Duża standardowa biblioteka, obejmująca typowe potrzeby związane z tworzeniem stron internetowych
  • Railo Extension Store i Extension Manager do łatwej instalacji dodatkowego oprogramowania i rozszerzeń
  • Natywne API wtyczek w CFML lub Javie
  • Natywna obsługa ułatwiająca tworzenie i korzystanie z usług sieciowych
  • Oddzielni administratorzy GUI dla poszczególnych kontekstów internetowych oraz globalny administrator serwera
  • Wszystkie ustawienia administratora można konfigurować programowo lub poprzez edycję plików konfiguracyjnych XML
  • Natywne zasoby dla wszystkich wbudowanych tagów i funkcji systemu plików.
  • Klastrowanie i synchronizacja zarówno dla serwerów tradycyjnych, jak i chmurowych
  • Menedżer zadań do planowania powtarzających się działań lub ponawiania nieudanych zdarzeń
  • Natywne wsparcie dla Hibernate ORM
  • Duża liczba funkcji manipulacji obrazem
  • Event Gateways do asynchronicznego wykonywania kodu
  • Natywna obsługa wielu różnych mechanizmów buforowania
  • Natywne zarządzanie sesjami (sesje CFML lub sesje J2EE) z wyzwalaczami onSessionStart i onSessionEnd .
  • Wbudowana funkcja uwierzytelniania użytkowników i ról.

Bezpieczeństwo

CFML ma wbudowaną funkcjonalność zapobiegającą wstrzykiwaniu kodu za pomocą znacznika cfqueryparam oraz funkcje takie jak HtmlEditFormat , XmlFormat , JsStringFormat . Istnieją również implementacje CFML innych firm OWASP Enterprise Security API i projekt AntiSamy.

Jedną z kluczowych decyzji architektonicznych podjętych w Railo było podążanie za modelem serwletów JEE, z obsługą wielu niezależnych kontekstów sieciowych na jednym serwerze. Jest to kluczowy czynnik bezpieczeństwa, ponieważ zapobiega wzajemnemu zakłócaniu się niepowiązanych ze sobą aplikacji, co może się zdarzyć na współdzielonym serwerze ColdFusion (który ma tylko jeden kontekst sieciowy).

Składnia

Railo implementuje język CFML - zobacz sekcję Składnia CFML dla przykładów, jak również CFScript .

Różnice

Różnice w stosunku do innych języków

CFML ma składnię opartą na znacznikach, która różni się wizualnie od większości innych języków, chociaż poza tym jest podobna do innych języków dynamicznych, z następującymi wyjątkami:

  • CFML zawiera dwie składnie, składnię opartą na znacznikach (niezgodną z XML) oraz składnię w stylu C, zwaną cfscript.
  • Tablice w CFML są indeksowane od jednego, a nie od zera.
  • CFML obsługuje zarówno uporządkowane, jak i nazwane argumenty funkcji lub kombinację.
  • CFML nie ma zmiennych statycznych.

Różnice w stosunku do Adobe ColdFusion

Podczas gdy Railo implementuje CFML i jest ogólnie kompatybilny z Adobe ColdFusion (ACF), oryginalnym silnikiem CFML, istnieją pewne zauważalne różnice między nimi:

  • Railo to oprogramowanie LGPL v2.1 typu open source . ACF to zastrzeżona technologia.
  • Railo wykorzystuje architekturę wielu kontekstów sieciowych, w porównaniu do pojedynczego kontekstu sieciowego ACF.
  • Railo umożliwia tworzenie „wbudowanych” funkcji zdefiniowanych przez użytkownika przy użyciu standardowego CFML.
  • Railo nie jest w stanie odszyfrować (ani wykonać) szablonów, które zostały zaszyfrowane za pomocą mechanizmu szyfrowania ACF.
  • Railo ma znacznie szybszy cykl wydawniczy dla wydań głównych, pomocniczych i poprawek.
  • W Railo zakresy zawsze mają pierwszeństwo. W ACF utworzenie zmiennej o nazwie „Url” może zablokować dostęp do zakresu Url. W Railo dostęp do zmiennej można uzyskać tylko jako „Variables.Url”.
  • Railo wyszukuje CFC tylko w niestandardowej ścieżce znacznika, jeśli została odpowiednio zdefiniowana przez administratora (zamiast tego ma odrębną ścieżkę CFC).
  • Railo 4.x wprowadza interfejs wiersza poleceń (CLI), który umożliwia wykonywanie skryptów CFML z wiersza poleceń
  • Railo umożliwia stosowanie metod obiektowych. Zamiast więc używać tablicy Append (arr, "value") można napisać: arr.append("value").append("anotherValue").

Zobacz też

Linki zewnętrzne