Pułapki w Grails Framework [zamknięte]


12

Jakie są największe problemy / pułapki związane z korzystaniem ze środowiska Grails? Uczę się teraz frameworka i bardzo mi się podoba, ale muszę wiedzieć, jakie główne problemy mogę napotkać podczas jego używania i jak ich uniknąć.

Odpowiedzi:


13

IMO, najsłabszą częścią Grails był brak funkcji migracji modelu danych (m.in. migracje Rails ActiveRecord). Było kilka wtyczek innych firm o różnym poziomie jakości, ale nic oficjalnego.

Jednak właśnie odkryłem, że Liquibase został rozszerzony i przekształcony we wtyczkę do migracji bazy danych, i wygląda to obiecująco: http://www.grails.org/plugin/database-migration

Plusem jest to, że wszystko, do czego korzystałem z Grails (proste do umiarkowanie skomplikowane aplikacje internetowe), było w większości fantastyczne. Powiedziałbym, że mogę uzyskać około 2x do 3-krotny wzrost produktywności w porównaniu do stosu Java / Hibernate / Spring / Spring MVC.


1
+1. Grails wybrałem do dalszej pracy nad źle napisaną aplikacją Struts 1. Jedyną trudną dla mnie częścią było dzielenie się plikami cookie między dwoma serwletami. W przeciwnym razie była to całkowita wygrana.
kevin cline

5

Uruchamianie testów integracyjnych przebiegało powoli, ponieważ środowisko Grails wymaga czasu na załadowanie i do uruchomienia testu potrzeba tylko ułamka tego czasu. Zwiększy to czas zmiany podczas tworzenia kodu, który zapisuje do bazy danych. Drugi problem został już wspomniany przez Kaleba w jego odpowiedzi (dotyczącej migracji danych). Odkryłem również, że ilekroć utknąłem, liczba forów, na których mogłem uzyskać pomoc, była ograniczona w porównaniu z pomocą dostępną w hibernacji i wiośnie.


Testy trwania: wystarczy uruchomić je w trybie interaktywnym - w ten sposób można uniknąć rozruchu
rdmueller

3
Forum: Z mojego doświadczenia wynika, że uzyskanie odpowiedzi na wszystkie moje pytania w ciągu 4 godzin na StackOverflow - przede wszystkim kierować z Grails committers ...
rdmueller

3

Obecnym problemem związanym z korzystaniem z frameworka jest jego słaba integracja z systemem budowania stopni. Obecnie korzysta z wtyczki, aby to osiągnąć, ale sama wtyczka łamie się z nowymi wersjami grails (jak ostatnio próbowałem użyć i naprawić). Planują naprawić ten problem w przyszłej wersji, wprowadzając stopień do systemu kompilacji Grails (zamiast Gant), ale problemem jest brak systemu kompilacji, który można łatwo zintegrować. Jednak pułapka ta zniknie w przyszłości.

Kolejną pułapką jest dynamiczna natura języka. Naprawdę MUSISZ napisać testy na wszystko. Większość błędów w kodzie znajduje się w czasie wykonywania. To naprawdę inny sposób myślenia o programie. Poleganie na kompilatorze w celu znalezienia niektórych błędów nie zdarza się w tym frameworku. Nie twierdzę, że jest zły, jest po prostu inny (i pułapkę, jeśli go nie znasz).


2

Podoba mi się koncepcja całych grails / groovy, chociaż osobiście używałem zwykłego groovy bardziej niż grails. Sądzę, że oba są wspaniałe.

Jedynym minusem (moim osobistym doświadczeniem) jest słaba obsługa IDE. Pomyślałem (raczej optymistycznie), że skoro SpringSource miał doskonałą kompilację Eclipse i mocno wspierał Grailsa, to byłaby dobra droga. Groovy wtyczki są trudne do zainstalowania, uzupełnianie kodu jest niestabilne (zawsze problem z dynamicznymi językami, ale wybór 60 metod nie jest zbyt pomocny), debugowanie może być żmudne, ponieważ często wymaga przejścia przez wewnętrzny kod groovy, i, w najnowszej wersji instalacja groovy plugin psuje debugger Java!


0

Obecnie ma słabą obsługę klas abstrakcyjnych. Na przykład nie można powiązać listy implementacji w jeden List<T>obiekt obiektu polecenia. Oczywiście jest to przede wszystkim denerwujące, ponieważ przywykłem do magicznego wiązania wszystkiego innego! :RE

Generalnie jest to po prostu rodzaj „zielonego”; w końcu napotykasz dziwne ograniczenia i błędy. Ale za kilka lat to naprawdę długa droga.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.