Django, Zend czy ASP.NET?
10.05.2013 18:00
Nie posiadam za wiele czasu na pisanie ale przyszła pora aby odświeżyć blog.
W trakcie ostatnich kilku miesięcy piszę bardzo dużo kodu. W trakcie tych miesięcy przyszło mi zająć się webdeveloperką więc musiałem poznać parę technologii i wykonać w nich pracę. Oczywiście technologie te a w zasadzie nazwy frameworków znajdują się tytule. Każdy z tych frameworków jest napisany w innym języku więc musiałem do swoich umiejętności dorzucić znajomość C# aby wykorzystywać ASP.NET i od niego zacznę.
ASP.NET
ASP.NET jest frameworkiem, który pozwala wykorzystując język C# i XAML na pisanie witryn internetowych. Można w nim pisać kod na 2 rożne sposoby. Pierwszy z nich to taki misz-masz w jakim programowało się kiedyś, kiedy MVC nie był zbyt często zaprzęgany. Osobiście ten styl pisania mi bardzo nie odpowiada więc ja pisałem z użyciem MVC. Jako, że ASP.NET był ostatnim frameworkiem z trzech powyższych jaki się uczyłem po stworzeniu projektu i obadaniu układu folderów, plików i nazewnictwa poczułem się jak ryba w wodzie.
I to było ostatnie dobre wrażenie z pracy w tym frameworku. Problem zaczął się wtedy gdy miałem podpiąć PostgreSQL'a. Okazało się, że nie jest to takie proste. Ściągałem miliony bibliotek, które miały umożliwić mi pracę i dopiero po całym dniu udało mi się podłączyć bazę. Myśląc, że już będzie z górki nie wiedziałem co mnie dalej czeka. Okazuje się, że stworzenie logowania jest katorgą 3 dni zajęło mi rozszyfrowanie działa mechanizmu logowania i napisanie klasy, która będzie dziedziczyć po MembershipProvider. Wszelkie inne kontrolki jakie serwuje mi Visual także nie chcą współpracować co w sumie mnie cieszy. Nigdy nie byłem fanem programowanie poprzez drag and drop. Jednakże IMO XAML nie jest wcale taki fajny jak to fanboye C# go opisują. Ostatecznie nakład pracy na moją witrynę jest o wiele większy niż ludzi, którzy zamiast PSQL korzystają z MS SQL Server. Natomiast posiadam o wiele większą kontrolę nad kodem. Jak widzę miny ludzi, którzy próbują załatać jakiś bug a programowali właśnie za pomocą drag and drop to mi się śmiać chce.
Dodam jeszcze, ze na moim laptopie z W7, 2GB ram, proc Pentium Dual Core 2.0GHz Visual Studio w wersji Professional muli jak diabli. Po prostu środowisko to ma kosmiczne wymagania, ale dzięki temu przestałem narzekać na Eclipse.
Django
Django jest frameworkiem do języka Python. Witryny pisane w tym frameworku mają narzuconą strukturę MVC (a w zasadzie jej odmianę o wdzięcznym skrócie PAC) jednakże nie widać tego na pierwszy rzut oka. Plik odpowiedzialny za bycie kontrolerem nazywa się Views, pliki widoków siedziały w folderze templates (bo w najnowszej wersji samemu sobie wybieramy folder lub jego brak). Jedynie plik model.py mówi czym faktycznie jest. Osobiście uważam, że dla początkujących webdeveoperów Django nie jest najlepszym wyborem.
Pracując z Django spędziłem 3 dni na zrozumienie całego mechanizmu działania formularzy. Nie jest on najprostszy szczególnie jak trzeba korzystać dodatkowo z jakichś aplikacji wspomagających ich tworzenie.
Mówiąc o aplikacjach warto wspomnieć, że do pracy na witrynie można zaprząc inne już gotowe aplikacje napisane w Pythonie. Jest to na pewno duży plus jednak trzeba przebrnąć przez plik settings.py, w którym trzeba dodać masę wpisów, które nie zawsze są do końca dla mnie jasne.
Jeśli chodzi o pliki widoków należy dodać, że aby dynamicznie tworzyć w nich jakieś akcje należy wykorzystywać język, który przypomina ten w Jinja 2. Osobiście uważam, że lepiej byłoby aby twórcy opracowali sposób na wstawki Pythonowe tak jak można to robić z PHP w Zend czy C# w ASP.NET.
Zend Framework 1.12
Wiem, że mamy już wersją 2 tego frameworka, jednakże nie mam czasu na naukę jego. Zend jest to framework do języka PHP i tak jak Django czy ASP.NET wykorzystuje on MVC. Struktura katalogów dla początkującego programisty może wydawać się bezsensowna ale uważam, że jak się z nią człowiek oswoi to cała ta struktura ma ręce i nogi. Dodatkowo nazwa folderu w pełni oddaje jego zastosowanie przez co nie ma wątpliwości do czego on służy (a nie jak wspomniany pliczek Views.py w Django).
Jeśli chodzi o Zenda bardzo fajnie został rozwiązany problem z plikami widoku. Musza one się nazywać tak jak metoda go wywołująca więc od razu wiadomo co gdzie jest (w ASP.NET też tak to działa).
Największą wadą Zend'a wg wielu programistów jest sztywność tego frameworka co mi bardzo pasuje. Po prostu pewne rzeczy są narzucone przez co nie muszę się martwić o wiele rzeczy np. walidację url'i ponieważ url zawsze wygląda w sposób adresserwer/kontroler/akcja/nazwaparametru/parametr. No ale tak już ten świat jest stworzony, że nie dogodzi się wszystkim.
Podsumowanie
Jeśli chodzi o pracę, jeśli nie będzie przymusu pisania stronki w ASP.NET to na pewno nigdy nie sięgnę po ten framework. Wydaje się on nieprzyjazny dla ludzi, którzy wolą pisać niż upuszczać kontrolki. Dodatkowo podłączenie do niego innej bazy danych niż MS SQL Server jest męczarnią a zrobienie mechanizmu logowania to nie lada wyczyn dla nawet bardzo dobrych programistów.
Co do Django to nie polecałbym go osobom zaczynającym z webdevelopingiem. Osobiście jeśli nie będę miał narzuconego języka/frameworka mam zamiar pisać witryny właśnie z użyciem Django ale to dlatego, że Python po prostu mi pasuje. Ma on swoje wady i zalety ale programistów Pythona po prostu nie ma dużo i jest to nisza, w której świetnie się czuję.
Co do Zend'a to jest to dobry framework do nauki MVC. Pisze się w tym bardzo szybko, jednak nie jestem zwolennikiem PHP. Nie wiem jak w wersji drugiej jednak w pierwszej najbardziej przeszkadzało mi w Zendzie sposób budowania formularzy z użyciem Zend_Form. Dodanie własnego atrybutu do niektórych kontrolek jest po prostu niemożliwe bez przeciążania metod klasy kontrolki. W takich przypadkach po prostu zamiast babrać się w PHP zaprzęgałem do pracy JS aby uzyskać cel.
A czy wy pracowaliście z tymi frameworkami? Jakie są wasze wrażanie z pracy?