ARCHITEKTURY KOMPONENTOWE: OGRANICZENIA I ALTERNATYWY

Projektowanie oparte na komponentach jest stosunkowo nowe i nadal jest przedmiotem ożywionych dyskusji, w tym poważnej debaty na temat względnych zalet CORBA i DCOM. Względne zalety i wady często wynikają z różnych podejść przyjętych przez ich wynalazców: DCOM pochodzi ze stajni firmy Microsoft i, między innymi, daje znaczną moc klientom z systemem Windows. Aby podać tylko jeden przykład, DCOM garbage collection korzysta z prawa do niszczenia obiektów, gdy nie ma już do nich odniesień żaden klient. Z drugiej strony, CORBA zachowuje prawo serwera do utrzymywania tych obiektów, zapewniając w ten sposób lepszą skalowalność, ale wymagając napisania specjalistycznych rozwiązań dla każdej aplikacji. Nowy uczestnik, Enterprise Java, jest wyraźnie bardzo ważnym rozwiązaniem dla wymagań dotyczących  handlu elektronicznego i, w porównaniu z większością alternatyw, oferuje wygodne „proste” podejście. Jest to również, przynajmniej w zasadzie, w pełni otwarte rozwiązanie: niezależnie od konkretnego środowiska sprzętowego i programowego, na którym działa, wirtualna maszyna Java zapewnia programiście spójne środowisko programistyczne. Niestety, może to również stanowić problem: ponieważ kod maszyny wirtualnej musi zostać przetłumaczony na „prawdziwy” kod dla „prawdziwej” używanej maszyny, występują nieuniknione spadki wydajności, w szczególności szybkość. Z tego powodu deweloperzy w branżach, w których wymagane są procesy wymagające intensywnych transakcji, na przykład bankowość detaliczna, które generalnie zastrzegają ocenę, czy korporacyjna Java zapewni odpowiednie rozwiązanie. Inny problem pojawia się w przypadku starszego kodu: jak powiedzieliśmy, poprzez Java Native Interface (JNI) można zintegrować się z innymi językami, ale mogą pojawić się trudności z definicjami obiektów, które muszą być zakodowane w JAVA. Kontrastuje to z CORBA, która jest po prostu specyfikacją, pozwala na kodowanie obiektów w dowolnym języku, pod warunkiem, że istnieje funkcja biblioteki ORB. To dopiero początek, aby móc komentować bezpieczeństwo architektur komponentów. Można się martwić o moc, jaką DCOM daje klientom. Twierdzono również, że bezpieczeństwo CORBA jest nadal raczej szarą strefą. Mechanizmy bezpieczeństwa Javy powinny skorzystać na podejściu piaskownicy, chociaż należy zauważyć, że kod inny niż Java, połączony przez JNI, zachowa swoje własne luki. To powiedziawszy, zgodnie z naszą dyktaturą podaną w części 3.2 dotyczącą konieczności opracowania prostych operacyjnie procedur bezpieczeństwa, prawdopodobnie prawdą jest, że wszystkie omówione przez nas rozwiązania komponentowe ułatwią programistom ocenę bezpieczeństwa ich kodu niż dostępne wcześniej dla nich opcje. Na koniec powinniśmy zauważyć, że żadna z architektur nie została zaprojektowana z myślą o aplikacjach działających w czasie rzeczywistym, takich jak ciągłe przesyłanie strumieniowe wideo. Na razie nie jest to pilny wymóg, ale głupotą byłoby polegać na tym, by tak było przez dłuższy czas.

ENTERPRISE JAVA

