Szalejące frameworki Rubiego i Rack/WSGI

Opublikowane przez Jarosław Zabiełło Tue, 04 Mar 2008 21:56:00 GMT

Merb w wersji 0.9 poszedł na całość i oparli swój midleware na Rack’u. Jej twórcy nie kryją się że wzorowali się na pythonowej bibliotece WSGI. Biblioteka ta robi niezłą furorę w kręgach Rubiego. Powstaje sporo różnych mikroframeworków lub szybkich serwerów HTTP pracujących asynchronicznie i wykorzystujących Rack. Niedawno powstał świetny Thin, a już można przeczytać o 2x szybszy Ebb. Co ciekawe, Ebb chce docelowo obsługiwać zarówno frameworki Rubiego jak i Pythona! Jestem ciekaw czy będzie w stanie zdetronizować serwer Paste... Rack doczekał się już swojej implementacji w JRuby! Umożliwia to tym samym odpalanie w JRuby wszystkich frameworków które korzystają z Rack’a.

Frameworki

  • Rails – najważniejszy framework Rubiego, może być odpalany za pomocą Thina który używa Rack. Rails można odpalić na JRuby nawet prosto z Netbeans 6 :)
  • Merb – pretendent do detronizacji Rails, _używa Rack_i tym samym można go odpalić na JRuby.
  • Ramaze – podobnie do Merba, stara się promować bardziek elastyczne podejście, używa Rack, raczej nie zagrozi Merbowi
  • Fuzed – Rails z YAWS (szybkim serwerem HTTP napisanym w Erlangu)
  • Nitro – typu MVC z własnym ORMOgg i naciskiem na AJAX
  • IOWA – komponentowy,
  • Wee wzorowany na smalltalkowym Seaside używającym kontynuacji
  • Sinatra – mikroframework wzorowany na minimalistycznym, pythonowym Web.py
  • Camping – kolejny mikroframework w Ruby
  • Wave – wzorowany na Camping, też używa Rack i Rubiego wszędzie gdzie się da.
  • Invisible mikroframework używający Rack napisany w 35 linijkach kodu Rubiego (bardziej ciekawostka)

Mongrel i spółka

  • Webrick – serwer http dostępny razem ze standardową biblioteką Rubiego
  • Highperformance Webrick – szybsza wersja Webricka (używająca uniksowych forków)
  • Mongrel – klasyka, napisany częściowo w C, to od niego zaczęła się rewolucja i odejście od FastCGI jako metody odpalania Railsów.
  • Swiftyply i evented_mongrel asychroniczne, szybsze wersje Mongrela
  • Thin – asynchroniczny web server używający Mongrela i Rack
  • Ebb – używa Rack, większość kodu jest w C, dlatego jest taki szybki, na razie mało dokumentacji, być może następca Thin

Tagi , , , , , , , , , , ,  | 9 comments

Comments

  1. Avatar Jiima powiedział 1 day later:

    Część tych frameworków to zabawki, które zamarły w rozwoju. Ale skoro wspominasz o różnych projektach opartych na Rack’u, to spojrzyj jeszcze na Waves:

    http://rubywaves.com/

    Autor twierdzi, że inspiracją dla niego był Camping.

    BTW, zbudowanie czegoś w stylu WSGI było dobrym pomysłem. Tego typu API bardzo pomaga, gdyż nie trzeba od początku wynajdować koła. Wystarczy spojrzeć na Servlet API i jaki to był skok w stosunku do CGI i FastCGI :)

  2. Avatar Tomash powiedział 2 days later:

    Przeoczyłeś jeden nowy, zapowiadający się ciekawie framework – Waves: http://rubywaves.com/

    Ebb sprawdziliśmy w firmie z chwilą trafienia na niusa na RubyInside i… działa! Prawdopodobnie aktualnie robiony projekt postawimy już na Ebb, zamiast Mongrelu.

  3. Avatar Jarosław Zabiełło powiedział 2 days later:

    Ten Wave mnie jakoś nie porywa. Wszystko w Ruby, wszędzie bloki, jakiś taki nieczytelny na pierwszy rzut oka. No i te sesje oparte na plikach (ale to pewnie dlatego, że jeszcze to mocno niedojrzały projekt) Z tym Ebb to chyba sam zacznę go też używać skoro taki szybki.

    Na stronie Ramaze jest zgromadzona jeszcze większa lista frameworków w Ruby. To zaczyna wyglądać na jakieś szaleństwo :)

  4. Avatar Framework Madness powiedział 2 days later:

    Niedlugo kazdy szanujacy sie rubysta bedzie musial napisac swoj framework.

  5. Avatar Tomash powiedział 3 days later:

    Lepsze to niż każdy pehapowiec piszący własną warstwę abstrakcji do obsługi bazy danych (czy czegokolwiek innego) ;)

    @Jarosław: Waves na razie nie oferują nic ponad Railsy, a ponadto mają paskudny system szablonów (jakiś ezoteryczny DSL na bazie Rubiego, zamiast solidnych htmli ze wstawkami). Ale zapowiadają się ciekawie.

  6. Avatar greno powiedział 3 days later:

    Na razie testuję ponoć rails killer tj.Merb’a i znalazłem niedoróbki: merb_helpers nie do końca chce współpracować z widokami haml.Przykład: zróbcie przykład dla “form_for” dokumentacji dla szablonów haml’a; działa poprawnie na szablonach *.erb.

  7. Avatar rsz powiedział 4 days later:

    Tomash: ale przecież pisanie przez każdego własnego frameworka to właśnie JEST ideologicznie (i często praktycznie) to samo, co pisanie przez każdego własnej warstwy abstrakcji danych…

  8. Avatar Jiima powiedział 5 days later:

    @Rsz

    Niezupełnie :P. Pisanie frameworka wynika z ideologii na ogół, a nie z potrzeby. Ot – nie podoba mi się parę rzeczy, więc to zmienię.

    Za to w PHP wynika to albo z potrzeby, albp z ?... Sam nie wiem. Jest taka kategoria developerów, którzy nie wiedzą co to google, biblioteka itp. Dość często spotykany gatunek w PHP development… Choć ja ostatnio akurat spotkałem takich w światku Javy, co więcej są to “profesjonalni konsultanci”. Mając Prototype w projekcie piszą od zera żądania XHR, mając iBatisa piszą od zera żądania JDBC, a jeden to nawet własną klasę loggera napisał…

  9. Avatar Czajnik powiedział 23 days later:

    @Jiima: Nie porównywałbym Servlet API i CGI/FastCGI :-)

    A WSGI wydaje mi się przekombinowane jeśli chodzi o obsługę błędów, zwłaszcza w porównaniu z Servlet API :)

(leave url/email »)

   Pomoc języka formatowania Obejrzyj komentarz