Aplikacje klient/serwer i IntraBuilder

Jeżeli zamierzasz opracować aplikacje klient/serwer dla intranetu, Borland IntraBuilder jest jednym z najlepszych narzędzi do tego celu.

Jeżeli zamierzasz opracować aplikacje klient/serwer dla intranetu, Borland IntraBuilder jest jednym z najlepszych narzędzi do tego celu.

Opracowanie aplikacji klient/serwer dla Internetu i intranetu wymaga na ogół posługiwania się wieloma narzędziami i językami programowania. Borland IntraBuilder jest jednym z najlepszych narzędzi, opartym na jednej: technologii, języku programowania i graficznej metodzie przygotowania aplikacji.

Co to jest IntraBuilder?

Borland IntraBuilder jest to obiektowe środowisko do opracowania aplikacji oparte na języku JavaScript (opracowanym przez Netscape). Zawiera rozszerzenia właściwości tego języka, związane z obsługą baz danych, częściami aplikacji wykonywanymi na serwerze oraz ma wszystkie podstawowe właściwości języków programowania obiektowego: dziedziczenie, kapsułkowanie danych w obiektach, polimorfizm, instancje obiektów podczas działania programu i obsługę wyjątków. Dla potrzeb aplikacji bazodanowych włączono takie ważne elementy, jak: obsługa transakcji, blokowanie wierszy tabeli baz danych i zapewnienie bezpieczeństwa dostępu do danych.

Dostęp do bazy danych

Dostęp do bazy danych zapewnia Borland Database Engine BDE (inna nazwa zestawu komunikacyjnego IDAPI, konkurencyjnego w stosunku do ODBC) - zestaw programów i sterowników dostępu do danych na biurko. Zestaw firmowych sterowników SQLüLinks zapewnia dostęp do baz danych SQL (IBM DB2, Oracle, Sybase, Informix, InterBase i Microsoft SQL Server); można także korzystać ze sterowników ODBC.

Po zakupieniu przez Borlanda firmy Open Environment Corp. oferuje on także zestaw Entera 3.2, umożliwiający dostęp do baz danych ISAM/VSAM na dużych komputerach i w aplikacjach CICS.

Opracowanie aplikacji

Główne elementy IntraBuilder to: IntraBuilder Designer i IntraBuilder Server. Designer służy do tworzenia dwóch podstawowych elementów aplikacji: formatek ekranowych i raportów. Formatki służą do wyświetlania danych i operowania na nich; raporty pokazują dane w formie listingów. Oba te elementy są tworzone jako programy w języku JavaScript.

Aplikacje tworzone są wizualnie w module IntraBuilder Designer przez ustawianie na ekranie różnych elementów składowych: przycisków, pól tekstowych, list rozwijanych i pól podlegających edycji. Z każdym elementem związane są zdarzenia i metody (operacje). Programy powstają przez ustawianie obiektów na formatkach lub raportach i dodanie programu w języku JavaScript dla zdefiniowania zdarzeń obiektów. Większość zdarzeń związanych z obiektem może być wykonywana na serwerze lub na stacji klienta: decyzję, co podziału aplikacji na część serwerową i kliencką, podejmuje programista w chwili definiowania obsługi zdarzenia.

Elementy dostępu do danych

W celu stworzenia połączenia z bazą danych używane są obiekty z klasy Database. Najczęściej stosowanym obiektem jest Query do tworzenia zapytań do bazy. Jest to pojemnik na zapytania SQL i pewną liczbę wierszy (rowset), zwróconych przez serwer bazy danych po wykonaniu zapytania (w terminologii baz danych zestaw ten nazywa się kursor). Dane są dostępne przez obiekt o nazwie Rowset. Jedno zapytanie zwraca tylko jeden zestaw wierszy, ale w pojemniku Query może znaleźć się więcej niż jedno zapytanie i można otrzymać więcej niż jeden zestaw odpowiedzi z bazy danych. Pozwala to na tworzenie formatek typu masterüdetail (np. dostawca i wszystkie jego dostawy, klient i jego zamówienia). Możliwe jest także poruszanie się w ramach zestawu odpowiedzi (scrollable cursor).

W pakiecie zawarty jest graficzny generator zapytań, pozwalający na łączenie tabel, wybieranie pól i reorganizację wyników.

