Middleware
Middleware, w systemie Internetu rzeczy (IoT) oznacza oprogramowanie pośredniczące, które umożliwia komunikację pomiędzy składnikami oprogramowania danego systemu, w skład którego wchodzić mogą różne aplikacje, podprogramy i usługi (W. Daszczuk i in. 2021, s. 11). W takim systemie, middleware stanowi "interfejs między czytnikiem a aplikacją użytkową i Internetem" (A. Januszewski 2008, s.357)
Ze względu na specyfikę systemów Internetu rzeczy, pewne elementy oprogramowania tych systemów są powtarzalne, mają podobną strukturę oraz sposób działania niezależnie od przeznaczenia konkretnych urządzeń i ich dziedziny. Jeśli te elementy nie są zależne od systemu operacyjnego i konkretnej aplikacji, mogą one zostać umieszczone w bibliotekach stanowiących część wielu różnych aplikacji. Jeśli te biblioteki są ustandaryzowane i pozwalają na pracę z różnymi systemami operacyjnymi, to stanowią one oprogramowanie pośredniczące, czyli middleware (W. Daszczuk i in. 2021, s. 175-176).
Dzięki wykorzystaniu oprogramowania pośredniczącego, istnieje możliwość połączenia różnorodnych platform sprzętowych, systemów operacyjnych czy też baz danych występujących w przedsiębiorstwie z wykorzystaniem między innymi (A. Januszewski 2008, s. 113-114):
- gateway’ów
- sterowników ODBC
- sterowników ISAM
- translatorów
- konwerterów
- generatorów skryptów.
TL;DR
Middleware w systemie IoT to oprogramowanie pośredniczące, które umożliwia komunikację między składnikami systemu. Dzięki niemu można połączyć różne platformy, systemy operacyjne i bazy danych. Oprogramowanie pośredniczące pełni wiele funkcji, takich jak wykrywanie zasobów, zarządzanie nimi, komponowanie usług, zarządzanie danymi i zdarzeniami oraz zarządzanie kodem. Architektura oprogramowania pośredniczącego powinna spełniać wymagania funkcjonalne i niefunkcjonalne, a istnieje wiele różnych typów oprogramowania pośredniczącego, opartych na różnych paradygmatach programowania.
Funkcje oprogramowania pośredniczącego (middleware)
Funkcje jakie powinno realizować oprogramowanie pośredniczące zależne jest od specyfiki systemów Internetu rzeczy. Wśród tych funkcji wymienić można (W. Daszczuk i in. 2021, s. 176):
- Wykrywanie zasobów - ze względu na dynamikę systemów Internetu rzeczy, funkcja wykrywania zasobów powinna być zautomatyzowana i realizowana za pomocą middleware.
- Zarządzanie zasobami - oprogramowanie pośredniczące powinno być odpowiedzialne za odpowiednie monitorowanie, przydzielanie i udostępnianie wykorzystania zasobów oraz w razie potrzeby, rozwiązywanie konfliktów w dostępie do nich.
- Komponowanie usług - ponowne komponowanie usług powinno być ułatwione dzięki oprogramowaniu pośredniczącemu, które reaguje na żądanie aplikacji lub interweniuje w wyniku wykrycia istotnych zmian konfiguracji środowiska systemowego.
- Zarządzanie danymi - middleware w aplikacjach Internetu rzeczy powinno zapewniać aplikacjom usługi dotyczące zarządzania danymi - ich pozyskiwanie, przetwarzanie (również przetwarzanie wstępne, np. filtrowanie, kompresję i agregację) oraz przechowywanie.
- Zarządzanie zdarzeniami - ze względu na generowanie ogromnej liczby zdarzeń w aplikacjach IoT, middleware odpowiedzialne jest za ustrukturalizowanie zbiorów zdarzeń istotnych dla aplikacji To z kolei pozwala aplikacjom na analizę danych o dużej zmienności w czasie rzeczywistym.
- Zarządzanie kodem - ze względu na trudności związane z alokacją i migracją kodu w sieciach IoT, wdrażanie kodu w środowisku Internetu rzeczy powinno być obsługiwane przez oprogramowanie pośredniczące, aby równoważyć obciążenie węzłów i zmniejszać ruch w sieci.
Wymagania architektury oprogramowania pośredniczącego (middleware)
Z uwagi na konieczność wsparcia programistów aplikacji IoT, istnieją pewne wymagania funkcjonalne dotyczące architektury oprogramowania pośredniczącego. Tymi wymaganiami są między innymi (W. Daszczuk i in. 2021, s. 177):
- Abstrakcja programowania - należy zapewnić istnienie warstwy abstrakcji, to znaczy interfejsu, za pomocą którego użytkownik będzie mógł obsługiwać oprogramowanie pośredniczące.
- Interoperacyjność - możliwość współpracy middleware z wieloma różnymi aplikacjami, urządzeniami i technologiami powinna odbywać się z wykorzystaniem różnorodnych technologii komunikacyjnych, bez konieczności wykonywania dodatkowej pracy przez twórców usług czy też aplikacji IoT.
- Usługi - to wymaganie oznacza konieczność oparcia architektury middleware na usługach. Zapewnia to elastyczność w przypadku wprowadzania nowych, zaawansowanych funkcji systemu.
- Adaptacja - oprogramowanie pośredniczące powinno posiadać zdolność do szybkiej ewolucji i adaptacji do zmian zachodzących w otoczeniu lub tworzeniu aplikacji.
- Autonomia - za pomocą middleware aplikacje, technologie i urządzenia, które są elementami sieci IoT mogą się między sobą komunikować bez konieczności udziału człowieka, a więc są autonomicznymi elementami tej sieci.
Architektura oprogramowania pośredniczącego powinna spełniać także inne wymagania niefunkcjonalne, m.in. skalowalność, obsługę zdarzeń i danych w czasie rzeczywistym, niezawodność, wysoką dostępność, bezpieczeństwo i ochronę prywatności danych (W. Daszczuk i in. 2021, s. 177).
Typy oprogramowania pośredniczącego (middleware)
Każde oprogramowanie pośredniczące oparte jest na określonym paradygmacie programowania, który określa zespół cech charakteryzujących działanie tego oprogramowania.
Dzięki wykorzystaniu tych paradygmatów istnieje możliwość ujednolicenia dostępu do różnych elementów sieci IoT, co znacznie skracai ułatwia tworzenie aplikacji działających w Internecie rzeczy. Mając na uwadze różne paradygmaty programowania, można wyróżnić następujące typy oprogramowania pośredniczącego (W. Daszczuk i in. 2021, s. 178-181):
- Oprogramowanie pośredniczące zorientowane na zdarzenia (Event-Oriented Middleware - EOM)
- Oprogramowanie pośredniczące zorientowane na wiadomości (Message-Oriented Middleware - MOM)
- Oprogramowanie pośredniczące zorientowane na usługi (Service Oriented Middleware - SOM)
- Oprogramowanie pośredniczące oparte na wirtualizacji (Virtual Machine-based Middleware - VMM)
- Oprogramowanie pośredniczące oparte na agentach (Agent-based Middleware)
- Oprogramowanie pośredniczące oparte na przestrzeni kortek (Tuple-Space Middleware)
- Oprogramowanie pośredniczące zorientowane na bazę danych (Database-Oriented Middleware)
- Oprogramowanie pośredniczące specyficzne dla aplikacji (Application-Specific Middleware)
Middleware — artykuły polecane |
System operacyjny — Program komputerowy — SQL — Komputer stacjonarny — Mikroserwisy — Portal korporacyjny — Aktualizacja oprogramowania — Python — Chmura obliczeniowa — Inwencja twórcza |
Bibliografia
- Bandyopadhyay S. (red.) (2011), Role of Middleware for Internet of Things: A Study, International Journal of Computer Science & Engineering Survey (IJCSES), nr 3
- Daszczuk W. (red.) (2021), Inżynieria systemów internetu rzeczy. Sprzęt i oprogramowanie, Oficyna Wydawnicza Politechniki Warszawskiej
- Dotson C. (2021), Bezpieczeństwo w chmurze. Zasady i pojęcia, Napędy i Sterowanie, nr 4
- Fremantle P., Scott P. (2017), A survey of secure middleware for the Internet of Things, PeerJ Computer Science
- Januszewski A. (2008), Funkcjonalność informatycznych systemów zarządzania, Wydawnictwo Naukowe PWN, Warszawa
- Januszewski A. (2008), Funkcjonalność informatycznych systemów zarządzania, Wydawnictwo Naukowe PWN, Warszawa
Autor: Justyna Prus