Ostatnio dość nowatorskie podejście, Enterprise Java ,przenosi zdolność interoperacyjności na szereg funkcji Java, które działają na serwerach. Wśród innych zalet wymienia się znaczną poprawę czasu opracowywania . Programy Java działają na zasadzie, że działają na wirtualnej maszynie JAVA – oprogramowaniu działającym na dowolnym komputerze lub systemie operacyjnym, które zostało zdefiniowane tak, aby zachowywać się jak standardowa idealizacja komputera, niezależnie od tego, co znajduje się pod nim . Jednym ze szczególnych aspektów tych programów niezależnych od komputera jest serwlet Java. Serwlety działają na większości serwerów WWW (podobnie jak ich odpowiedniki klienckie, aplety, działają na większości przeglądarek klienckich) i działają w środowisku maszyny wirtualnej (lub „piaskownicy”). Jak pokazano na rysunku, typowe aplikacje serwletu mogą obejmować dostęp do bazy danych lub wywołanie zdalnej metody (RMI). Aplet jest wywoływany i ładowany do pamięci maszyny wirtualnej tylko raz, na początku uruchomionego programu, a następnie może obsługiwać kilka żądań jednocześnie, po prostu tworząc zduplikowany blok w innej części pamięci dla nowego zadania. (Jest to powszechnie stosowana technika obliczeniowa, w której każdy nowy bit kodu rezydującego w pamięci jest nazywany wątkiem, a proces nazywany jest wielowątkowością. Wielowątkowość jest wydajna i szybka, ponieważ nie musimy ładować i uruchamiać nowej wersji programu dla każdego zadanie.) Serwlety wykonują swoje wyspecjalizowane operacje za pośrednictwem interfejsów, takich jak Java Database Connectivity, JDBC (dla baz danych) i Remote Method Invocation, RMI (do uruchamiania zdalnych procesów lub metod, jak określa się je w modelu obiektowym, który Jest używane). RMI pełni funkcje podobne do CORBA; jego podejście zorientowane obiektowo pozwala na wywoływanie i interakcję z obiektami na zdalnych serwerach, za pośrednictwem kodów pośredniczących (instrukcje interfejsu po stronie klienta dla obiektu zdalnego) i szkieletów (kontrolki po stronie serwera do wywoływania obiektu i przekazywania do niego parametrów), podobnie do CORBA Odcinki IDL. Java posiada również Java Native Interface, JNI, który umożliwia integrację kodu C i C11 z programami Java. Jest to wygodny sposób integracji starszych programów ze środowiskiem Java, ale tylko wtedy, gdy mają interfejsy C lub C11. Jeśli tak nie jest, jednym z rozwiązań jest użycie CORBA jako oprogramowania pośredniczącego między Enterprise JAVA a starszą aplikacją. Można to wykorzystać na przykład do integracji dużych programów w języku COBOL i korporacyjnych aplikacji Java .

WARSTWA ŚRODOWISKA APLIKACJI INTERNETOWEJ

Powyższa dyskusja przeszła do czwartej warstwy na rysunku 1.26, która dotyczy rozwoju aplikacji w e-biznesie, które naprawdę wyróżniają go jako „on-line”. We wcześniejszych rozdziałach odnosiliśmy się do różnych elementów oprogramowania niezbędnych do podstawowych aplikacji detalicznych eCommerce: HTTP, HTML, aktywne strony, aktywne X, Java i tak dalej. Są one również wymagane w przypadku aplikacji wewnątrz- i wewnątrz-biznesowych, ale przy znacznie większej potrzebie bardziej złożonej interakcji między klientem a serwerem, na przykład: przetwarzanie transakcji, elektroniczna wymiana danych standardowych faktur, zlecenia typu call-off itp. Te aplikacje muszą również działać w trybie bardzo rozproszonym w tak zwanych architekturach n-warstwowych (tj. obejmujących kilka serwerów aplikacji) o wysokim stopniu niejednorodności sprzętu. Jak pokazuje rysunek 1.26, chcielibyśmy, aby aplikacje działały spójnie w środowiskach, które wykorzystują wiele systemów operacyjnych hosta, które mogą uruchamiać różne oprogramowanie pośredniczące i korzystać z różnych baz danych. Możliwe jest tworzenie aplikacji w wielu językach programowania, aby działały na przykład w oprogramowaniu pośredniczącym CORBA, i podobnie do pisania programów zapytań do baz danych, aby uzyskać dostęp do baz danych ORACLE SQL, IBM DB2 itp.

