<

10. Technologie programowania rozproszonego:

middleware i serwery aplikacji - przegląd


Omówimy tutaj ogólne podejścia do programowania rozproszonego, pojęcie "middleware" oraz rolę i znaczenie serwerów aplikacji. Skupiamy się na świecie aplikacji biznesowych, bowiem to one właśnie stanowią większość współczesnych, złożonych systemów rozproszonych. Materiał ma charakter opisowy i przeglądowy. Konkretne zastosowania i programistyczne przykłady będą podane w dalszych wykładach.


1. Koncepcyjne pole współczesnych aplikacji biznesowych

Aplikacje biznesowe stanowią duże, złożone i dynamiczne systemy, które coraz bardziej decydują o efektywności działania firm.. Skończyły się czasy fragmentarycznego oprogramowania - teraz ważne jest, aby systemy informatyczne obejmowały cały łańcuch wytwarzania wartości (value chain) i to w sposób spójny, zintegrowany, zapewniający szybki czas reakcji na potrzeby klientów czy inne sytuacje decyzyjno-zarządcze.

Wzrost złożoności dziedziny problemu wymaga adekwatnych środków programistycznych:

Dlatego tworzenie aplikacji biznesowych wymaga zastosowania najbardziej zaawansowanych koncepcji programistycznych:


połączenia programowania komponentowego
z programowaniem rozproszonym
i separacją warstw

na gruncie technologicznie indyferentnej architektury zorientowanej na serwisy
(SOA - service oriented architecture)


w duchu paradygmatu łatwego ponownego użycia ("resusing").
 



Rozwój koncepcji informatycznych ( wysłuchaj opisu)
                                    A - od monolitycznych programów do separacji warstw
                                    B - od programowania proceduralnego do komponentowego
                                    C - od monolitycznych programów do programowania rozproszonego





2. Architektura N-warstwowa

Architektura N-warstwowa - to podział systemu na logicznie/funkcjonalnie różne części, każda z których może być traktowana jako "czarna skrzynka" - otrzymuje zlecenia od innych i udostępnia innym warstwom pewne usługi.

r   Zalety podziału na warstwy:
  • funkcjonalna separacja,
  • zwiększenie stopnia ponownego użycia (różne warstwy mogą pośrednio udostępniać usługi świadczone przez jakąś inną warstwę),
  • skalowalność (modularna struktura),
  • abstrakcja i hermetyzacja (zmiany implementacyjne w danej warstwie nie wpływają na komunikowanie się z nią przez inne warstwy i klientów)
  Pzykładowe typy warstw:
  • prezentacja
  • wsparcie prezentacji (obsługa różnych interfejsów komunikacyjnych np. GUI, WWW, komórki),
  • logika biznesowa,
  • wsparcie logiki biznesowej (np. dodatkowe przetwarzanie danych)
  • dostęp do danych
Uwaga: w każdej warstwie mogą być wyróżnione podwarstwy.
   


3.  Potrzeba middleware - oprogramowania pośredniczącego


W systemach rozproszonych, opartych na programowaniu komponentowym i architekturze n-warstwowej niezbędne jest oprogramowanie pośredniczące (middleware), które m.in.:
Oczywiście, tworząc duże nowe systemy nie sposób tych wszystkich problemów rozwiązywać od nowa i od nowa, pisać własny middleware (koszt i czas). Od początku lat 70-tych pojawiały się więc różne gotowe rozwiązania - zarówno w postaci specyfikacji standardów jak i  gotowych produktów.


Przykładowy problem:
Rozwiązania:

  1. Można napisać serwer, który będzie pośredniczył między aplikacjami (to jest w pewnym sensie własny middleware). Trzeba biedzie przy tym wymyślić jakiś protokół komunikacji (specyfikacja) i zapewnić aby aplikacje do tej specyfikacji się stosowały. Czy warto? czasem dla specyficznych drobnych problemów - tak. Ale nie jest to ogólne rozwiązanie.
  2. Można skorzystać z gotowego middleware'u, najlepiej takiego, który stanowi otwarty standard.
Wycinkowe spojrzenie na middleware (na bazie przykładowego problemu)


r

Za chwilę zobaczymy jak korzystać z niektórych wymienionych standardów.

Do korzystania z middleware'u potrzebne są serwery (a zatem i odpowiednie protokoły są zdefiniowane). Możemy np. mieć serwer ORB, serwer JMS, serwer JMX, serwer aplikacji web; używać  odpowiednich protokołów (np. transportowych: IIOP czy TCP/IP, wyższego poziomu - RMI itp.)

Zwykle wszystkie te serwery (a także cała wspomniana wcześniej funkcjonalność, dotycząca np. bezpieczeństwa, trwałości, transakcyjności) jest zintegrowana w tzw. serwerach aplikacji.

Przykładowe serwery aplikacji: IBM WebSphere, JBoss, BEA WebLogic, Sun Java Application Server.




4. Architektura N-warstwowa, technologie i serwery aplikacji w J2EE


J2EE jest zestawem protokołów, serwisów i interfejsów programistycznych (API) służących do tworzenia n-warstwowych rozproszonych aplikacji biznesowych w oparciu o paradygmaty programowania komponentowego, łatwego "ponownego użycia" i architektury zorientowanej na serwisy (SOA).

J2EE zapewnia w sposób modularny wszystkie usługi typu "middleware", umożliwiając jednocześnie ich łatwą  implementację i integrowanie w różnych serwerach aplikacji. Serwery aplikacji implementujące serwisy, protokoły i interfejsy J2EE nazywane są ogólnie serwerami J2EE.

Od strony użytkownika J2EE  jest otwartym, przenośnym standardem tworzenia i wdrażania rozproszonych aplikacji biznesowych, zapewniając przy tym łatwe w użyciu środki skalowania aplikacji, obsługi transakcji, zapewniania niezawodności i bezpieczeństwa.




Szybki rzut oka - 3 warstwy.


r
Źródło: SUN

Zwróćmy uwagę:

Inny podział na:
warstwę klienta, zazwyczaj traktowane jaka "Warstwa prezentacji"; jej odseparowanie pozwala zazwyczaj skupić się na prezentacji bez koniecznego wchodzenia w szczegóły logiki biznesowej
warstwę aplikacji WEB, tymi warstwami zarządza
serwer J2EE
warstwę logiki biznesowej, jej odseparowanie pozwala skupić się na rozwiązywaniu
problemów biznesowych
warstwę EIS istniejąca informacyjna infrastruktura firmy - systemy zarządzania bazami danych, ERP (enterprise resource planning), systemy transakcyjne itp.
r
r
źródło: Sun


Architektura J2EE

r
źródło: Sun

Objaśnienia:


Oprócz pokazanych na rysunku elementów aplikacje J2EE wykorzystują wszystko to co jest w standarcie J2SE, w tym następujące technologie:

JNDI -  Java Naming and Directory Interfaces - identyfikacja zasobów na poziomie logicznym.
JAAS (Java Authentication and Authorization Service) - autoryzacja i uwierzytelnianie
JDBC - dostęp do baz danych.

5. Podsumowanie

Zapoznaliśmy się z:



6. Zadania


Zadanie 1

Przeglądnąć w sieci dostępne informacje o serwerach aplikacji: SJAS, WebSphere, JBoss - korzystając ze stron producentów.
Porównać funkcjonalność tych serwerów, ich rozmiary, techniki programowania w ich środowiskach.

Zadanie 2

Odszukać w Internecie wątki dyskusji wokół SOA (Service Oriented Architecture). Na ile to podejście jest już dzisiaj dojrzałe?