Obiektowe plusy i minusy

COM+ jest podstawowym elementem koncepcji DNA. Na nim oparta jest logika biznesowa. Do tej pory jednak Microsoftowi nie udało się dostarczyć wszystkich funkcji nowego modelu obiektowego.

COM+ jest podstawowym elementem koncepcji DNA. Na nim oparta jest logika biznesowa. Do tej pory jednak Microsoftowi nie udało się dostarczyć wszystkich funkcji nowego modelu obiektowego.

COM (Component Object Model) z pewnością należy do najbardziej interesujących propozycji Microsoftu, skierowanych do programistów. Jest to standard pozwalający tworzyć komponenty, które mogą być stosowane w różnych aplikacjach. Obiekt COM to w zasadzie plik binarny o ustalonej strukturze, zawierający elementy opisu, m.in. interfejs umożliwiający odczytywanie udostępnianych usług. Dzięki temu można wykorzystywać obiekty pisane w różnych językach, przy użyciu różnych narzędzi.

Nowy etap - COM+

W roku 1997 Microsoft ogłosił plany rozszerzenia modelu COM. Jego następcą jest COM+, standard mocno związany z platformą Windows 2000.

Jednym z najważniejszych z zapowiadanych wówczas udogodnień miała być integracja COM z Microsoft Transaction Server, tak by programista nie musiał zbyt wiele uwagi poświęcać tworzeniu obiektu, którego operacje byłyby wykonywane w środowisku transakcyjnym. W COM+ miało być wprowadzone, znane z Javy, automatyczne zarządzanie przydzieloną pamięcią. Microsoft planował także rozszerzenie możliwości COM o dziedziczenie, znane z języków programowania (w starym COM można przejąć interfejsy, ale np. by odziedziczyć zachowanie, kod obiektu potomnego musi jawnie wywoływać odpowiednią metodę obiektu bazowego).

Za sprawą COM+ miał zmienić się sposób projektowania aplikacji i składników. Opiera się on na wykorzystaniu tzw. kolektorów (interceptors), które pełnią rolę pośredników w wywoływaniu metod. Pozwalają one, by komponent modyfikował swoją rolę w zależności od sytuacji. To z kolei umożliwia dynamiczne wywoływanie różnych usług podczas działania obiektu, a nie dowiązywanie do pojedynczej usługi. Kolektor ma pomagać w odbieraniu i przetwarzaniu zdarzenia dotyczącego tworzenia/usuwania danej instancji, wywoływania metod (i powrotów) oraz obsługi błędów.

Na razie wersja COM+, którą udostępniono wraz z drugą wersją beta Windows 2000, nieco odbiega od zapowiedzi Microsoftu.

Mądrzejsze obiekty

COM+ jest zgodny wstecz. Nie zmieniono protokołu do komunikacji w środowisku rozproszonym. Nadal jest wykorzystywany DCOM, czyli teoretycznie w środowisku rozproszonym mogą istnieć stare obiekty COM obok nowych COM+, które mogą nawzajem się wywoływać. Można nawet pisać aplikacje, które korzystają tylko z pewnego wycinka możliwości COM+ (np. dowiązywania do danych czy połączenia transakcyjnego).

Microsoft uprościł tworzenie składników. W środowisku Windows 2000 system operacyjny realizuje pewne standardowe operacje, jakie musi wykonywać każdy obiekt COM (wdrożenie interfejsu IUnknow, zarządzanie czasem "życia" składnika itp.). Nie ma potrzeby, by programista je samodzielnie wdrażał.

Ze względu na zapewnienie zgodności z COM, Microsoft zdecydował o wprowadzeniu dodatkowej struktury opisującej obiekt. COM+ musi, tak jak stary COM, zawierać Type Library, gdzie opisane są metody, interfejsy i sygnatury klas, a także Component Library, w którym umieszczone są informacje o dodatkowych możliwościach składnika, np. czy korzysta z transakcji, czy jest synchronizowany. CLB i TLB są oddzielnymi zbiorami, które łączy tylko obiekt.

W COM+, oprócz przechowywania właściwości obiektów w PropertyBag (np. atrybutów określających wygląd kontrolek ActiveX osadzonych na formatkach), wprowadzono nowy interfejs do wymiany metainformacji dokładnie opisujących zasady działania obiektu. Nowe narzędzia programistyczne, które pojawią się wraz z Windows 2000, prawdopodobnie będą umożliwiały manipulację tymi interfejsami.

Integracja z MTS pozwala w zasadzie pisać komponenty, którym obojętne jest, czy działają w środowisku transakcyjnym. Podczas tworzenia obiektów w COM należało strzec kontekstu obiektu, poprawnie przekazywać go do komponentu zarządzającego transakcjami. Trzeba było więc stworzyć komponent, który ma działać z MTS. Natomiast COM+ jest zunifikowane z MTS. Programista nie musi pisać setek linii kodu, by obiekt poprawnie współpracował z serwerem transakcyjnym.