OBIEKTY CORBA I e-BIZNES

Object Management Group dostrzegła znaczenie e-biznesu w swoich obszarach zainteresowań i stała się bardzo aktywna w próbach zdefiniowania funkcjonalności CORBA i funkcji OMA na tym polu. Jako grupa standardów, ich podejście jest naturalnie raczej przemyślane niż pochopne i dlatego może cierpieć z powodu niebezpieczeństwa wyprzedzenia przez wydarzenia. Jednak obecnie wydaje się, że mają pewien wpływ na kierowanie kolejnymi krokami w architekturze e-biznesu, a także widzą implementacje CORBA na większości popularnych platform. Dlatego warto zastanowić się nad niektórymi aspektami infrastruktury CORBA, które mają szczególne zastosowanie w e-biznesie. Rysunek

przedstawia w ujęciu CORBA/OMG procesy, które tworzą razem e-biznes, przynajmniej w takim zakresie, w jakim wymagają one przetwarzania rozproszonego. Niektóre, takie jak być może płatności, katalog i własność intelektualna (IPR), są oczywiste, podobnie jak ogólne obiekty biznesowe, obiekty i usługi pokazane na dole rysunku. Niektóre inne mogą wymagać wyjaśnienia:

† Dane semantyczne: dzisiejsze instancje procesów handlowych on-line zostały opracowane ad hoc, przy czym każdy programista pracuje z różnymi jednostkami podstawowymi i z własnymi konwencjami nazewnictwa. Oznacza to, że nie jest łatwo połączyć rozwiązanie jednej osoby z rozwiązaniem innej, a nawet utrudnia wspólne zrozumienie wymagań.

† Ułatwienia negocjacyjne: negocjacje muszą być wielostronne (przynajmniej dwustronne). W związku z tym należy je zdefiniować w spójny sposób, aby umożliwić stronom rozszerzenie swoich komponentów handlowych w stosunku do siebie nawzajem i umożliwić powiązanie ogólnych wartości (na przykład ceny) z konkretną wartością (dolary amerykańskie, funty szterlingi itp.). ) w sposób spójny między wszystkimi uczestnikami.

† Usługi umowne: podobnie te usługi, które określają poddziałania w ramach umowy lub mogą odnosić się do ogólnych ustaleń umownych, również wymagają spójnej specyfikacji.

† Usługi maklerskie i agencyjne: nad tymi obiektami znajduje się wyższy poziom zgrupowania obiektów związanych z ogólną infrastrukturą rynkową, z których szczególnie interesujące są usługi handlowe i maklerskie. Zapewniają one możliwość rozsyłania reklam wymaganych usług i rekrutowania usługi zdalnej zgodnej z profilem. Model procesu transakcyjnego dla takich czynności, jeśli mają być przeprowadzane automatycznie, jest oczywiście dość skomplikowany i znowu standaryzacja będzie korzystna.

OMG i inne organizacje ciężko pracują, aby urzeczywistnić te pomysły, z których wiele jest nadal koncepcyjnych.

USŁUGI NAZWA I HANDLOWE CORBA

