piątek, 26 października 2007

GWT - module czy entry-point

W programowaniu często jest tak, że zrobienie podstawowej rzeczy jest proste i szybkie, dotyczy to w szczególności frameworków. W dystrybucji danej biblioteki mamy często mnóstwo przykładów, które charakteryzują się jednym elementem - są proste, niekiedy zbyt proste. Podobnie zresztą jest z większością tutoriali. Jednak czy jest to problem. Na początku nie, ale później owszem. Bo co z tego, że po zapoznaniu się z przykładami, czy kursami potrafimy zrobić jeden formularz skoro nie wiemy jak zaprojektować, a później zaprogramować całą aplikację. Oczywiście intuicja podpowiada programiście, w którym kierunku należy podążać, jednak zawsze zadaje sobie on pytanie czy jest to kierunek słuszny, zgodny ze sztuką i czy architektura jego aplikacji jest optymalna.

Właśnie na taki problem napotkałem tworząc aplikację w GWT. Moja aplikacja składać się miała z dwóch elementów: panelu dla użytkownika oraz panelu dla administratora. Jednak pewne elementy tych paneli miały być wspólne: zarówno elementy ekranu jak np. DialogBox, jak również serwisy RPC. Więc oto stanąłem przed dylematem, jak to rozwiązać w GWT - czy stworzyć jeden moduł z kilkoma elementami entry-point, czy kilka modułów. Na początku byłem skłonny tworzyć kilka entry-pointów, do czasu gdy uprzytomniłem sobie, iż moduły mogą po sobie dziedziczyć. Wówczas było już z górki, postanowiłem stowrzyć jeden moduł ogólny, w którym umieściłem wspólny kod dla obu paneli, oraz dwa moduły zawierające specyficzny kod, jeden dla panelu administratora, a drugi dla panelu użytkownika. Oczywiście te dwa moduły dziedziczyły po module ogólnym. Wszystko było w obrębie jednego projektu Eclipse.

Teraz przedstawie to od strony technicznej.
W pierwszej kolejności tworzymy moduł ogólny, który będzie wyglądał następująco:

Pakiety: Zawartość pakietów: Zawartość pliku Common.gwt.xml: Należy zwrócić uwage na to, iż ten moduł nie zawiera żadnego elementu entry-point, ponieważ będzie on przechowywał wszystkie elementy wspólne, a sam nie będzie uruchamiany, stąd też pakiet com.blogspot.coderlife.app.common.public jest pusty nie zawiera żadnej strony html.

W drugim kroku tworzymy moduł administratora, który będzie wyglądał następująco:

Pakiety: Zawartość pakietów: Zawartość pliku AdminPanel.gwt.xml: Ten moduł już będzie uruchamiany poprzez plik AdminPanel.html stąd zawiera on entry-point. Najbardziej istotne jest dziedziczenie tutaj po module Common.

Nie będę zamieszczał zawartości UserPanel ponieważ jest analogiczna do AdminPanel.

Reasumując wg mnie jeżeli aplikacja ma dwa niezależne panele (ekrany) powinno stworzyć się dwa moduły dla każdego z nich, natomiast wspólne elementy umieścić w trzecim wspólnym module (nie zawierającym żadnego entry-pointa).

Zachęcam Was do podzielenia się opiniami co do prawidłowego modelu tworzenia aplikacji w GWT.

1 komentarz:

Anonimowy pisze...

Source code or didn't happened!