Rozdział 29
Programowanie w środowisku
Windows NT Server
Opracowywanie aplikacji przeznaczonych do pracy na platformie
Windows NT wymaga wprawy w wykorzystywaniu wielu zestawów
do tworzenia oprogramowania - SDK (Software Development Kit),
interfejsów programów użytkowych - API (Application
Programming Interface), technik programowania i przynajmniej
jednego zintegrowanego środowiska roboczego.
W bieżącym rozdziale zajmiemy się aktualnie stosowanymi
metodami tworzenia oprogramowania, których znajomość pozwoli
na sprawne i efektywne wykorzystanie zestawów do tworzenia
oprogramowania oraz interfejsów programów użytkowych.
Software Development Toolkits
Istnieje kilka zestawów narzędzi do tworzenia oprogramowania,
opracowanych przez Microsoft. Zestaw Win32 SDK zawiera
biblioteki potrzebne przy opracowywaniu aplikacji Win32 i OLE
pod Windows NT . Uzupełniony został o narzędzia do obsługi łączy
telefonicznych, elektronicznego handlu i dostępu do baz danych.
Pakiet Win32 SDK
Przed opracowywaniem aplikacji dla Windows NT powinniśmy się
zaopatrzyć w zestaw narzędzi Win32 lub w jeden z produktów
Microsoftu, zawierający ten zestaw. Win32 SDK obejmuje
biblioteki, przykłady, narzędzia oraz pliki pomocy,
wykorzystywane przy projektowaniu aplikacji Win32. Zalecanym
jest zaopatrzenie się w Microsoft Developers Network (MSDN)
CD, którego wersja profesjonalna zawiera zestaw Win32.
1150
Rozdział 29
Interfejs programów użytkowych Win32 API
Interfejs programów użytkowych Win32, stanowiący część zestawu
narzędzi do tworzenia oprogramowania Win32, pozwala na
napisanie dowolnej aplikacji wykorzystującej w pełni dostępne
środowisko 32-bitowe. Należy dodać, że oprócz wymienionego
interfejsu, w
skład zestawu Win32 wchodzi wiele innych
interfejsów, umożliwiających stosowanie różnorodnych technik
programowania. Przykładem takiego interfejsu może być
zorientowany obiektowo Microsoft Foundation Classes (MFC),
pozwalający na wykorzystanie funkcji Windows 32 z poziomu C++
(lub innego języka zorientowanego obiektowo).
Funkcje udostępniane poprzez interfejs Win32 możemy podzielić
na następujące kategorie:
!
Zarządzanie systemem Windows: Zawarte są tu funkcje
i komunikaty do zarządzania zasobami systemu operacyjnego
Windows. Są wśród nich okna, schowki, wspólne okienka
dialogowe, kursory, menu NT , ikony, akceleratory klawiatur,
interfejsy dokumentów złożonych (MDI), komunikaty i kolejki
komunikatów, obsługa myszy, malowanie i
rysowanie,
prostokąty, zegary, klasa window, właściwości i
procedury
okien.
!
Sterowanie oknami: Znajdują się tu interfejsy do zarządzania
elementami związanymi ze sterowaniem okien - takimi, jak
sterowanie animacją, przeciąganie pól list, sterowanie
nagłówkami, klawiszami skrótów, listy obrazów, sterowanie
przeglądaniem list, wyświetlanie słupków postępu, wykazów
własności, kontrolki do edycji, okna statusowe, sterowanie
tabulowaniem, paski narzędzi, sterowanie zestawami narzędzi,
sterowanie paskami typu track bar, sterowanie przeglądaniem
drzew, sterowanie góra-dół, kontrolki typu combo, okienka
dialogowe, sterowanie edycją, pola list, paski przesuwania
i sterowanie statyczne.
!
Powłoka konsoli: Zawarte są tu funkcje i komunikaty do
programowania z poziomu powłoki. Powłoka jest aplikacją
pozwalającą na grupowanie, uruchamianie i sterowanie innymi
aplikacjami systemu operacyjnego Microsoft Windows.
Oferowane funkcje i
komunikaty umożliwiają tworzenie
Programowanie w środowisku Windows NT Server
1151
aplikacji Panelu sterowania, a
ponadto kontrolę wersji
oprogramowania, rozszerzanie programu File Manager,
wykorzystywanie dodatkowych wygaszaczy ekranu
z dołączonych bibliotek oraz interfejsu Shell Dynamic Data
Exchange do sterowania programem Program Manager
Resources, a
nawet wykorzystanie rozszerzenia powłoki
Windows 95 w Windows NT .
!
Interfejs urządzeń graficznych: Udostępnia on całe zestawy
funkcji do tworzenia i animacji zaawansowanych obiektów
graficznych.
!
Usługi systemowe: Windows NT oferuje wiele standardowych
i co ważne - stabilnych metod pracy z plikami, przekazywania
informacji poprzez sieć komputerową, danych aplikacji,
systemów bezpieczeństwa, mechanizmów obsługi wyjątków,
procesów, wątków, metod IPC, a także metod debugowania
aplikacji, monitorowania wydajności i
tworzenia kopii
zapasowych serwera.
!
Usługi sieciowe: Funkcje sieciowe z systemu Win32 są
niezależne od typu sieci. Mogą być wykorzystywane
w aplikacjach do otwierania i zamykania połączeń sieciowych,
pozyskiwania informacji na temat bieżącej konfiguracji sieci, do
zarządzania domeną. Usługa sieciowa API potrafi obsługiwać
funkcje programu LAN Manager, dynamiczną wymianę danych
poprzez sieć i interfejs Window Socket.
!
Usługi multimedialne: Win32 API udostępnia interfejsy
niskiego i
wysokiego poziomu do tworzenia aplikacji
multimedialnych. Pozwalają one na obsługę funkcji audio
(zarówno na wysokim jak i na niskim poziomie), odczytywanie-
zapisywanie plików multimedialnych, usługi multimedialne,
wykorzystanie zegara multimedialnego, obsługę joysticka.
Zestaw narzędzi do tworzenia oprogramowania OLE
Zestaw narzędzi OLE SDK oferuje kilka interfejsów i modeli
wspierających tworzenie obiektów niezależnych od platformy
i języka programowania. Jest w nim zawarta specyfikacja modelu
obiektów składowych (COM), stanowiącego podstawę dla
mechanizmu OLE i ActiveX.
1152
Rozdział 29
Zestaw narzędzi OLE umożliwia obsługę interfejsu Microsoftu,
służącego do łączenia i wstawiania obiektów, narzędzia niezwykle
szeroko stosowanego do wprowadzania wzajemnych zależności
pomiędzy obiektami. Pozwala on na tworzenie aplikacji typu klient
jak i serwer, wykorzystujących w pełni zasoby dostępne w ramach
systemu operacyjnego Windows.
W następnych podrozdziałach przyjrzymy się składowym
elementom mechanizmu OLE. Wiele z
nich jest bardzo
skomplikowana, niemniej jednak warto się pomęczyć, gdyż pełne
wykorzystanie OLE wprowadzi nas do programowania na wysokim
poziomie abstrakcji na wielu platformach.
M odel obiektów składowych
Model obiektów składowych - COM (Component Object Model)
jest jedną z podstawowych technik OLE. Wyznacza on metodę
wzajemnego oddziaływania na siebie obiektów w
ramach
pojedynczej aplikacji, czy też pomiędzy wieloma aplikacjami.
Model COM definiuje pewne podstawowe interfejsy, oferujące
funkcje wspólne dla wszystkich technik bazujących na modelu COM
w ramach mechanizmu OLE.
M odel przekazywania danych
Model przekazywania danych - DTM (Data-Transfer Model)
umożliwia jednolitą metodę przekazu danych z wykorzystaniem
procedur typu „przemieść i upuść”, kopiuj i wklej, czy też na drodze
programowej. Model ten obsługiwany jest poprzez interfejs
IDataObject
.
Strukturalny model pamięci
Strukturalny model pamięci - SSM (Structured Storage Model)
określa metodę składowania i odczytu danych z pamięci. W ramach
tego modelu wyróżniamy dwa typu obiektów: obszary pamięci
i strumienie. Dostęp do wielu z
zasobów systemu Windows
uwarunkowany jest wykorzystaniem modelu SSM.
Programowanie w środowisku Windows NT Server
1153
M odel dokumentów złożonych
Model dokumentów złożonych - CDM (Compound Document
Model) jest dokumentem z innej aplikacji, który łączy w sobie
różne typy danych czy pozycji - takich jak dźwięk, formularze,
mapy bitowe. Mechanizm OLE pozwala na wykorzystywanie
dokumentów złożonych bez potrzeby „ręcznego” przełączania
pomiędzy aplikacjami.
M echanizm OLE Automation
Mechanizm OLE Automation stwarza możliwość aplikacjom
programowego sterowania obiektami innych aplikacji. Każdy
obiekt jest w
stanie udostępnić opis swoich możliwości
z wykorzystaniem opisów typu, zaimplementowanych w języku
opisu obiektów - ODL (Object Description Language). Język ODL
jest niezbędny w pracy z mechanizmem OLE.
Sterowanie
Obiekty OLE, które umożliwiają wykorzystanie właściwości
dokumentów OLE - aktywacji na miejscu - bazują na
automatycznym działaniu mechanizmu OLE przy ujawnianiu
własności i metod, i zapewnianiu obsługi zdarzeń wewnątrz aplikacji.
Zdalne wywoływanie procedur
Win32 API oferuje zdalne wywołania procedur - RPC (Remote
Procedure Call), w celu umożliwienia aplikacjom uruchamiania
funkcji umieszczonych na zdalnych komputerach, znajdujących się
w dowolnym punkcie sieci komputerowej.
Implementacja wywołań RPC Microsoftu jest kompatybilna
z wersją środowiska Distributed Computing Environment (DCE),
opracowanego przez Open Software Foundation (OSF). Oznacza to,
że aplikacje RPC, napisane przy użyciu interfejsu Win32, są
w stanie komunikować się z aplikacjami RPC z innych systemów
operacyjnych wykorzystujących DCE. Więcej informacji na ten
temat można znaleźć w Microsoft Win32 Remote Procedure Call
Programmerś Guide and Reference.
RPC może być skonfigurowany do pracy z jednym bądź kilkoma
środkami transportu, usługami nazewniczymi i
serwerami
1154
Rozdział 29
bezpieczeństwa. W
skład systemu RPC Microsoftu wchodzi
biblioteka programów roboczych, język definiowania interfejsów -
IDL (Interface Definition Language) i jego kompilator.
Język IDL jest złożonym i
bardzo bogatym językiem,
pozwalającym na precyzyjne definiowanie parametrów interfejsów.
Pliki IDL składają się z dwóch części: nagłówka interfejsu i jego
części właściwej. W
wyniku kompilacji plików IDL
z wykorzystaniem kompilatora języka IDL otrzymujemy kod
zastępczy(proxy)/wstępny(stub), plik nagłówkowy interfejsu oraz
jego plik identyfikacyjny. Pliki uzyskane na drodze kompilacji
plików IDL są dalej przetwarzane poprzez kompilator i linker
C/C++. Wersja 4.1 systemu programowania Microsoft Visual C++
zawiera przykłady ilustrujące wykorzystanie RPC.
M ultimedia
Win32 SDK udostępnia usługi zarówno na wysokim jak i na niskim
poziomie, służące do tworzenia oprogramowania multimedialnego,
w pełni wykorzystującego możliwości komputerów
multimedialnych. Przykładowy program o nazwie SPEAKN, będący
przedstawicielem tego typu aplikacji, wchodzi w skład Microsoft
Visual C++ w wersji 4.1.
OpenGL
OpenGL, oryginalnie opracowany przez firmę Silicon Graphics
Incorporated (SGI) z przeznaczeniem dla ich stacji graficznych,
pozwala aplikacjom na tworzenie kolorowych obrazów
i
przestrzennych animacji o
wysokiej jakości, niezależnie od
wykorzystywanego systemu graficznego, systemu operacyjnego
i sprzętu. W jego skład wchodzi wiele komponentów, takich jak
pełny zestaw komend OpenGL, biblioteka narzędzi OpenGL (GLU),
dodatkowa biblioteka z
poradnikiem programowania
z wykorzystaniem OpenGL, oraz nowe interfejsy programów
użytkowych Win32 dla formatów pikselowych i
podwójnego
buforowania. Wersja 4.1 systemu programowania Microsoft Visual
C++ zawiera przykłady ilustrujące wykorzystanie OpenGL.
Programowanie w środowisku Windows NT Server
1155
Rozszerzenia interfejsu Win32
Microsoft opracował kilka rozszerzeń interfejsu Win32,
pozwalających na programową kontrolę telefonii (T API),
komunikacji asynchronicznej (RAS), dostępu do baz danych
(ODBS, DAO, RDO) i handlu elektronicznego (Exchange SDK).
Interfejs TAPI
TAPI (Telephony Application Programming Interface) jest
interfejsem programów użytkowych do obsługi podstawowych
funkcji telefonicznych z
użyciem funkcji z
klasy urządzeń
liniowych. Urządzenie linowe (Line device) to fizyczne urządzenie,
takie jak telefaks, modem, karta ISDN, podłączone do linii
telefonicznej. Pozwala ono aplikacjom na wysyłanie
i
otrzymywanie informacji z
wykorzystaniem sieci połączeń
telefonicznych. Spośród funkcji tego interfejsu można wymienić:
wyślij, odbierz, połącz, nie rozłączaj, przesyłaj, monitoruj.
Interfejs M API
Interfejs programów użytkowych do przesyłania komunikatów -
MAPI (Messaging Application Programming Interface) pozwala na
wykorzystanie elektronicznych urządzeń służących do komunikacji,
takich jak telefaksy, poczta akustyczna, usługi komunikacji
publicznej AT &T Easy Link, CompuServe, MCI Mail. Interfejs
MAPI jest częścią składową systemu operacyjnego Windows 95
oraz systemu NT 4. Fakt, iż jest on zintegrowaną częścią systemu
operacyjnego, umożliwia standaryzację przy tworzeniu aplikacji
zarówno 16 jak i 32-bitowych.
Interfejs MAPI stanowi metodę przekazywania komunikatów,
pozwalającym różnorodnym aplikacjom współdziałać z różnymi
systemami transmisji komunikatów, bez względu na
wykorzystywane platformy sprzętowe. W skąd MAPI wchodzi
kilka niezależnych interfejsów, które razem tworzą otwarty
standard programowania, składający się z dwóch części. Pierwsza
z nich służy do przesyłania komunikatów dla aplikacji klienta, druga
zaś to interfejs programowy, wykorzystywany przez aplikacje
dostarczające usług.
1156
Rozdział 29
W skąd MAPI wchodzą wspólne interfejsy programów użytkowych
oraz biblioteka dołączalna dynamicznie - DLL (Dynamic Link
Library). Interfejsy wykorzystywane są przy tworzeniu i pracy
z rozmaitymi aplikacjami i systemami przekazu komunikatów.
MAPI SDK zawiera narzędzia wspomagające tworzenie aplikacji
typu klient, aplikacji dostarczających usług oraz usług polegających
na przekazywaniu komunikatów. MAPI dostępny jest w wersjach
16 i 32-bitowych. Jego 32-bitowa wersja zawarta jest w Win32
SDK. Zawiera ona wiele przykładów i
narzędzi napisanych
w językach C, C++, Visual Basic. Więcej informacji na ten temat
można znaleźć w Messaging Application Programming Interface
(MAPI) Programmer's Reference (stanowi on część dokumentacji
towarzyszącej zestawowi MAPI).
Zestaw narzędzi do tworzenia oprogramowania ODBC
w wersji 2.1
Zestaw do tworzenia oprogramowania na bazie otwartej
komunikacji między bazami danych - ODBC (Open Database
Connectivity), opracowany przez Microsoft w wersji 2.1, obejmuje
oprogramowanie, narzędzia oraz dokumentację, stworzone w celu
ułatwienia opracowywania sterowników ODBC oraz aplikacji
wykorzystujących ODBC w
systemie operacyjnym Windows.
Interfejs ODBC umożliwia aplikacjom dostęp do danych
przechowywanych przez systemy zarządzania bazami danych przy
użyciu języka SQL.
Ponadto pojedyncza aplikacja może stosować różne systemy
zarządzania bazami danych. Pozwala to na opracowywanie,
kompilowanie i rozprowadzanie aplikacji, bez potrzeby określania
konkretnego systemu zarządzania bazami danych (do współpracy
z którym jest on przeznaczony). Aby pracować z taką aplikacją
z konkretnym systemem zarządzania bazami danych, użytkownik
musi jedynie dołączyć do niej odpowiednie sterowniki baz danych.
Architektura ODBC obejmuje cztery części składowe:
!
Aplikacja: wykonuje obliczenia i wywołania funkcji ODBC -
w celu sformułowania wyrażenia w języku SQL i
odebrania
rezultatów jego wykonania;
Programowanie w środowisku Windows NT Server
1157
!
Program do zarządzania sterownikami: ładuje sterowniki
uwarunkowane potrzebami aplikacji;
!
Sterownik: wykonuje wywołania funkcji ODBC, udostępnia
wyrażenia w języku SQL do określonego źródła danych, zwraca
uzyskane odpowiedzi aplikacjom;
!
Źródło danych: składa się z danych wykorzystywanych przez
użytkownika.
Więcej informacji na temat ODBC zawiera pakiet Microsoft ODBC
SDK Programmer's Reference.
Zestaw narzędzi do tworzenia oprogramowania DAO
Obiekty dostępu do baz danych - DAO (Database Access Object)
i kolekcje stanowią podstawę przy tworzeniu i manipulowaniu
częściami składowymi systemu baz danych. Obiekty i kolekcje
odznaczają się właściwościami charakteryzującymi części składowe
baz danych i metody stosowane przy manipulowaniu nimi. Obiekty
i kolekcje oferują różne relacje zawierania (obiekty zawierają 0 bądź
więcej kolekcji).
Microsoft Visual C++ 4.x pokazuje przykład wykorzystania ODBC,
ilustrujący wykorzystanie klas MFC DAO przy tworzeniu baz
danych, tabel, zapytań, pól i indeksów. MFC i DAO stosują
Microsoft Jet Database Engine, obecnie w
wersji 3.0, do
uzyskiwania i składowania danych w systemowych bazach danych
i bazach danych użytkownika. Obiekty DAO mogą komunikować
się z każdym źródłem danych ODBC, dla którego istnieje sterownik
ODBC. Microsoft Jet Database Engine jest składnikiem systemu
zarządzania danymi w
oparciu o
który stworzono wiele
implementacji - jak np. klasy MFC DAO, Microsoft Access,
Microsoft Visual Basic, Microsoft Desktop Database Drivers
(obecnie w wersji 3.0).
Zestaw narzędzi do tworzenia oprogramowania RAS
Usługa zdalnego dostępu - RAS (Remote Access Service) - umożliwia
zdalnym użytkownikom taki sposób pracy, jakby byli oni
przyłączeni bezpośrednio do sieci komputerowej. Pozwala ona na
dostęp do innych komputerów w sieci tak, jakby wszystkie
1158
Rozdział 29
komputery znajdowały się w
jednej fizycznej sieci. Interfejs
programów użytkowych RAS oferuje funkcje do zestawiania,
wykorzystywania i
przerywania zdalnych połączeń z
innymi
komputerami. Aplikacje utworzone z jego wykorzystaniem mogą
używać wersji statycznej albo dynamicznej tego interfejsu.
Zestaw narzędzi do tworzenia oprogramowania dla M S
Exchange Server
Zestaw narzędzi do tworzenia oprogramowania dla Serwera
wymiany pozwala na wykorzystanie nowego systemu
przekazywania komunikatów i danych. Służy on do tworzenia
aplikacji typu klient oraz programowych rozszerzeń dla
administratora tegoż serwera. Co więcej - umożliwia on
opracowywanie aplikacji typu serwer i klient, dostosowanych do
danego środowiska, oraz samodzielnych aplikacji typu serwer
i klient, wykorzystujących Exchange Server.
Zintegrowane środowisko robocze
Wraz z systemem programowania Microsoft Visual C++ (jak
również z wieloma innymi systemami programowania Microsoftu)
dostarczany jest program Microsoft Developers Studio. Program
ten pozwala, poprzez pojedynczy interfejs użytkownika, na
zarządzanie plikami z kodem źródłowym, ich edycję, zarządzanie
projektami oraz debugowanie programów.
W następnych podrozdziałach przedstawimy informację o kilku
nowych, poprawionych produktach Microsoftu. Wszystkie ich
funkcje dostępne są z poziomu Microsoft Developers Studio.
M icrosoft Visual C++ w wersji 4.1
W celu uzyskania możliwości wykorzystania omówionych poniżej
standardów i produktów Microsoftu należy zaopatrzyć się w system
programowania Microsoft Visual C++ w wersji 4.1.
Programowanie w środowisku Windows NT Server
1159
Program M icrosoft Developers Studio
Visual C++ 4.1 zawiera program Microsoft Developers Studio,
który umożliwia - poprzez stworzenie zintegrowanego środowiska
roboczego - łatwą pracę w Visual C ++ wraz z innymi produktami
Microsoftu. Wśród produktów dostarczanych z Visual C++ 4.1,
współpracujących z
programem Microsoft Developers Studio,
należy wymienić:
!
Microsoft Development Library,
!
Microsoft FORT RAN Powerstation,
!
Microsoft Visual T est,
!
Microsoft Visual SourceSafe,
!
Microsoft Visual C++ Cross-Development Edition for
Macintosh.
W programie Microsoft Developers Studio wprowadzono nowe
elementy - Class Viewer (do przeglądania klas), Wizard bar (pasek
kreatora), emulator edytora Brief i Epsilon. Dołączony do niego
nowy system pomocy o dostępie bezpośrednim - Infoview - może
obsługiwać książki w formie elektronicznej oraz MSDN.
Visual C++ pozwala na łatwe i szybkie tworzenie aplikacji, dzięki
udostępnianym przez niego klasom i obiektom, takim jak galeria
części składowych, sterowanie OLE, kreator aplikacji użytkowych
(Custom AppWizard), rozszerzenia MFC. Kompilator Visual C++
4.1 jest zgodny z
najnowszymi standardami języka C++,
zapewniając informację uruchomieniową - RTTI (Runtime Type
Information), bibliotekę szablonów standardowych - STL (Standard
Template Library), obszary nazw, minimalną przebudowę programu,
przyrostowe linkowanie. Visual C++ 4.1 zawiera InstalSHIELD -
ogólnoświatowy standard do rozprowadzania oprogramowania
Microsoftu.
Oprócz poprawy wydajności, Visual C++ 4.1 został rozszerzony
o nowe elementy, wspomagające tworzenie aplikacji, z myślą
o wykorzystaniu sieci Internet. Pojawiły się takie komponenty, jak
klasy serwera Internetu, kreator aplikacji wspomagający
opracowywanie aplikacji internetowych, narzędzie udostępniające
sieć WWW z poziomu Developers Studio (uzyskiwane po wybraniu
1160
Rozdział 29
pola Web Favorites z menu Help). Zapewnia ono połączenie
z komputerami świadczącymi usługi WWW, zawierającymi
informację na temat programowania w
Visual C++
(zamieszczonymi na dołączonej do programu liście), a także
z każdym innym miejscem, dowolnie wybranym przez
użytkownika.
Biblioteka M icrosoft Foundation Classes 4.0
Bibliotekę Microsoft Foundation Class Library (MFC) można
traktować jako podstawę (dlatego też niektórzy nazywają ją
szkieletem) do tworzenia aplikacji działających pod nadzorem
Microsoft Windows oraz aplikacji na inne platformy,
wykorzystujące Win32 API. Jej strukturę tworzą grupy klas C++,
reprezentujących takie obiekty, jak okna, dokumenty itp.
Nowe cechy
Visual C++ 4.1 oferuje zmodyfikowaną wersję przemysłowego
standardu - Micorosoft Foundation Class Library 4.0, wśród
którego nowych cech można wymienić:
!
dodatkowe wsparcie dla aplikacji pod Windows 95,
!
nowe klasy MFC dla obiektów DAO,
!
wsparcie dla dokumentów zawierających obiekty OLE,
!
nowe systemowe okna dialogowe.
Klasy dla serwera internetowego
MFC zawiera pięć nowych klas dla interfejsu programów
użytkowych dla serwera Internetu - ISAPI (Internet Server API).
Ich zastosowanie umożliwia tworzenie bibliotek dołączalnych
dynamicznie, zwiększających funkcjonalność serwerów Internetu
i stron WWW:
!
CHtmlStream: Klasa wywoływana przez CHttpServer,
w celu odesłania klientowi strumienia HT ML.
!
CHttpFilter: Klasa służąca do tworzenia filtrów serwera
Internetu, do wyświetlania komunikatów wysyłanych do (i z-)
serwera Internetu.
Programowanie w środowisku Windows NT Server
1161
!
ChttpFilterContext: Klasa wykorzystywana przez
CHttpFilter
do obsługi wielokrotnych żądań współbieżnych.
!
CHttpServer: Klasa służąca do tworzenia rozszerzeń serwera
Internetu. Pozwala ona na tworzenie w oparciu o DLL - zamiast
stosowania wspólnego interfejsu bramy CGI (Common Gateway
Interface) - wydajnych aplikacji.
!
CHttpServerContext: Klasa wykorzystywana przez
CHttpServer
do obsługi wielokrotnych żądań współbieżnych.
Nowy kreator rozszerzeń ISAPI (ISAPI Extension Wizard) stwarza
możliwość opracowywania filtrów i
rozszerzeń serwerów,
tworzonych w oparciu o klasy ISAPI MFC. Dostęp do kreatora
rozszerzeń ISAPI uzyskamy po otwarciu okna dialogowego
New
Proj ect Workspace
(otwieranego poleceniem
New
z menu
File
)
i wybraniu pozycji
ISAPI
Extension
Wizard
.
Inne klasy M FC
Poniżej zamieściliśmy listę innych klas MFC, oferowanych wraz
z Visual C++ w wersji 4.1.
!
CDockState: Klasa typu Cobject, pozwalająca na
przechowywanie stanu pasków kontroli. Stwarza możliwość
zapisywania i odczytu informacji z rejestru Registry, plików INI
czy też obiektów CArchive.
!
CRecentFileList: Klasa typu Cobject, pozwalająca
na tworzenie list plików ostatnio wykorzystywanych.
!
CSharedFile: klasa typu CMemFile, służąca do obsługi
plików dzielonych, przechowywanych w
pamięci RAM,
wykorzystywanych do szybkiego zapisu danych tymczasowych,
oraz do przekazywania bajtów nie przetworzonych, jak
i obiektów pomiędzy niezależnymi procesami.
Nowe przykłady M FC
Wraz z Microsoft Visual C++ 4.1 dostarczanych jest wiele nowych
przykładów MFC, ilustrujących sposób realizacji następujących
zadań:
!
ACDUAL: Dodawanie podwójnych interfejsów do serwera OLE
Automation, stworzonego z
wykorzystaniem klas MFC.
1162
Rozdział 29
Przykład ujawnia metodę utworzenia zwykłego interfejsu,
a następnie uzupełnienia go o interfejs powstały w
oparciu
o IDispatch.
!
BINDSCRB: T worzenie obiektów dokumentów OLE,
przeznaczonych dla narzędzia Binder z aplikacji Microsoft
Office 95 (opracowane na bazie przewodnika Scribble).
!
DLGTEMPL: Dynamiczne tworzenie szablonów okienek
dialogowych i ich wykorzystanie w klasach
CreateDialog
Indirect
oraz
InitModalIndirect
.
!
HTTPSVR: Wykorzystanie klas MFC i
WinSock
- do
zaimplementowania prostego serwera WWW HT T P,
pozwalającego na tworzenie i wykonywanie aplikacji serwera
CGI przy użyciu standardowych konstruktorów HT ML.
!
MFCUCASE: Wykorzystanie klas MFC do tworzenia
dynamicznie dołączalnych bibliotek filtrów Internetu.
!
ODBCINFO: Określanie możliwości sterowników ODBC
w trakcie ich pracy poprzez otwarcie wybranego źródła danych
ODBC i
wyświetlenie informacji z
wykorzystaniem stron
własności.
!
ROWLIST: Implementacja wyboru wierszy w trybie Report
klasy CListView.
!
WWWQUOTE: T worzenie aplikacji WWW do uzyskiwania infor-
macji.
Metody dostępu do przykładów w Visual C++ w wersji 4.1 zapisane
są w tabeli InfoView. Obecnie wszystkie przykłady (łącznie z MFC)
znajdują się pod nagłówkiem Samples (przeniesiono tam
wszystkie przykłady, dostępne dotychczas pod nagłówkiem
Visual C++ Books/MFC 4.x
). Alfabetyczna i tematyczna
lista przykładów MFC jest dostępna pod nagłówkiem
Key Visual
C++ Topics
(uzyskiwanym po wybraniu nagłówka
MFC Sampels
,
znajdującym się poniżej nagłówka MFC Topics).
Programowanie w środowisku Windows NT Server
1163
Visual Basic 4.0
Microsoft Visual Basic jest językiem, pozwalającym zarówno na
szybkie tworzenie prototypów interfejsów użytkownika, jak i na
opracowywanie stabilnych systemów typu klient-serwer.
Zazwyczaj analiza problemu do rozwiązania pozwala podjąć decyzję
co do rodzaju języka programowania zastosowanego do stworzenia
implementacji. Decydujące są tutaj możliwości danego języka (czy
raczej jego ograniczenia). Obecne wersje VB 4.0 oraz VC++ 4.1
pozwalają na wykorzystanie praktycznie wszystkich nowych
technik programowania Microsoftu (z obiektami DAO czy też
ActiveX).
Microsoft Visual Basic Enterprise Edition CD-ROM jest systemem
programowania na platformie Windows. W jego skład wchodzi 16
i 32-bitowa wersja języka Visual Basic 4.0, zestaw MSDN (Microsoft
Developers Network for Visual Basic users) i
system Visual
SourceSafe 4.0 (system sterowania plikami źródłowymi dla języka
Visual Basic 4.0), który może być wykorzystany jedynie
w Windows NT w wersji 3.51 lub późniejszej oraz w Windows 95.
Wraz z Visual Basic 4.0 dostarczany jest Visual Basic Application
Edition 2.0. Obecna jego wersja jest w pełni kompatybilna ze
swoimi poprzednikami (tj. samodzielnych produktów z rodziny
Visual Basic) oraz z Visual Basicem w wersji 1.0, dołączanym do
systemów Microsoft Excel 5.0 oraz Microsoft Project 4.0. Pozwala
on na wykorzystanie OLE Automation, umożliwiającej z kolei
stosowanie funkcji innych aplikacji, przez kontrolowanie
istniejących w nich obiektów, z poziomu aplikacji napisanych
w Visual Basicu. W ten sposób można wykorzystać każdy obiekt,
potrafiący współpracować za pośrednictwem OLE Automation.
Dostępne w Windows 95 narzędzia, takie jak przeglądarki list,
przeglądarki drzew, paski statutu, paski narzędzi, okienka dialogowe
z
tabelami - pozwalają na tworzenie aplikacji o
naprawdę
profesjonalnym wyglądzie, niczym nie różniących się od
oryginalnych produktów Microsoftu.
Zdalna automatyzacja umożliwia tworzenie części składowych
aplikacji współużytkowalnych i
wielokrotnego wykorzystania,
stosujących w komunikacji sieciowej interfejs OLE Automation.
1164
Rozdział 29
Obiekty zdalnych danych - RDO (Remote Data Object) oraz
sterowanie RDC (Remote Data Control), pozwalają aplikacjom na
wykorzystanie źródeł danych dostępnych poprzez ODBC,
z pominięciem lokalnego procesora zapytań. Oprócz tego, że
obiekty danych zdalnych i sterowanie Remote Data pozwalają
na dostęp do dowolnego źródła danych obsługiwanego przez ODBC
- zostały zaprojektowane tak, aby w pełni wykorzystać zalety
serwerów baz danych, stosujących zaawansowane mechanizmy do
obsługi zapytań (jak np. serwer SQL Microsoftu czy Oracle).
Perl
W skład Windows NT 3.51 Resource Kit wchodzi także interpreter
języka Perl. Perl jest przeznaczony do przeglądania dowolnych
plików tekstowych, wyszukiwania w nich potrzebnych informacji,
i tworzenia raportów na ich podstawie. Łączy on w sobie kilka
z najlepszych cech języka C: sed, awk i sh.
Windows NT Perl 5
Windows NT Perl 5 bazuje na wersji języka Perl, przeznaczonej dla
systemu operacyjnego UNIX, potrafiącej wykorzystywać pakiety.
Pakiet może spełniać rolę klasy z wielokrotnym dziedziczeniem
dynamicznym oraz z
metodami wirtualnymi. Perl 5 może
obsługiwać wiele implementacji DBM równocześnie oraz OLE
Automation. Poza tym, pozwala on na łatwe wykonywanie
wstawek w programach pisanych w C i C++.
W celu wykorzystania systemu Windows NT Perl 5 potrzebny jest
komputer działający pod kontrolą Windows NT Workstation lub
Advanced Server w wersjach 3.5 lub późniejszych, z przynajmniej
2MB wolnej przestrzeni na dysku.
Skrypty w języku Perl
Skrypty w języku Perl składają się z szeregu deklaracji i instrukcji
oraz słów kluczowych. Przykładowe słowa kluczowe to:
continue
goto
unless
do{}until if
until
for
sub
while
foreach
switch
Programowanie w środowisku Windows NT Server
1165
Więcej informacji na temat programowania w Perlu można znaleźć
w książce Teach Yourself Perl in 21 Days, wydanej przez Sams
Publishing.
Należy pamiętać, że z powodu różnic występujących w plikach
tekstowych tworzonych pod UNIX-em i
Windows NT (w
przypadku UNIX-a linie kończone są znakiem przesuwu wiersza,
w Windows NT w tym samym celu stosowane są dwa znaki
równocześnie: powrotu karetki i przesuwu wiersza), przenoszenie
skryptów Perla z
UNIX-a pod Windows NT wymaga
przeprowadzenia dodatkowego formatowania.
Źródła informacji dotyczące języka Perl
Informacje na temat języka Perl i jego rozszerzeń udostępniają
usługi sieciowe typu WWW, Usenet czy anonimowy FT P.
Wśród grup dyskusyjnych, zajmujących się tematyką Perla można
wymienić:
comp.lang.perl
comp.lang.perl.announce
comp.lang.perl.misc
Serwery WWW na temat Perla:
http://www.khornos.unm.edu/staff/neilb/perl/metaFAQ/
metaFAQ.html
http://www.metronet.com/perlinfo/perl5.html
http://www.metornet.com/0/perlinfo/perl5/manual/
perl.html
http://www.eecs.nwu.edu/perl/perl.html
Anonimowy FT P udostępnia informację o Perlu z:
ftp://ftp.microsoft.com
ftp://ftp.khoros.unm.edu/pub/perl/
ftp://perl.com/pub/perl/
ftp://ftp.cs.ruu.nl/pub/perl/
ftp://ftp.funet.fi/pub/languages/perl/ports/
ftp:/śrc.doc.ic.ak.uk/packages/perl5/
1166
Rozdział 29
Język hipertekstowego opisu strony - HTM L
Język hipertekstowego opisu strony - HTML (Hypertext Markup
Language) znajduje zastosowanie w
sieci WWW. T ermin
"hipertekstowy" pojawia się w jego nazwie z powodu istniejących
odwołań do innych dokumentów. Każda strona WWW została
stworzona w tym języku. Wszystkie elementy stron WWW, takie
jak ich format, odwołania dostępne z pomocą myszki, obrazy
graficzne, dokumenty multimedialne, formularze uzyskiwane są za
pomocą instrukcji HT ML.
Jeden z programów wspomagających tworzenie stron WWW -
Word Internet Assistant, dostępny jest w sieci MSDN. Można go
również uzyskać za pośrednictwem serwera
www.microsoft.com
.
Zaawansowane metody programowania
w Windows NT 4
Microsoft oferuje programistom tworzącym użytkowe rozszerzenia
systemu operacyjnego różne interfejsy API, interfejsy obiektowe
oraz wzorce.
Rozszerzenia powłoki Windows 95
W Windows NT 4 możliwe jest tworzenie rozszerzeń powłok
Windows NT - dzięki szeregowi interfejsów, zapewniających
programową kontrolę nad powłoką poprzez arkusze własności
(property sheets). Dla przykładu możliwe jest przypisywanie ikon
poszczególnym plikom, dodawanie poleceń w menu
Context
czy
File
, sterowanie wieloma innymi częściami powłoki.
Istnieją następujące klasy interfejsowe, służące do tworzenia
rozszerzeń powłoki:
!
IShellExtInit: Przydziela interfejs wykorzystywany do
inicjalizacji rozszerzeń arkuszy własności, rozszerzeń menu
kontekstowego lub programu obsługi mechanizmu „ciągnij
i upuść”.
Programowanie w środowisku Windows NT Server
1167
!
IShellFolder: Przydziela interfejs utworzony przez
powłokę, wykorzystywany do określania zawartości folderów.
!
IShellLink: Przydziela interfejs umożliwiający aplikacjom
tworzenie i usuwanie połączeń z powłoką.
!
IShellPropSheetEx: Przydziela interfejs pozwalający
programowi obsługi arkuszy własności na dodawanie i zamianę
stron w arkuszach własności obiektów typu plik.
System Visual C++ 4.1 zawiera przykład SHELLEXT.
Rozproszony model obiektów składowych
Rozproszony model obiektów składowych - DCOM (Distributed
Component Object Model), znany również jako sieciowe łączenie
i wstawianie obiektów (Network OLE), pozwala na rozszerzenie
technik programowania, dostępnych dzięki systemowi OLE 2.0,
o elementy
związane z
pracą w
sieci. Właśnie DCOM
zawdzięczamy, iż operowanie obiektami w sieci wygląda tak samo,
jak obiektami lokalnymi.
Wyróżnić możemy następujące właściwości rozproszonego modelu
obiektów składowych:
!
Przeźroczystość położenia: Aplikacje nie muszą znać
położenia wykorzystywanych przez nie obiektów.
!
Przeźroczystość łączenia: Aplikacje typu klient nie muszą
znać metody dołączania obiektów - czy jako DLL, czy jako
obiekty lokalne lub zdalne .
!
O biekty autonomiczne: Istnieje możliwość tworzenia
wysokowydajnych usług obsługujących obiekty, pozwalających
na równoczesne wywołania zarówno przez zdalnych, jak
i lokalnych klientów. Mechanizm OLE (z wywołaniami RPC)
tworzy system wątków, przeznaczonych do wykorzystania przez
pojawiające się wywołania. W chwili nadejścia wywołania przez
klienta metody dotyczącej danego obiektu, jest ono kierowane
do odpowiedniego wątku wykonującego daną metodę.
!
O chrona uruchamiania: System umożliwiający, jedynie
administratorom, uruchamianie istniejących klas ze zdalnych
klientów.
1168
Rozdział 29
!
O chrona dostępu: Pozwala, tylko administratorom, na dostęp
do istniejących, udostępnionych objektów ze zdalnych stacji
roboczych.
!
O chrona na poziomie wywołań: Wymusza ochronę na
poziomie każdego wywołania dla połączenia między klientem
a objektem (serwerem).
Zaawansowane interfejsy API dla rozproszonych modeli
obiektów składowych
Autonomiczne interfejsy API
Autonomiczne interfejsy API umożliwiają zastosowanie
wielowątkowego, współbieżnego dostępu do obiektów. W modelu
wykorzystywanym do uzyskania współbieżności (często
nazywanym apartment model), obiekt zyskuje współbieżność - albo
dzięki wątkowi przez który został wprowadzony, albo na podstawie
informacji zapisanych w rejestrach (jak to jest w przypadku serwera
DLL).
!
CoInitializeEx: Inicjalizuje model COM dla
wykorzystania przez bieżący wątek.
Aktywacyjne interfejsy API dla klientów
Aktywacyjne interfejsy API pozwalają na udostępnianie funkcji
lokalnie, bądź zdalnie utworzonym wywołaniom określonych klas.
Do funkcji często pełniących rolę interfejsów API możemy
zaliczyć:
!
CoCreateInstanceEx: T worzy wywołanie określonej
klasy na wyznaczonej maszynie.
!
CoGetClassObject: Odzyskuje obiekt z określonej klasy.
!
CoGetInstanceFromFile:
T worzy nowy obiekt
i inicjalizuje go na podstawie informacji zawartej w pliku
poprzez IPersistFile::Load.
!
CoGetInstanceFromIStorage: T worzy nowy obiekt
i inicjalizuje go na podstawie IStorage przy użyciu Ipersist
Storage::Load
.
Programowanie w środowisku Windows NT Server
1169
Interfejs bezpieczeństwa wywołań a interfejsy API
Model COM jest w stanie obsłużyć dwa różne mechanizmy
zapewniające bezpieczeństwo w systemie wywołań. Pierwszy z nich
wykazuje duże podobieństwo do DCE-RPC, kiedy to aplikacja sama
może dokonywać weryfikacji związanych z
bezpieczeństwem.
W drugim przypadku, kontrola odbywa się w sposób automatyczny
przez sam model COM. Aby wykorzystać drugi z wymienionych
mechanizmów, aplikacje powinny mieć możliwość dostarczenia
pewnego zbioru informacji, pozwalających mechanizmowi COM na
dokonanie wywołań, niezbędnych do zapewnienia bezpieczeństwa
obiektom aplikacji. Do funkcji stosowanych jako interfejsy API
można zaliczyć:
!
CoInitializeSecurity: Inicjuje warstwę
bezpieczeństwa.
!
CoQueryAuthenticationServices: Zwraca listę auto-
ryzowanych usług, zarejestrowaną podczas wywołania funkcji
CoRegisterAuthenticationServices
.
!
CoRegisterAuthenticationServices: Ustala listę
autoryzowanych usług, wykorzystywaną przez model COM,
w celu autoryzacji przychodzących wywołań.
!
IClientSecurity: Umożliwia klientom nadzorowanie
systemu bezpieczeństwa przy wywołaniach poszczególnych
interfejsów.
!
IServerSecurity: Umożliwia serwerowi uzyskiwanie
informacji (dotyczącej bezpieczeństwa poszczególnych
wywołań) oraz przerwanie wywołania.
Win32 SDK zawiera kilka przykładów na wykorzystanie rozproszo-
nych modeli obiektów składowych.
OLECNFG
OLECNFG stosowany jest przez zdalne wywołanie narzędzia
konfiguracyjnego Registry. Ono właśnie ustawia i tworzy nowe
pozycje Registry - na podstawie domniemanej listy kontroli
dostępu - ACL (Access Control List). Lista ACL służy do kontroli
każdego elementu, z którym została skojarzona. Praktycznie każdy
1170
Rozdział 29
element posiadający nazwę może zostać skonfigurowany tak, aby
wykorzystywał dostępne mechanizmy zapewniające bezpieczeństwo
w systemie. Lista kontroli dostępu, obejmująca identyfikatory
ochrony, może być modyfikowana „ręcznie”, w
programie
regedt32
.
W przypadku uruchomienia bez parametrów, omawiane narzędzie
wyświetla bieżące wartości globalnych pól wywołań - wśród których
wyróżnić możemy: EnableNetworkOLE, DefaultLaunch
Permission
, DefaultAccessPermission oraz Legacy
AuthenticationLevel
.
Tworzenie własnych aplikacji serwera
pod Windows NT 4
Z reguły złożoność opracowywanych aplikacji rośnie równolegle
z rozmieszczaniem ich części składowych w ramach dostępnej sieci.
Interfejs Win32 API pozwala na pełną kontrolę synchronizacji
procesów i
wątków oraz na rejestrowanie aplikacji oraz
monitorowanie wydajności systemu w trakcie jego pracy. Wraz
z narzędziami Windows NT , interfejs Win32 umożliwia
programistom tworzenie stabilnych i przydatnych, a przy tym
niejednokrotnie złożonych aplikacji. Co więcej - Win32 jest
interfejsem programów użytkowych niezależnym sprzętowo (może
pracować na takich platformach, jak RISC, ALPHA, MIPS itp).
Planowanie architektury aplikacji wymaga na ogół znajomości
zasobów, jakimi będziemy dysponować. Odnosi się to zwłaszcza do
systemów o
rozbudowanej strukturze, jakim z
pewnością jest
Windows NT .
Procesy
Interfejs programów użytkowych Win32 umożliwia tworzenie,
sterowanie, ustalanie priorytetów oraz synchronizację procesów
w
systemie Windows NT . Stwarza on możliwość kontroli
priorytetów procesów potomnych, a
nawet całych wątków
potomnych. Do podstawowych funkcji, służących do kontroli
procesów w systemie NT , zaliczamy:
Programowanie w środowisku Windows NT Server
1171
!
CreateProcess: T worzy ona nowy proces i
jego
podstawowy wątek. Utworzony proces wywołuje określony plik
wykonywalny.
!
ExitProcess: Kończy działanie procesu i jego wszystkich
wątków.
!
GetPriorityClass: Zwraca klasę priorytetów dla określo-
nego procesu.
!
SetPriorityClass: Kontroluje priorytet klasy zgodnie
z tym, na co pozwala Windows NT .
W przypadku operowania priorytetem o nieokreślonej wartości,
system NT przyjmuje jego wartość domyślną.
Wątki
Wątki wykazują duże podobieństwo do procesów - z tą różnicą, że
dla pewnych architektur pozwalają na swobodniejsze (niż procesy)
sterowanie z poziomu programu. Wśród podstawowych funkcji do
kontroli wątków w systemie Windows NT należy wymienić:
!
CreateRemoteThread: T worzy wątek działający w prze-
strzeni adresowej innego procesu.
!
CreateThread: T worzy wątek wykonywany w
ramach
przestrzeni adresowej procesu wywołującego funkcję.
!
ExitThread: Przerywa działanie wątku.
!
GetThreadPrioryty: Zwraca wartość priorytetu
określonego wątku.
!
ResumeThread: Zmniejsza wartość licznika zawieszenia
danego wątku. W przypadku, gdy licznik zawieszenia wątku
przyjmuje wartość 0, przywracane jest wykonywanie
wstrzymanego wątku.
!
SetThreadPriority: Ustala wartość priorytetu
określonego wątku.
!
Sleep: Wstrzymuje (zamraża) realizację bieżącego wątku na
określony okres.
1172
Rozdział 29
!
SleepEx: Powoduje przejście bieżącego wątku do stanu
oczekiwania - dopóki nie minie określony czas, lub nie pojawi
się wywołanie funkcji potwierdzenia zakończenia operacji
wejścia-wyjścia.
!
SuspendThread: Powoduje zaniechanie realizacji
określonego wątku.
!
TermianteThread: Przerywa działanie wątku.
Synchronizacja
Interfejs Win32 oferuje kilka metod umożliwiających wzajemne
wykluczanie i synchronizację. Przy tworzeniu wielowątkowych
procesów, niezbędna jest znajomość następującego zestawu funkcji:
!
CreateEvent: T worzy obiekt typu zdarzenie, z nazwą lub
bez.
!
CreateMutex: T worzy obiekt typu mutex, z nazwą lub bez.
!
CreateSemaphore: T worzy obiekt typu semafor, z nazwą
lub bez.
!
ReleaseMutex: Zwalnia relację własności określonego
obiektu typu mutex.
!
ReleaseSemaphore: Zwiększa licznik określonego obiektu
typu semafor o określoną wartość.
!
ResetEvent: Ustawia stan określonego obiektu typu
zdarzenie na nonsignaled.
!
SetEvent: Ustawia stan określonego obiektu typu zdarzenie
na signaled.
!
WaitForMultipleObjects: Funkcja wywoływana wtedy,
gdy stan jednego (jakiegokolwiek) lub wszystkich z określonego
typu obiektów zostanie ustawiony na signaled, a także gdy
upłynie określony czas oczekiwania.
!
WaitForSingleObjects: Powoduje powrót funkcji, gdy
stan określonego obiektu zostaje ustawiony na signaled lub
gdy upłynie określony czas oczekiwania.
Programowanie w środowisku Windows NT Server
1173
Przykłady obsługi procesów, wątków oraz zdarzeń znajdziemy
w pakiecie Microsoft Visual C++, w wersjach 2.x lub 4.x.
Rejestr
Każda aplikacja serwera, działająca jako usługa w systemie Windows
NT , wymagała będzie dostępu do informacji z rejestru Windows
(Registry). Funkcje do jego obsługi pozwalają na dostęp do
różnorodnych identyfikatorów i wartości w nim przechowywanych.
W
Registry informacje o
serwerze oraz dane dotyczące
poszczególnych usług w systemie Windows NT składowane są pod:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
Wśród funkcji często wykorzystywanych - w celu uzyskania
dostępu do rejestru Windows Registry - należy wymienić:
!
RegConnectRegistry: Zestawia połączenie z ustalonym
programem obsługi Registry na innym komputerze.
!
RegCreateKeyEx: T worzy określony identyfikator.
!
RegOpenKeyEx: Otwiera określony identyfikator.
!
RegQueryValueEx: Wyszukuje typ i dane dla określonej
nazwy wartości skojarzonej z
otwartym identyfikatorem
Registry.
!
RegSetValueEx: Ustawia wartość skojarzoną z określonym
identyfikatorem.
Rejestr zdarzeń
Narzędzie do rejestracji zdarzeń w Windows NT - Event Log -
umożliwia jednolity, centralny zapis istotnych zdarzeń sprzętowych
i programowych zachodzących w systemie. Dzięki Event Log nie
trzeba opracowywać własnego mechanizmu rejestracji zdarzeń
w
systemie, wykorzystywanego w
aplikacjach tworzonych
z użyciem narzędzi Win32. Jak wiadomo, realizacja zadania tego
typu jest wyjątkowo trudna w pracy z wielowątkowymi aplikacjami
wieloprocesowymi.
Monitor zdarzeń - Event Viewer- udostępnia standardowy interfejs
użytkownika do przeglądania rejestracji oraz interfejs programowy
1174
Rozdział 29
- do testowania skryptów rejestracji. Wśród częściej stosowanych
funkcji należy wymienić:
!
DeregisterEventSource: Zamyka uchwyt zwracany
przez RegisterEventSource.
!
RegisterEventSource: Zwraca uchwyt, wykorzystywany
przez funkcję ReportEvent, w celu rejestracji zdarzeń.
!
ReportEvent: Dokonuje wpisu na końcu określonego
rejestru zdarzeń.
Usługi w Windows NT
Usługę stanowi wykonywalny obiekt, zainstalowany w bazie danych
Registry, tworzonej przez program do sterowania usługami - Service
Control Manager (SCM) - dla zapewnienia jednolitej i bezpiecznej
metody sterowania usługami w systemie. W przypadku każdego
komputera działającego pod nadzorem NT , przy uruchamianiu
systemu inicjowany jest automatycznie proces SCM. Pełni on
w systemie rolę serwera zdalnego wywoływania procedur (RPC).
Funkcje interfejsu programów użytkowych Win32, związane
z SCM, wykorzystują mechanizmy RPC - dzięki czemu
konfigurowanie usług oraz procesy sterowania nimi mogą
oddziaływać na usługi uruchamiane na zdalnych komputerach.
Poniższe funkcje służą do rejestrowania i tworzenia z aplikacji
użytkownika usług NT .
!
CreateService: T worzy obiekt typu usługa i dodaje go do
określonej bazy danych programu SCM.
!
RegisterServiceCtrlHandler: Rejestruje funkcję do
obsługi sterowania usługą.
!
SetServiceStatus: Aktualizuje informację o
statusie
wywołującej ją usługi, przechowywaną w
programie do
sterowania usługami.
Pakiet Microsoft Visual C++, w wersjach 2.x lub 4.0, zawiera
przykład usługi w Windows NT .
Programowanie w środowisku Windows NT Server
1175
M onitorowanie wydajności
Wraz z Windows NT wprowadzono pojęcia liczników i obiektów
wydajności, pozwalających na monitorowanie wydajności
z poziomu aplikacji tworzonych przez użytkowników. Obiekty
wydajności to nic innego, jak zbiór liczników wykorzystywanych
do pomiaru wydajności w systemie, na poziomie poszczególnych
procesów (lub nawet niższym).
Windows NT Perform jest uniwersalnym narzędziem,
przeznaczonym do monitorowania. Jest ono niezależne od innych
liczników w systemie, do tego łatwo rozszerzalne. Pozwala na
zdalne bądź lokalne przeglądanie liczników wydajności z poziomu
aplikacji użytkownika. Liczniki te są obsługiwane przez obiekty
rozszerzone (extended objects) - w przeciwieństwie do obiektów
systemowych, stanowiących integralną część systemu operacyjnego.
W ramach interfejsu Win32 dostarczanych jest kilka struktur
danych, umożliwiających wykorzystanie liczników i
obiektów
wydajności. Wśród nich znajdują się:
!
PERF_COUNTER_DEFINITION: Opisuje licznik wydajności.
!
PERF_DATA_BLOCK: Zawiera dane dotyczące wydajności,
dostarczane przez funkcję RegQueryValueEx.
!
PERF_INSTANCE_DEFINITION: Zawiera informacje
zależne od uruchomienia dla bloku danych związanych
z wydajnością.
!
PERF_OBJECT_TYPE: Opisuje informację dotyczącą
wydajności i zależną od obiektu.
Przykład wykorzystania obiektów wydajności znajdziemy
w zestawie NT Resource Kit (MSDN).