Bardzo istotnymi składnikami usług CORBA są usługi „nazewnictwa” i „handlu”. Nazewnictwo jest prostsze. CORBA posiada zbiór katalogów systemowych, które ustalają korespondencję między nazwą obiektu a jego aktualną lokalizacją, tak jak sieć telefonii komórkowej może przekierować połączenie, opisane numerem telefonu, na konkretną antenę obsługującą komórkę, w której o nazwie strona obecnie jest. (Po prostu używasz nazwy; usługa CORBA utrzymuje ścieżkę do obiektu.) Ale to zakłada, że ​​wiesz, do kogo chcesz zadzwonić (a także, być może, w jakim celu i na jakich warunkach). Załóżmy, że chcesz dowiedzieć się, kto może sprzedać Ci dany typ samochodu, za jaką cenę i jak szybko. Musisz zajrzeć do katalogu Yellow Pages, który zawiera listę firm objętych usługami, które oferujesz, i uzyskać numer kontaktowy. To część tego, co zrobi usługa Trader. Pozwoli Ci to zidentyfikować źródła potrzebnych Ci obiektów. Na początku mogą to być proste usługi, takie jak aplikacja do bezpiecznego „znakowania wodnego” danych przed kradzieżą praw autorskich, ale w zasadzie powinna być w stanie znaleźć listę wirtualnych organizacji, które mogą zdalnie zarządzać zasobami ludzkimi na przykład oprogramowanie dla Twojej organizacji. Sprzedawca nie tylko podaje nazwy odpowiednich obiektów; podaje również szczegółowe informacje o oferowanych przez nich usługach – szybkości, kosztach, polityce bezpieczeństwa i tak dalej. W tym momencie należy powiedzieć, że niektóre właściwości Tradera muszą jeszcze zostać zdefiniowane przez OMG, a większość korzyści z usług Tradera można jedynie postulować. Niemniej jednak, podstawowe koncepcje są powszechnie akceptowane, a CORBA staje się powszechnie wykorzystywana jako platforma dla zaawansowanych usług.

„ARCHITEKTURA ZARZĄDZANIA OBIEKTAMI” – OMA

Sama CORBA zajmuje się interfejsami między obiektami i sposobem ich określania w IDL. Jest to najniższy poziom kompleksowej architektury zarządzania obiektami („OMA”), który obejmuje wizję nienastawionej na zysk kooperacyjnej grupy dostawców, znanej jako Object Management Group (OMG). Ich ideą jest stworzenie, w drodze konsensusu, wspólnej architektury dla przetwarzania rozproszonego, zbudowanej wokół opisanych powyżej zasad obiektowych. Oddzielają one podstawowe, niższego poziomu usługi dla obiektów, poziom CORBAservices, od udogodnień udostępnianych aplikacjom, poziom CORBAfacilities  

Usługi CORBA obejmują bardziej podstawowe i ogólne potrzeby wspólne dla większości obiektów: takie rzeczy jak nazewnictwo, zapytania, grupowanie obiektów, bezpieczeństwo i tak dalej. Wiele z nich jest dostępnych w stabilnej formie od kilku dostawców. Placówki CORBA są raczej słabiej rozwinięte. Zdefiniowano cztery podstawowe kategorie: interfejs użytkownika, zarządzanie informacją, zarządzanie systemami, zarządzanie zadaniami. Są one wyraźnie przydatne we wszystkich rozproszonych aplikacjach biznesowych. „Pionowe” obiekty CORBA są również generowane dla określonych sektorów rynku, takich jak opieka zdrowotna i finanse. Polityką OMG jest przyjęcie istniejących modeli informacji i procesów już stworzonych przez te sektory i zintegrowanie ich z OMA, na przykład poprzez tworzenie nowych interfejsów IDL.

„BROKER ZAMÓWIEŃ OBIEKTÓW” – ORB

Wyobraźmy sobie przypadek żądania od „klienta” (czyli od procesu wykonywanego w dowolnym miejscu w systemie rozproszonym) dla obiektu. Na przykład klient może chcieć wywołać obiekt TAXM, aby poradzić sobie z kalkulacją podatku. W implementacjach CORBA klient nigdy nie komunikuje się bezpośrednio z obiektem; żądanie zawsze przechodzi przez Object Request Broker (ORB), część oprogramowania CORBA, która działa jako bufor upraszczający między klientem a obiektem

Celem ORB jest ukrycie przed programistą aplikacji zawiłości radzenia sobie ze środowiskiem rozproszonym, które ponadto może składać się z heterogenicznego zestawu komputerów. ORB znajduje obiekt i obsługuje szczegółowe parametry żądania. Jego zadaniem jest zasadniczo zapewnienie przejrzystości lokalizacji i dostępu. Czyni to poprzez interfejsy IDL, jak pokazano. (Nawiasem mówiąc, można zauważyć, że ORB pasuje do naszej definicji obiektu CORBA.) W systemie rozproszonym może być kilka ORBów, każdy zamontowany na innym zestawie komputerów. Klienci wysyłają ich prośby do lokalnego ORB. Załóżmy, że poszukiwany obiekt nie znajduje się na obszarze objętym lokalnym ORB? Nie ma problemu, lokalny ORB po prostu komunikuje się z lokalnym ORBem obiektu

