Up: Architektura systemu CoSMoL
Budowa systemu
System podzieliłem na elementy (patrz rys. 2.2), które
współdziałają i komunikują się między sobą.
Tutaj krótko scharakteryzuję niektóre składowe systemu. Tym
ważniejszym będą poświęcone kolejne rozdziały.
Rysunek 2.2:
Architektura systemu CoSMoL
|
Na rysunku 2.2 można znaleźć m.in.:
- Interpreter MXML (patrz rozdz. 3) powiązany
z parserem języka MXML. Odpowiedzialny jest za tworzenie obiektów
graficznych i komunikację z przestrzenią krotek Lindy. Na potrzeby
systemu opracowałem własny język MXML, do opisu interfejsu graficznego
i akcji związanych z użytkownikiem i aplikacją. Ta część jest uruchamiania
w PalmPilocie.
- Serwer proxy odpowiedzialny za pośredniczenie
między klientem CoSMoL a przestrzenią krotek (patrz rozdz. 5).
- Bibliotekę dla przestrzeni krotek na potrzeby połączenia
zdalnego i lokalnego, która komunikuje klienta z przestrzenią
krotek Lindy (patrz rozdz. 4), a tym samym
z innymi serwisami i urządzeniami. Celem było stworzenie interfejsu
do różnych implementacji krotek Lindy, m.in. TSpaces [41]
i JavaSpaces [19]. Biblioteka może być stosowana przez klienta
dla urządzenia przenośnego (np. PalmPilot) -- w takim przypadku
jest to połączenie
zdalne przez serwer proxy, który używa tej samej biblioteki, ale już
bezpośrednio łączy się z przestrzenią krotek Lindy. W innej sytuacji
jest serwis lub klient, który jest połączony bezpośrednio, wtedy komunikacja z
przestrzenią krotek odbywa się na podobnej zasadzie co serwera proxy.
- Bibliotekę dla interfejsu graficznego umożliwiającą dostęp do
komponentów graficznych. Na potrzeby systemu użyłem dwóch bibliotek
graficznych: Abstract Window Toolkit (AWT) oraz biblioteki
elementów graficznych zdefiniowanych przez system operacyjny PalmOS.
Używane komponenty graficzne to przycisk (ang. button), etykieta
(ang. label), pole tekstowe (ang. text area),
lista (ang. list). Zaprojektowałem niezależną hierarchię klas
do zbudowania obiektów graficznych, które z powodu nazw lub innej
implementacji są niejednorodne w różnych systemach. W ten sposób
otrzymałem jednolity interfejs, który jest używany jako warstwa
pośrednia między aplikacją a biblioteką graficzną. Biblioteka ta jest
używana w PalmPilocie.
Interfejs użytkownika odseparowałem od danych i części sterującej aplikacją.
Rozwiązanie to jest
podobne do Model/Viewontroller (M/V) w języku programowania
SmallTalk [22]. W architekturze M/V warstwa aplikacji
(ang. model) jest oddzielona od warstwy prezentacji
(ang. view) i warstwy iterakcji (ang. controller).
W warstwie aplikacji znajdują się wszystkie obiekty zależne od aplikacji.
Warstwa prezentacji przedstawia użytkownikowi dane aplikacji. Warstwa
interakcji zapewnia współpracę pomiędzy urządzeniem wejściowym a warstwami
aplikacji i prezentacji. W czasie rozwiązywania zadań, warstwa interakcji
odbiera dane wejściowe i wywołuje odpowiednie funkcje z warstwy aplikacji.
Po zakończeniu zadania funkcja z warstwy aplikacji przesyła komunikat
do warstwy prezentacji i warstwy interakcji. Warstwa prezentacji uaktualnia
obraz zgodnie z tym co zawierał komunikat, żądając dalszych
informacji od warstwy aplikacji, w miarę potrzeby.
W taki sposób warstwa aplikacji ma
reprezentację w warstwie prezentacji i interacji, ale sama nigdy nie ma
dostępu do żadnej z nich. Z drugiej strony zarówno warstwa prezentacji,
jak i interakcji, mają dostęp do funkcji i danych
warstwy aplikacji kiedy jest to konieczne.
Klient jest uruchamiany w PDA i korzysta z interpretera MXML,
bibliotek do komunikacji i bibliotek graficznych oraz bezprzewodowego
połączenie. Może komunikować się z usługami używając przestrzeni krotek Lindy
jako bufora komunikacyjnego. Dzięki tym elementom, otrzymuję system
komunikacyjny dla urządzeń przenośnych oparty na przestrzeni krotek Lindy.
sierpień 2001