Ważnym elementem dostępu do danych jest obiekt sesyjny Session. Pozwala on na tworzenie wielu sesji dostępu do jednej bazy danych.

Projektowanie raportów

Do projektowania raportów podających wyniki do przeglądarki w formie strony HTML używany jest Report Designer. Jest to narzędzie dwukierunkowe: raport można tworzyć wizualnie lub przez pisanie programu w języku JavaScript; wyniki z jednej postaci pojawią się automatycznie w drugiej, a każda zmiana skryptu zmienia graficzną postać raportu (i odwrotnie).

Sesja połączeniowa

Programistom aplikacji bazodanowych dla Web duże trudności sprawia konieczność zapewnienia informacji o stanie połączenia. W Internecie każde przesłanie strony HTML jest oddzielną sesją TCP/IP, co praktycznie uniemożliwia utrzymywanie połączenia na czas trwania transakcji, utrudnia cofnięcie transakcji w razie nieudania się jej części itp. Do obsługi transakcji konieczne jest utrzymywanie informacji o poprzednich działaniach użytkownika (programu po stronie klienta). Wczesne narzędzia do tworzenia dynamicznych stron HTML na podstawie zawartości bazy danych pomijały ten problem. Uniemożliwiało to ich używanie do obsługi transakcji, za to można je było wykorzystać do pobierania danych z bazy. W pewnych nowszych narzędziach wprowadzono "boczną furtkę" utrzymywania połączenia i pobierania informacji o działaniach klienta za pośrednictwem oddzielnego protokołu Internet InterüORB (IIOP), działającego na TCP/IP bez posługiwania się protokołem HTTP.

IntraBuilder ma wbudowaną obsługę wirtualnej sesji połączeniowej. Nasuwa się więc pytanie: jak serwer bazy danych utrzymuje informacje o stanie poszczególnych użytkowników i aplikacji, którymi się posługują? Odbywa się to przez zapamiętywanie stanu obiektu Query z każdej przeglądarki dołączonej do bazy. Operacja ta nie wymaga żadnych działań ze strony programisty. Na przykład po zażądaniu następnego wiersza z zestawu wierszy, IntraBuilder podaje do przeglądarki właściwy wiersz, uzyskany w wyniku wykonania zapytania konkretnego klienta.

Jak zakończyć sesję połączeniową? Ponieważ nie ma informacji o tym, czy użytkownik będzie jeszcze korzystał z danych lub zakończył pracę, IntraBuilder używa prostego wskaźnika końca sesji: jeżeli w ciągu 20 minut nie wystąpiła żadna akcja ze strony użytkownika - sesja połączeniowa z nim kończy się.

Obsługa transakcji

W obsłudze wielu użytkowników tej samej bazy danych zasadnicze znaczenie ma ich jednoczesny dostęp do danych. W praktyce producenci baz danych stosują najczęściej dwa podejścia: pesymistyczne i optymistyczne blokowanie dostępu do wierszy bazy danych.

Blokowanie pesymistyczne. Jeżeli aplikacja użytkownika zablokuje zapis do używanych przez niego danych (nawet jeśli korzysta z nich tylko do odczytu), to ma on pewność, że sięgając po nie następny raz uzyska ten sam wynik. IntraBuilder stosuje ten sposób blokowania danych automatycznie w razie modyfikowania danego wiersza danych przez użytkownika. Blokadę zakładana jest na jeden wiersz lub zestaw wierszy (zależnie od możliwości serwera bazy danych). Wiersze zablokowane przez jednego użytkownika mogą być pobierane do odczytu przez innego, ale nie mogą być przez niego modyfikowane.