Kolejną zaletą tego podejścia jest to, że różne ORBy mogą znajdować się na platformach sprzętowych i programowych różnych dostawców i być napisane w zupełnie różnych językach, zgodnie z różnymi projektami wewnętrznymi. Wystarczy, że są w stanie zapewnić funkcje CORBA określone w ich interfejsach.

„ARCHITEKTURA BROKERÓW WSPÓLNYCH OBIEKTÓW” – CORBA

CORBA szeroko wykorzystuje koncepcję programowania projektowania obiektowego, w szczególności definiuje obiekty w kategoriach czterech „interfejsów” z innymi obiektami i infrastrukturą, jak opisano w naszym przykładzie poborcy podatkowego. Interfejsy te są określone w specjalnie zaprojektowanym języku definicji interfejsu (IDL). IDL nie ma być językiem, w którym napisane są wszystkie programy do przetwarzania rozproszonego; zamiast tego jest skonstruowany tak, że komponenty IDL mogą być mapowane na inne języki przy użyciu zautomatyzowanych procedur. Oznacza to, że programiści mogą pisać aplikacje w wybranych przez siebie językach i, z pomocą podręczników i narzędzi IDL, importować do swoich programów niezbędne „funkcje” interfejsu (sekcje kodu, które wykonują określone procedury – „drukuj”, „czytaj”, „pisać” itp.) z IDL, bez konieczności poznawania zawiłości IDL. Ponieważ funkcje w dowolnym języku zawsze są konwertowane na dokładnie ten sam zestaw instrukcji IDL, programiści mogą mieć pewność, że program będzie działał w systemie zgodnym z CORBA, niezależnie od języka źródłowego.

OBIEKTY I KOMPONENTY

Obiektowe podejście do projektowania i kodowania oprogramowania nie zostało pierwotnie opracowane dla przetwarzania rozproszonego, ale okazuje się, że ma pewne zalety w tym kierunku. Projektowanie zorientowane obiektowo zaczyna się od zdefiniowania elementów, którymi chcemy manipulować, ich właściwości i sposobu, w jaki się ze sobą komunikują, w kategoriach wysokiego poziomu, a nie struktur danych i sposobu, w jaki komputery radzą sobie z danymi. „rzeczą” może być klient, konto itp.; oczywiste właściwości to nazwiska, adresy. Poszczególne rzeczy mogą należeć do wspólnej grupy, „klasy” i mieć wspólne właściwości, np. kobiety i mężczyźni należą do klasy ludzi i dzielą jedną z jej właściwości – wiek. Jest to jeden z powodów, dla których projektowanie zorientowane obiektowo jest istotne dla przetwarzania rozproszonego: pozwala nam zachować podstawowe koncepcje w oderwaniu od zdarzeń incydentalnych i przejściowych. Klienci są klientami i zachowują swoje szczególne właściwości bez względu na to, czy ich zakupy są odczytywane przez terminal kasowy w sklepie, czy też dokonywane za pomocą domowego komputera. Z drugiej strony „rabat branżowy” jest własnością środka zakupu, a nie konkretnego klienta, który go kupuje. W środowisku rozproszonym często chcemy ukryć położenie geograficzne usługi, ponieważ nie jest to istotne dla wymagań, a geografia rozprasza. Ta technika abstrakcji, w której podstawowe właściwości procesów są izolowane od sedna sprawy, ma wyraźną wartość w koncepcyjnym modelowaniu procesów biznesowych. Ale jest to co najmniej równie cenne również w domenie wdrożeniowej, gdzie często nie chcemy rozróżniać przetwarzania lokalnego i zdalnego, a nawet tego, czy proces działa na jednej czy na wielu maszynach. Jak powiedzieliśmy, przedmioty to nie tylko „rzeczy” w sensie fizycznym. Weźmy przykład „poborcy podatku od wartości dodanej” (TAXG). Programiści aplikacji, którzy chcą korzystać z TAXG, nie muszą wiedzieć, jak to działa, ale musisz wiedzieć o tym kilka rzeczy

