Przegląd architektury RMI

W architekturze aplikacji rozproszonych zawsze istnieje potrzeba komunikacji między dwiema różnymi aplikacjami. W aplikacjach opartych na Javie jedna aplikacja komunikuje się z inną aplikacją zdalną / inną, działającą gdzie indziej, za pomocą mechanizmu zwanego architekturą RMI.

RMI oznacza Remote Method Invocation. Jest to interfejs API zapewniany przez java, który umożliwia obiektowi znajdującemu się w jednej maszynie wirtualnej Java (Java Virtual Machine) dostęp do obiektu uruchomionego na innej maszynie JVM lub wywołanie go. Druga maszyna JVM może znajdować się na tym samym komputerze lub komputerze zdalnym. Jest to interesująca funkcja, ponieważ w aplikacjach w czasie rzeczywistym aplikacje Java mogą bardzo łatwo komunikować się ze sobą bez żadnego zewnętrznego mechanizmu komunikacji. Ponadto zawsze istnieje potrzeba bezpiecznej komunikacji między aplikacjami opartej na architekturze aplikacji rozproszonych.

Projekt RMI

Zanim przejdziemy do szczegółowej architektury, zrozumiemy podstawowy projekt architektury RMI.

  • Interfejs API RMI znajduje się w pakiecie java.rmi. Wprowadźmy dwa terminy na zrozumienie architektury projektowania RMI. Pierwszy to klient; JVM, która wywoła zdalny obiekt, a drugim jest serwer; JVM, która zawiera obiekt zdalny. Tak więc klient wywoła serwer, w tym przypadku na obiekcie w celu wywołania metody.
  • Serwer zwróci następnie odwołanie do obiektu do klienta. Złap tutaj to zarówno obiekty, tj. Lokalny i zdalny, pojawią się jako lokalny obiekt na serwerze. Nie będzie różnic między nimi. Składnia metod obu obiektów jest również taka sama. Dlatego JVM serwera działa jak normalna JVM, nie wiedząc o żadnym obiekcie, czy to lokalnym, czy zdalnym.
  • Ten sam obiekt może być zarówno serwerem, jak i klientem. Uzyskano odniesienie do obiektów zdalnych i jest ono używane tak, jakby był obiektem lokalnym. Infrastruktura RMI odpowiada za znalezienie zdalnego obiektu, przechwycenie wywołania metody i zdalne przetworzenie zdalnego żądania. Klient wywołuje metody na obiekcie dopiero po uzyskaniu odwołania do obiektu zdalnego.

Architektura RMI

Poniżej znajduje się schemat architektury RMI w prosty sposób. W Internecie znajdziesz różne formy tej samej architektury, ale mamy prostą, która pomoże to lepiej wyjaśnić.

Zacznijmy od połączenia kropek z perspektywy projektowania ze schematem architektury.

Aplikacja klienta i aplikacja serwera są odpowiednimi maszynami JVM maszyny klienta i maszyny serwera. W aplikacji RMI piszemy odpowiednio dwa programy; program kliencki znajdujący się na kliencie i program serwerowy znajdujący się na maszynie serwerowej.

Warstwa aplikacji:

Ta warstwa to rzeczywiste systemy, tj. Klient i serwer, które są zaangażowane w komunikację. Program Java po stronie klienta komunikuje się z programem Java po stronie serwera.

Kikut:

Od wprowadzenia do projektu mamy obiekty klienta; W architekturze RMI jest znany jako Stub. Jest to obiekt znajdujący się na komputerze klienckim i działa jako serwer proxy dla obiektu zdalnego. To jest jak brama do programu klienckiego.

Kod pośredniczący ma takie same metody jak obiekt zdalny. Gdy klient wywołuje obiekt pośredniczący, kod pośredniczący przekazuje to żądanie do obiektu zdalnego (szkielet) za pośrednictwem infrastruktury RMI, która jest następnie wykonywana na serwerze.

