Chaos w warstwie średniej

Modele fizyczny i logiczny definiują działanie oprogramowania typu middleware.

Modele fizyczny i logiczny definiują działanie oprogramowania typu middleware.

Modelując bazę danych, tworzy się koncepcyjny model logiczny bazy, zawierający ideę odwzorowania biznesu na struktury bazodanowe, a następnie przekształca go na model fizyczny: tabele, indeksy, pliki i sposób ich rozmieszczenia na dyskach. Podobnie można scharakteryzować różne techniki komunikacji między aplikacjami. Modele logiczne middleware'u definiują sposób przechodzenia informacji między aplikacjami, a modele fizyczne pokazują, jak middleware działa.

Modele logiczne

Podstawowe konfiguracje middleware'u to komunikacja punkt-punkt, jeden do wielu i wiele do wielu.

Komunikacja punkt-punkt pozwala na stworzenie pojedynczego łącza między dwoma aplikacjami, w którym komunikaty i dane przechodzą między systemami bez przetwarzania pośredniego. Zaletą tej komunikacji jest prostota. Tego typu komunikację realizują wszystkie programy do zdalnego wywołania procedur RPC i większość do kolejkowania komunikatów (MQSeries, MSMQ).

Większość problemów integracyjnych wymaga jednak łączenia więcej niż dwóch aplikacji. Programy typu punkt-punkt nie są dobrym rozwiązaniem, gdyż wymagają stworzenia oddzielnych łączy między każdą parą aplikacji. Wówczas konieczne jest wykorzystanie pośredniego węzła - brokera - kierującego komunikaty do odpowiednich aplikacji.

Do rozwiązywania problemów integracyjnych nadaje się komunikacja wiele do wielu. Przykładami produktów są serwery aplikacyjne, monitory transakcyjne, brokery informacyjne i obiektowe systemy rozproszone. Ich wadą jest złożoność.

Komunikacja synchroniczna jest ściśle powiązana z aplikacjami. Aplikacja wysyłająca komunikat przerywa przetwarzanie i czeka na odpowiedź. Asynchroniczna komunikacja polega na umieszczaniu komunikatu w kolejce, podczas gdy aplikacja może wykonywać inne zadania. Główną zaletą tego rozwiązania jest nieblokowanie pracy programu.

Modele fizyczne

Komunikacja połączeniowa oznacza, że dwie aplikacje tworzą sesję, wymieniają komunikaty, upewniają się, czy te zostały poprawnie dostarczone, a potem rozłączają się. Komunikacja bezpołączeniowa oznacza, że dwie aplikacje nie wchodzą w stałą sesję; działają na żądanie, wysyłając odpowiedź i nie kontrolują jej dalszej drogi.

Komunikacja bezpośrednia polega na tym, że middleware przejmuje komunikat od jednej aplikacji i przekazuje go dalej. Z kolei komunikacja przez kolejkę oznacza, że komunikaty są umieszczane w kolejce, obsługiwanej przez specjalny program, skąd w miarę potrzeby są zdejmowane przez odbiorcę. Zaletą tej metody jest to, że aby wysłać komunikat do odbiorcy, nie trzeba wiedzieć, czy jest on aktywny, a komunikacja nie blokuje lokalnego przetwarzania.

Najprostszy jest model żądanie/odpowiedź - aplikacja wykonuje tylko to, czego zażąda od niej korespondent. Z kolei model konwersacyjny opiera się na dwukierunkowej wymianie informacji dla określenia potrzeb i możliwości ich spełnienia. Komunikacja typu publikuj/abonuj oznacza, że aplikacja nadająca nie musi nic wiedzieć na temat odbiorcy. Broker dystrybuuje określone informacje do odbiorców z chwilą ich pojawienia się, na żądanie lub w zadanym czasie.

Model rozgłoszeniowy to jedna z metod komunikacji asynchronicznej. Polega na wysyłaniu komunikatów w sieć, nie zajmując się ani tym, kto otrzymuje informacje, ani czy je otrzymuje. W komunikacji między aplikacjami spotyka się również model rozgłaszania do wybranych odbiorców (multicasting), chociaż wymaga to posługiwania się zaawansowanymi procedurami systemowych usług katalogowych w celu skierowania komunikatów na podstawie adresów/nazw odbiorców.