TAXG to „czarna skrzynka”, którą w całości definiuje:

† Usługi, które zapewnia aplikacjom.

† Sposób, w jaki aplikacje powinny wysyłać do niego wiadomości.

† Zestaw szczegółowych informacji na temat obsługi komunikacji, których aplikacje nie muszą znać, ale które mają na celu poinformowanie podstawowej infrastruktury rozproszonej.

† Unikalny identyfikator, który zostanie użyty do jego zlokalizowania, nawet jeśli będzie przemieszczał się z miejsca na miejsce. (Możliwe, że obiekt, który oblicza Twój podatek, może przenieść się z jednego komputera na drugi. Nadal chcesz uzyskać dostęp do tego, a nie tego, który rozlicza podatek kogoś innego lub wykonuje obliczenia na innej podstawie.)

W programowaniu obiektowym obiekty są definiowane przez definicje klas. Jest to sposób na zdefiniowanie „szablonu” dla obiektu, który obejmuje określenie jego właściwości (na przykład obiekt rachunku bankowego może mieć właściwości salda, nazwy i numeru rachunku) oraz kilka procedur lub metod, które umożliwiają m.in. właściwości, którymi należy manipulować. Za każdym razem, gdy tworzona jest nowa instancja obiektu (na przykład nowa osoba otrzymuje konto bankowe), ta instancja „bank_account_object” jest tworzona i zarządzana w pamięci komputera w ramach kompilacji, ładowania i uruchamiania obiektu zorientowany język programowania (C++, ActiveX, Java itp.), bez konieczności zajmowania się szczegółami. Zauważ, że jednym z aspektów generowania klas jest możliwość włączania lub dziedziczenia właściwości innych obiektów. (Na przykład klasy „mężczyzna” i „kobieta” mogą dziedziczyć po klasie „pracownik”). Uważa się, że jest to pomoc w szybkości i dokładności rozwoju. Jednak w przypadku stosowania orientacji obiektowej w systemach rozproszonych właściwość dziedziczenia nie wydaje się być szczególnie istotna. Jednym z aspektów podejścia zorientowanego obiektowo, które ma znaczenie dla systemów rozproszonych, jest to, że sprawia ono, że programowanie jest zadaniem dwuetapowym. Najpierw definiujemy strukturę każdego obiektu. Następnie „po prostu” piszemy resztę programu mniej więcej jako serię komunikacji między obiektami, używając dobrze zdefiniowanych reguł, które wychodzą ze sposobu, w jaki obiekty zostały określone. Często pożądane jest doprowadzenie tego podejścia do enkapsulacji do skrajności, ponieważ komunikujące się komponenty nie muszą nawet być świadome języka programowania, w którym napisane jest drugie. Tworzenie i zarządzanie obiektami stwarza pewne nowe problemy w przypadku rozproszonym: tworzenie nowej instancji obiektu może być inicjowane przez platformę kliencką zdalną z serwera, na którym ma zostać utworzona instancja. Należy zapewnić standardowe procedury tworzenia tych instancji w fabrykach obiektów. Podobnie rozproszone urządzenia muszą być dostępne do usuwania tych wystąpień, gdy nie są już potrzebne. Zwykle ukryty przed programistą aplikacji, musi też istnieć niezawodny sposób przesyłania danych pomiędzy rozproszonymi obiektami. Podsumowując, przejście od programowania obiektowego do projektowania komponentów wydaje się wiązać ze znaczącą zmianą w perspektywach. Najlepiej nie pytać, jakie są komponenty; lepiej opisać, co robią i jak się pojawiają, ponieważ można je realizować na różne sposoby, niekoniecznie obiektowe. Po pierwsze, ich wygląd: widziane z innych platform w systemie rozproszonym, widoczne są tylko przez ich interfejsy. Sposób implementacji komponentu na platformie hosta nie ma znaczenia dla reszty systemu