Stub Wykonuje następujące wydarzenia: -

  1. Inicjuje połączenie ze zdalną maszyną JVM,
  2. Zapisuje i przesyła parametry (Marshals) do zdalnego JVM,
  3. Czeka na wynik,
  4. Odczytuje (Unmarshalls) zwrócony wynik,
  5. Przekaż otrzymany wynik dzwoniącemu.

Szkielet:

Obiekt serwera, który znajduje się w maszynie serwera, jest znany jako Szkielet. Stub komunikuje się z aplikacją serwera za pomocą pośredniego obiektu szkieletu.

Zadaniem szkieletu jest przesłanie parametrów do implementacji metody i odesłanie wartości zwrotnych z powrotem do klienta.

Szkielet Wykonuje następujące wydarzenia: -

  1. Odczytuje parametr przekazany przez klienta,
  2. Wywołuje metodę na rzeczywistym obiekcie zdalnym,
  3. Prześlij / przekaż wynik dzwoniącemu.

Warstwa szkieletu / szkieletu:

  • Warstwa Stub / Skeleton jest odpowiedzialna za przechwytywanie wywołań wykonywanych przez klienta i przekierowywanie tych wywołań do obiektu zdalnego. Ta warstwa jest również nazywana warstwą proxy. Stub i Skeleton są serwerami proxy dla klienta i serwera. Obiekty Stub i Skeleton są jak interfejs między aplikacją a resztą systemu RMI.
  • Celem tej warstwy jest przesyłanie danych do zdalnej warstwy referencyjnej poprzez szeregowanie obiektów. Ten proces przekształcania danych / obiektów w strumień bajtów jest znany jako Marshalling, a odwrotna nazwa to Unmarshalling. Marshaling jest przeprowadzany podczas żądania obiektu od serwera, a Unmarshalling jest wykonywany, gdy dane / obiekt referencji są odbierane z serwera.

Warstwa zdalnego odniesienia:

  • Warstwa proxy jest połączona z mechanizmem RMI za pośrednictwem Remote Reference Layer. Ta warstwa odpowiada za komunikację i przesyłanie obiektów między klientem a serwerem. Ta semantyka wywołania połączenia RMI jest zdefiniowana i obsługiwana przez tę warstwę.
  • Warstwa zdalnego odniesienia jest odpowiedzialna za utrzymanie sesji podczas wywołania metody. tzn. zarządza odniesieniami dokonanymi przez klienta do obiektu zdalnego serwera. Ta warstwa jest również odpowiedzialna za obsługę zduplikowanych obiektów.

Warstwa transportowa:

Warstwa transportowa odpowiada za ustanowienie komunikacji między dwiema maszynami. Ta warstwa używa standardowego protokołu TCP / IP do połączenia. Rzeczywisty transport danych odbywa się przez tę warstwę. Ta warstwa jest częścią Remote Reference Layer.

Wniosek

  • Zdalne wywołanie metody (RMI) jest bardzo przydatnym API udostępnianym w JAVA, który pomaga w komunikacji między dwoma różnymi JVM. Pozwala obiektowi wywołać metodę na obiekcie znajdującym się w innej przestrzeni adresowej.
  • Zapewnia bezpieczny sposób komunikacji między aplikacjami. Osiąga tę funkcjonalność za pomocą pojęć Stub (obiekt wywołujący klienta) i Skeleton (obiekt zdalny rezydujący na serwerze).
  • RMI służy do budowania aplikacji rozproszonych. Zachowuje rodzaj bezpieczeństwa. Architektura RMI minimalizuje złożoność aplikacji w architekturze rozproszonej.

Polecane artykuły

To był przewodnik po architekturze RMI. Tutaj omawiamy szczegółowo projekt RMI i architekturę z odpowiednim schematem blokowym. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -

  1. Architektura hurtowni danych
  2. Co to jest protokół TCP?
  3. Co to jest oprogramowanie komputerowe?
  4. Pytania do wywiadu CCNA