No i zdarzyło się, że dostałam propozycję, by popracować trochę pisząc aplikacje wykorzystujące zupełnie nowy dla mnie framework web2py. To bardzo ciekawy i zgrabny framework do szybkiego tworzenia aplikacji webowych. Zainicjowany w 2007 roku rozwija się prężnie i ciągle jest aktualizowany, choć jeszcze w oparciu o wersję 2.7 Pythona. W 2011 projekt zdobył nagrodę “Bossie Award” dla najlepszego oprogramowania opensource a w 2012 zdobył nagrodę „Technology of the Year” magazynu InfoWorld. Brzmi dobrze nie? Pewnie za jakiś czas poznam też ciemną stronę tego frameworka ale na razie podzielę się moimi wrażeniami z pierwszego wejrzenia.
Struktura
Framework z założenia opiera się na wzorcu MVC, w sumie nic nowego. Struktura katalogów bardzo przypomina tę, z którą miałam do czynienia w przypadku frameworków Yii i Kohana. Trudno się dziwić, to logiczny i wygodny układ i nie ma sensu wymyślać koła od nowa.
Widać wyraźny podział na katalogi przechowujące modele, kontrolery, widoki etc. Wnioskuję więc, że stosunkowo łatwo będzie mi się przyzwyczaić, choć przeskakując ostatnio między PHP (Symfony) a Pythonem (Django, web2py) doznaję dziwnego wrażenia, że grozi mi coś w rodzaju schizofrenii.
Łatwość
Twórcy web2py chwalą się, że ich framework jest bardzo łatwy, fachowo to się ostatnio mówi, że ma niski próg wejścia. Postulują skrócenie czasu nauki i zmniejszenie kosztów rozwoju i utrzymania aplikacji. Coś w tym jest. Kiedy przez ostatnie kilka miesięcy dokańczałam pewną aplikację w Symfony moja frustracja sięgała zenitu. Większość mojej pracy polegała na oprogramowaniu formularzy i tabelek. Zatem koncentrowała się na warstwie widoku w którym ponad dwadzieścia razy musiałam stworzyć strukturę tabeli za pomocą HTML, twig i pętli. Nuuuudy, cała frajda z tworzenia nowego oprogramowania wyparowała.
W web2py nie robi się takich przeraźliwie nudnych rzeczy. Znaczy robi się formularze i tabelki ale jest to zautomatyzowane na tyle, że wystarczy użycie odpowiedniej kontrolki, sparametryzowanie jej i wrzucenie do widoku. Tadam! I jest tabela z filtrami, podświetlonymi naprzemiennie liniami, przyciskami kontrolnymi i tym wszystkim co jest potrzebne ale nudne. I tu znów dostrzegam duże podobieństwo do Yii, który też oferuje podobne rozwiązania.
Podobnie w półautomatyczny sposób generuje się cały panel administracyjny, co z resztą ma też miejsce i w Django. Ponad to automatyczne generowanie formularzy, eksportów w wielu formatach oraz cały mechanizm autoryzacji i uwierzytelnienia. Zatem do oprogramowania naprawdę zostaje głównie “mięcho”.
DAL
Na pierwszy rzut oka zaimplementowany w web2py ORM wydał mi się bardzo podobny do tego z jakim można się spotkać w Django. A abstrakcyjna warstwa dostępu do bazy danych zapewnia duże bezpieczeństwo i zabezpiecza bazę przed wstrzykiwaniem SQL, zapewnia pełną walidację. Poza tym umożliwia współpracę z różnymi bazami danych. Mnie przyjdzie się zmierzyć z MSSQLem, ale o tym kiedy indziej.
I to by było tyle tych pochwał i komplementów. Tak jak wspomniałam na razie nie zauważyłam większych wad (no może poza tą wersja Pythona), ale tak często bywa przy pierwszym wejrzeniu. Jak jakieś się ujawnią i zalezą mi za skórę to niechybnie dam znać.
PS zapomniany link to projektu: WEB2PY
Liczyłem przy każdym z linków web2py, że to odnośnik do strony projektu, a nie słownik…
Testuję pewne rozwiązania. Rzeczywiście linku do projektu zabrakło za co przepraszam.