W dość fantazyjnym modelu pokazanym na, komponent wchodzi w interakcję ze światem poprzez całkowicie izolujący interfejs. Komputer kliencki uzyskujący dostęp do komponentu nie musi wiedzieć – i nie może powiedzieć – czy jest napisany w C, C++, Javie czy nawet wdrożony jako urzędnik księgi ludzkiej. Zaleta tego podejścia jest prosta: możliwość podłączania, możliwość łączenia procesów ze sobą bez martwienia się o ich wewnętrzne działanie. Wspomnieliśmy już o innej właściwości komponentów: niezależności ich lokalizacji. Chyba że trzeba wiedzieć, gdzie znajduje się składnik , gdzie jest zlokalizowany, jest to niepotrzebne rozproszenie uwagi. Ponownie, podstawową zasadą jest ukrywanie rzeczy przed projektantem, w tym przypadku miejsca pobytu komponentu. Ale jeśli nasze komponenty mają być uwolnione od wścibskich oczu programistów aplikacji, muszą nadal znajdować się pod kontrolą szeregu usług zarządzania, które same w sobie są niewidoczne dla programisty.

System zarządzania zawiera informacje o tym, gdzie znajdują się komponenty i jak się nazywają. Może zatem powiązać nazwę używaną przez programistę z rzeczywistym komponentem. Prowadzi również rejestr ważnych komponentów i podobnie listę osób, które mają do nich dostęp. Ponieważ obiekty będą często dystrybuowane, pewien nadrzędny proces musi być również odpowiedzialny za przechowywanie bieżących wartości stanów obiektów w magazynie trwałym, który może zapewnić odzyskiwanie danych dla hostów, na przykład w przypadku niepowodzenia transakcji. (Przetwarzanie transakcji jest opisane w dalszej części). I odwrotnie, gdy klienci nie używają już obiektów, musi istnieć pewne wyrzucanie elementów bezużytecznych, dzięki którym można zwolnić pamięć i rekordy stanu używane do przechowywania nadmiarowych wystąpień tych obiektów do nowego użytku. Wreszcie będzie zestaw ogólnych usług zarządzania do obsługi bezpieczeństwa i zarządzania zasobami. W różnym stopniu iz różnym powodzeniem, systemy zarządzania próbują radzić sobie z odpornością na błędy, równoważeniem obciążenia itp. Rozwiązania komponentowego oprogramowania pośredniczącego mają zwykle swoje korzenie w podejściu programowania obiektowego lub rozproszonego. Pritchard zapewnia przydatne rozróżnienie między architekturami komponentowymi, które koncentrują się na pakowaniu kodu i jego funkcjonalności w wielu językach, a architekturami zdalnymi, które dotyczą używania rozproszonych obiektów do uruchamiania zdalnych procesów. W tabeli 1.1 próbujemy umieścić kilka popularnych produktów oprogramowania pośredniczącego. DCOM firmy Microsoft rozszerza ideę komponentów w ramach pojedynczego komputera (zazwyczaj PC z systemem Windows), który został opracowany pod nazwą COM, na środowisko rozproszone, w szczególności na architekturę klient-serwer systemu Windows. CORBA i Java RMI to „systemy otwarte”. CORBA jest bardziej dojrzała i ma większy udział w rynku, ale Java RMI cieszy się dużym zainteresowaniem.

PODŁĄCZANIE DO WEWNĘTRZNYCH SYSTEMÓW BIZNESOWYCH

