Dwie generacje narzędzi
- Marian Łakomy,
- 24.04.1995
Typowy scenariusz opracowywania aplikacji klient/serwer składa się z przygotowania projektu pilotażowego, obejmującego niewielką część potrzebnych aplikacji i na tej podstawie podjęcie decyzji, jak postępować dalej.
Typowy scenariusz opracowywania aplikacji klient/serwer składa się z przygotowania projektu pilotażowego, obejmującego niewielką część potrzebnych aplikacji i na tej podstawie podjęcie decyzji, jak postępować dalej.
Jednakże często ten etap okazuje się najtrudniejszy do przeskoczenia. Wprawdzie projekt pilotażowy został wykonany poprawnie, aplikacja klient/serwer działa, ale podjęcie decyzji, że wszystkie pozostałe aplikacje w firmie wykona się w tej samej technologii może narazić firmę nie tylko na poważne opóźnienia, ale także doprowadzić do powstania współczesnego "mastodonta klient/serwer", z którym za kilka lat trudno sobie będzie poradzić.
Projekt pilotażowy można wykonać za pomocą powszechnie dostępnych, tanich narzędzi, często zwanych narzędziami pierwszej generacji klient/serwer. Niestety, łatwość użycia i niska cena skutecznie ukrywa ich poważną wadę: niewielką funkcjonalność oraz powiązanie z jednym, dwupoziomowym modelem aplikacji klient/serwer. Większość tych narzędzi produkuje "grubego klienta", zawierającego większość kodu aplikacji i odwołującego się do usług serwera jedynie w niewielkiej części.
Jeżeli na wszystkie podane poniżej pytania odpowiemy "tak", spokojnie możemy korzystać z narzędzi pierwszej generacji.
* Czy aplikacja pozostanie stosunkowo niewielka i samodzielna?
* Czy aplikacja przeznaczona jest dla niewielkiej grupy użytkowników, korzystających regularnie z programów w środowisku graficznym (Windows, OS/2)?
* Czy większość użytkowników stale potrzebuje wysoce wydajnego komputera PC do pracy?
* Czy aplikacja korzysta z danych obsługiwanych przez jeden system zarządzania bazami danych?
Jeżeli jednak liczba odpowiedzi "nie" przekroczyła liczbę odpowiedzi "tak", prawdopodobnie potrzebujesz narzędzi drugiej generacji. Tu pojawia się druga seria pytań.
* Czy jest prawdopodobne, że aplikacja będzie się rozrastać co do rozmiaru i złożoności?
* Czy trzeba będzie obsługiwać dużą liczbę użytkowników?
* Czy logika przetwarzania jest złożona i będzie wspólnie wykorzystywana przez wiele aplikacji (da się wydzielić w postaci serwera tej logiki)?
Jeżeli udzielamy odpowiedzi "tak" na większość z tych pytań, to najwyższy czas na przyjrzenie się narzędziom
klient/serwer drugiej generacji. Te narzędzia właśnie pojawiły się na rynku, albo zaczynają się pojawiać. I są to zarówno narzędzia dostarczane przez producentów systemów baz danych Oracle, IBM, Informix czy Sybase jak i producentów niezależnych: Seer Technology, Forte, PowerSoft i in.
Każde z tych narzędzi ma inny zestaw cech funkcjonalnych, ale mają one także pewne cechy wspólne:
* Pozwalają na rozdzielenie kodu między klientami a serwerami. Dają więc możliwość opracowania "chudego klienta". Pozwalają na dołączenie dodatkowych serwerów specjalistycznych usług (tworzenie aplikacji wielowarstwowych).
* Pozwalają na tworzenie aplikacji skalowalnych, działając zarówno na platformach jednoprocesorowych, jak na komputerach z przetwarzaniem symetrycznym i systemach operacyjnych SMP.
* Korzystają z wielowątkowości i wielozadaniowości systemów operacyjnych i systemów zarządzania bazami danych.
Jeżeli więc planujemy długofalowo, należy od razu rozejrzeć się za narzędziami drugiej generacji i tak opracowywać aplikację, aby nie było potrzeby kompletnie jej zmieniać za kilka lat, gdy zmienią się nasze potrzeby.