COM kieruje ruchem

COM+ pozwala na stosowanie mechanizmu typu publisher/subscriber, podobnego do tego z JDK 1.1.2. COM był na stałe związany z określonym zdarzeniem. W COM+ obiekty mogą "zapisywać" się na konkretne zdarzenie lub na ich grupę. Istnieje też specjalna grupa obiektów zarządzających zdarzeniami. Dzięki temu obiekt może też ze zdarzeń rezygnować. O tym, że w ogóle ono nie zachodzi, nie decyduje obiekt, a specjalna warstwa pośrednia, która zarządza "stosem" zdarzeń.

COM+ pozwala także na wywoływanie metod w sposób asynchroniczny, gdy obiekt wywołujący nie czeka, aż obiekt wołany zakończy działanie.

W prosty, ale efektywny sposób rozwiązano rozkładanie obciążenia w aplikacji wielowarstwowej. W systemie rozproszonym może istnieć specjalny komputer-router, który sprawdza, by serwery aplikacyjne miały równe obciążenie. W momencie gdy maszyna kliencka żąda utworzenia zdalnego obiektu, żądanie wysyła do tego routera. Ten ocenia, który serwer aplikacyjny jest najmniej obciążony i od niego żąda utworzenia obiektu. Następnie przekazuje kontekst tego serwera do maszyny klienta tak, że dalsza komunikacja odbywa się bezpośrednio między maszyną klienta a tym serwerem. Na końcu router jest informowany o zakończeniu działania składnika.

Ważnym elementem COM+ jest tzw. object pooling, czyli swego rodzaju racjonalne wykorzystanie zasobów i ograniczenie liczby tworzonych obiektów. W przypadku aplikacji rozproszonych, składających się z wielu COM+, można ustalić maksymalną liczbę tworzonych obiektów, a także najdłuższy czas oczekiwania na "wolny" obiekt.

Obiekty w kolejce

W COM+ można tworzyć specjalny typ zdalnych obiektów, które nie komunikują się bezpośrednio, ale wykorzystują w tym celu kolejkę komunikatów MSMQ.

W klasycznej aplikacji, stosującej do komunikacji DCOM/RPC, każdy kolejny etap przetwarzania wymaga, by na etapie poprzednim przekazano informację, że przesłanie zakończyło się sukcesem. Projektując aplikacje przy użyciu COM, można zastosować MSMQ do przesyłania informacji do zdalnego komputera. Konstruowanie w ten sposób aplikacji wymaga jednak dużej uwagi.

W COM+ elementy odpowiedzialne za przesyłanie informacji zostały ukryte przed programistą - nie trzeba wykonywać specjalnych operacji, by obiekt mógł skorzystać z MSMQ. Co więcej, ten sam plik binarny może korzystać z kolejki komunikatów lub nie. W COM+ za komunikację między obiektami odpowiada para rejestrator-odtwarzacz, które albo komunikują się bezpośrednio, albo przez DCOM lub MSMQ. Nadawca nagrywa to, co wysyła, w rejestratorze. Następnie informacja jest przekazywana do odtwarzacza, który odgrywa ją obiektowi-odbiorcy.

W odróżnieniu od klasycznej "kolejki komunikatów" Microsoft zaproponował kilka poziomów potwierdzania wykonania operacji. Najbardziej restrykcyjny zakłada, że - podobnie jak w DCOM - każdy etap musi być potwierdzany. Jeśli jednak programista do tego stopnia ufa systemowi operacyjnemu i swojemu programowi, że ma pewność, iż komunikat zawsze dotrze, może wyeliminować konieczność potwierdzeń. Może też określić klasy komunikatów, wg których przesyłane jest potwierdzenie.

Czekamy na więcej

Microsoft dotychczas zrealizował niewielką część zamierzeń dotyczących modelu COM+, zapowiedzianych w 1997 r. Z szumnie zapowiadanego garbage collection powstała część systemu operacyjnego, która implementuje to, co do tej pory musiał zawierać każdy obiekt - podstawowe tworzenie IUnknown - i inicjalizacja obiektu. Dziedziczenie i kolektory stały się dodatkowymi elementami, które w zasadzie nie wiadomo, czy ułatwią konstrukcję aplikacji. Można mieć nadzieję, że te mechanizmy wprowadzą pewien "porządek" w obiektach.

Na przygotowanie pełnej i spójnej wizji Distributed interNet Application Architecture Microsoft ma jeszcze kilka miesięcy. Wtedy bowiem na rynku ma się pojawić gotowa wersja systemu operacyjnego Windows 2000, który stanowi podstawę DNA.

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

TOP 200