Blokowanie optymistyczne. Polega na tym że nie zakładana jest blokada na wiersze pobierane do odczytu. Jeżeli serwer bazy danych pozwala na stosowanie tzw. wielowersyjności (każdy użytkownik korzysta z bazy, tak jakby był jej jedynym użytkownikiem) lub automatycznego kopiowania części bazy do jej migawki (snapshot), to użytkownik nie musi blokować dostępu do bazy innym użytkownikom. Korzysta bowiem z kopii danych. Po zakończeniu modyfikacji pobranych wierszy z kopii bazy następuje przekopiowanie ich do głównych tabel bazy. Przedtem jednak konieczne jest sprawdzenie, czy nie wystąpił konflikt z innymi użytkownikami, którzy także mogli uaktualniać wiersze bazy. Jeżeli konfliktu nie ma, następuje uaktualnienie bazy i zakończenie operacji. Jeżeli natomiast pojawiła się niezgodność, powiadamiany jest użytkownik (a właściwie jego program), że operacja nie może być zakończona, gdyż używane przez niego wiersze zostały zmodyfikowane przez innego użytkownika. Pozwala mu to pobrać na nowo dane i zdecydować, czy chce kontynuować operację. Taką metodę blokowania IntraBuilder stosuje zawsze w przypadku korzystania z baz danych SQL, a pobrane wiersze przechowuje się lokalnie na stacji klienta i po dokonaniu modyfikacji przesyła do serwera.

Obsługa transakcji. IntraBuilder stosuje dwa sposoby obsługi transakcji. Pierwszy odbywa się w serwerze bazy danych i wymaga wysłania polecenia rozpoczęcia transakcji BeginTran i zakończenia jej za pomocą polecenia Commit (transakcja udana) lub cofnięcia jej za pomocą polecenia Rollback (transakcja nieudana). Każdy zmodyfikowany wiersz jest natychmiast zapisywany w tabelach bazy (i w pliku dziennika, aby umożliwić cofnięcie transakcji).

Drugi sposób obsługiwania transakcji polega na wykonywaniu modyfikacji na lokalnej kopii wielu wierszy właściwych danych i wysyłaniu ich do bazy w celu trwałego zapamiętania w całości. Jeżeli następuje konflikt danych w co najmniej jednym wierszu, cała grupa wierszy zmodyfikowanych zostaje odrzucona, ale nadal pozostaje jej lokalna kopia. Umożliwia to ponowienie próby zapisania tychwierszy do bazy lub zrezygnowanie z operacji.

W pierwszej metodzie obsługi transakcji wszystkie zmiany poszczególnych wierszy bazy są zapisywane natychmiast i mogą być wykonane lub odrzucone indywidualnie. W drugiej metodzie zmiany w wielu wierszach są akceptowane lub odrzucane w całości.

Administrowanie bazą danych

IntraBuilder zawiera zestaw narzędzi do administrowania bazą danych. Tabele można otwierać, przeglądać i modyfikować za pomocą modułu IntraBuilder Designer. Jeżeli serwer bazy danych pozwala na modyfikowanie struktury tabeli to tę operację także wykonuje się w module IntraBuilder Designer.

Moduł TableExpert służy do zakładania nowych tabel w bazie, definiowania pól i określania więzów integralności danych. Sterowniki SQLüLink pozwalają na przesłanie do serwera bazy wielu poleceń związanych z tworzeniem indeksów, reindeksowania, usuwania tabel i indeksów, konsolidacji i pakowania tabel DBF, zmiany nawy tabeli i bazy i in.

Bezpieczeństwo

IntraBuilder zapewnia bezpieczeństwo dostępu do danych na różnych poziomach. Pierwszy poziom ochrony to Web Server. Wiele z Web Serwerów pozwala na stosowania szyfrowania danych, protokołów bezpiecznej komunikacji Secure HTTP (SHTTP) lub Secure Socket Layer (SSL). Ponieważ IntraBuilder Server działa na tej samej maszynie, co Web Server, nie istnieje problem zakłócenia jego pracy w sieci.

Istnieje także możliwość wykorzystania ochrony danych, które realizuje serwer bazy danych; zwykle jest to login, wymagający podania nazwy użytkownika i hasła. Object Database ma możliwość korzystania z tej metody ochrony danych.

IntraBuilder zawiera także obszerną bibliotekę klas, pozwalających na wbudowanie ochrony danych w aplikację. Wywołanie formatek bezpieczeństwa daje możliwość udostępniania lub zabraniania dostępu do różnych części aplikacji, a więc także do różnych danych. W pakiecie można również stworzyć rozbudowane struktury bezpieczeństwa zapisane w tabelach bazy danych, do których sięga się w chwili uruchamiania odpowiednich części aplikacji.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200