Być może najprostszy przykład łączenia się między warstwami systemu informatycznego ma miejsce, gdy rozważamy operacje w ramach jednej firmy, która wprowadziła usługi sieciowe oprócz istniejących mechanizmów transakcyjnych. Widzieliśmy jeden przykład tego w przypadku serwerów detalicznych, w przypadku ODCB, który umożliwia serwerom sieciowym komunikowanie się z różnymi bazami danych różnych producentów. Część oprogramowania serwerowego prawie nieuchronnie zostanie przekazana pakietom programów, które wykonują takie zadania. Istnieje wiele proponowanych rozwiązań oprogramowania pośredniczącego, z których środowiska CORBA i korporacyjne środowiska JAVA są prawdopodobnie najbardziej ambitne. Omówimy je w poniższych sekcjach, ale ogólne zasady są takie same, niezależnie od zastosowanej metody: połączenie wzajemne można osiągnąć poprzez konstruowanie specjalistycznych łączników pomiędzy procesami. Konstruując lub nawet używając tych programów łączących należy zwrócić uwagę nie tylko na ich prawidłowe działanie, ale także na zapewnienie satysfakcjonującej wydajności i bezpieczeństwa. Można to zrobić bezpośrednio, uruchamiając zdalne wywołania funkcji lub procedur (RPC). Są to wiadomości przesyłane z jednego komputera do drugiego, które mogą wywoływać stosunkowo ograniczone działania na drugim, bezpośrednio przez zaporę.

Takie podejście, które jest rdzeniem architektur, takich jak Distributed Computing Environment (DCE) , umożliwia aplikacjom klienckim uruchamianie funkcji, zwykle napisanych w C, na zdalnym komputerze. Proste rozwiązania RPC, które obejmują wywoływanie ad hoc procesów działających na innych serwerach, można zaprojektować bez przyjmowania formalnego projektowania zorientowanego na komponenty lub obiekt. Są wygodne do prostszych zadań lub tam, gdzie mamy dobrą kontrolę nad środowiskiem zarówno na serwerze WWW, jak i na serwerze biznesowym. Jeśli jednak system IT jest skomplikowany technicznie lub firma istnieje w środowisku, w którym wiele tymczasowych sojuszy jest tworzonych i niszczonych w szybki i złożony sposób, wymagane jest bardziej ogólne i ustrukturyzowane podejście do przetwarzania rozproszonego. Podejście RPC do problemów tego rodzaju może być skomplikowane, a zatem trudne do utrzymania i niekoniecznie bardzo bezpieczne. Wraz ze wzrostem wykorzystania programowania obiektowego, preferowanym sposobem działania jest teraz wprowadzenie łącznika obiektowego między dwoma systemami

Komunikacja między serwerem WWW a procesem łączenia może wykorzystywać np. otwarty standard DCOM (rozsądnie) opracowany przez Microsoft. Firmy takie jak SAP (dostawca jednego z najpopularniejszych pakietów oprogramowania do planowania zasobów) dostarczają zestawy narzędzi, które umożliwiają projektantom tworzenie niezbędnych obiektów. Na przykład często wymagamy zdefiniowania obiektu „zamówienie”, który łączy się z procesami sprzedaży i dystrybucji w SAP, obiekt „klient” z procesów finansowo-księgowych i tak dalej. Zdalne wywołania funkcji mogą wywoływać te obiekty, ale działania, które następują po nich, są całkowicie definiowane przez charakterystykę obiektów, które są opracowywane i chronione za zaporą, a nie przez RFC, które są ujawniane na serwerze sieci Web. Takie podejście do korzystania z dobrze określonych interfejsów (niemal zawsze zorientowanych obiektowo) jest znane jako architektura komponentowa. Nawiasem mówiąc, chociaż twierdzi się, że dobrą wydajność można osiągnąć za pomocą obiektów składowych, czasami zaleca się również, aby lepszą praktyką było ograniczenie liczby dostępów z serwera WWW do serwera biznesowego tak bardzo, jak to możliwe. Na przykład może być lepiej utworzyć kopię katalogu produktów lokalnie obok serwera WWW, do użytku przez przeglądających klientów i dopiero po podjęciu przez nich decyzji o produkcie przekażą swoje zapytania do serwera biznesowego, aby sprawdzić dostępność itp. Miałoby to sens, zarówno pod względem wydajności, jak i bezpieczeństwa. Przyjrzymy się teraz niektórym architekturom komponentów.