Tworzenie aplikacji rozproszonej w Sun RPC

Podobne dokumenty
RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

76.Struktura oprogramowania rozproszonego.

Oprogramowanie systemów równoległych i rozproszonych. Wykład 6

Sun RPC/XDR. Dariusz Wawrzyniak 1

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

Sun RPC/XDR 10. listopada Dariusz Wawrzyniak (IIPP) 1

external Data Representation

RPC Remote Procedural Call. Materiały do prezentacji można znaleźć na stronie:

Programowanie współbieżne i rozproszone

Architektura typu klient - serwer. Oprogramowanie systemów równoległych i rozproszonych. Wykład 6. Cechy architektury klient - serwer

Wywoływanie procedur zdalnych

Wywoływanie procedur zdalnych

Wywoływanie procedur zdalnych

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

Programowanie z użyciem RPC

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC

Wywoływanie metod zdalnych

Zdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1

Zdalne wywoływanie procedur RPC 27. października 2010

Klient-Serwer Komunikacja przy pomocy gniazd

Wywoływanie metod zdalnych

Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne

external Data Representation

NFS jest protokołem zdalnego wywoływania procedur (RPC)

Aplikacje RMI

Programowanie rozproszone w języku Java

Programowanie współbieżne i rozproszone

RPC ZDALNE WYWOŁYWANIE PROCEDUR (ang. Remote Procedure Calls)

Rozproszone systemy internetowe. Wprowadzenie. Koncepcja zdalnego wywołania procedury

Wprowadzenie do programowania rozproszonego

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Wartości domyślne, przeciażenia funkcji

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Komunikacja i wymiana danych

Wartości domyślne, przeciażenia funkcji

Systemy Rozproszone Technologia ICE

Obiekty w plikach wykonywalnych, marshaling

Tunelowanie, kapsułkowanie, XDR. 1. Transmisja tunelowa i kapsułkowanie serwery proxy. 2. Zewnętrzna reprezentacja danych XDR.

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Funkcja (podprogram) void

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Instrukcja dla instalatora systemu SMDP Enterprise/Professional

Sieciowa komunikacja procesów - XDR i RPC

Wstęp do Programowania, laboratorium 02

Architektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1

Komunikator internetowy w C#

Remote Method Invocation 17 listopada 2010

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Podejście obiektowe do budowy systemów rozproszonych

RMI-2. Java Remote Method Invocation (RMI) na podstawie m.in. podręcznika firmy Sun Microsystems SYSTEMY ROZPROSZONE

Wprowadzenie. Dariusz Wawrzyniak 1

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Zmienne, stałe i operatory

Wykład 4: Protokoły TCP/UDP i usługi sieciowe. A. Kisiel,Protokoły TCP/UDP i usługi sieciowe

Prezentacja systemu plików NFS

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

1 Podstawy c++ w pigułce.

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Język C, tablice i funkcje (laboratorium)

Język C, tablice i funkcje (laboratorium, EE1-DI)

AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Elektroniki i Informatyki

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Programowanie obiektowe

Poziomy wymagań Konieczny K Podstawowy- P Rozszerzający- R Dopełniający- D Uczeń: - zna rodzaje sieci - zna topologie sieciowe sieci

Michał Jankowski. Remoting w.net 2.0

Laboratorium podstaw telekomunikacji

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Poradnik korzystania z usługi FTP

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Laboratorium Programowania Kart Elektronicznych

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Oprogramowanie komunikacyjne dla Internetu rzeczy Laboratorium nr 4 komunikacja unicastowa IPv6

TCP - receive buffer (queue), send buffer (queue)

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Aplikacja Sieciowa wątki po stronie klienta

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Język ludzki kod maszynowy

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Specyfikacja API Runtime BAS 3.0

Programowanie zespołowe

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Ada95 przetwarzanie rozproszone

Transkrypt:

Tworzenie aplikacji rozproszonej w Sun RPC Budowa aplikacji realizowana jest w następujących krokach: Tworzenie interfejsu serwera w języku opisu interfejsu RPCGEN Tworzenie: namiastki serwera namiastki klienta pliku nagłówkowego pliku konwersji Implementacja usług serwerowych Implementacja aplikacji klienta

Działanie aplikacji opartej na Sun RPC Aplikacja serwera Otrzymanie identyfikatora transportu (transport handle) Zarejestrowanie usługi u demona portmap / rpcbind Oczekiwanie na zgłoszenia klienta i wykonywanie jego zlecen Aplikacja klienta Otrzymanie identyfikatora klienta (client handle) Wywoływanie odległych procedur Likwidacja identyfikatora klienta gdy nie jest potrzebny

Język opisu interfejsu RPCGEN RPCGEN jest jezykiem definiowania interfejsu i prekompilatorem. Na podstawie definicji interfejsu RPCGEN tworzy naste pujace pliki w je zyku C: Namiastka klienta (client stub) Namiastka serwera (server stub) Plik konwersji danych Plik nagłowkowy Opcjonalnie szkielet aplikacji serwera Opcjonalnie szkielet aplikacji klienta

Język opisu interfejsu RPCGEN Je zyk RPCGEN akceptuje naste pujace typy danych: Typ pusty void Znak char Typ całkowity int, short int, long int (unsigned) Typ zmiennoprzecinkowy float, double Tablice o stałej długosci typ nazwa [zakres] Tablice o zmiennej długosci typ nazwa <zakres> Łancuch string <zakres> Struktura struct {...} Typ złozony typedef nazwa definicja

Język opisu interfejsu RPCGEN Przekazywanie argumentow: Wywołanie odległej procedury dopuszcza tylko jeden argument wywołania i zwraca jeden wynik Gdy wyste puje wie cej elementow to nalezy umiescic je w strukturach W programach klienta i serwera argumentem lub wynikiem jest wtedy wskaznik na strukturee

Generowanie aplikacji RPC Domyślne rpcgen plik.x Kod serwera Kod klienta Definicja interfejsu w języku RPCGEN RPCGEN Stopka serwera Filtry XDR Plik nagłówkowy Kompilacja Aplikacja serwera Aplikacja klienta Stopka klienta

Generowanie aplikacji RPC Rozszerzone rpcgen -a -C plik.x Definicja interfejsu w języku RPCGEN RPCGEN Szkielet serwera Stopka serwera Filtry XDR Plik nagłówkowy Kompilacja Aplikacja serwera Aplikacja klienta Stopka klienta Szkielet klienta

Komunikacja klient-serwer Komunikacja może odbywać się z wykorzystaniem protokołu TCP lub UDP Adresowanie w RPC: Nazwa (adres IP) komputera na ktorym uruchomiony jest serwer Numer programu Numer wersji Numer procedury RPC wymaga działania tzw. portmappera portmap / rpcbind Portmapper jest serwerem nazewniczym, ktory zamienia numery programu RPC na numery portow protokołu TCP albo UDP

Komunikacja klient-serwer Procedury zdalne na danym komputerze identyfikowane są za pomocą trzech liczb: numer programu numer wersji programu numer procedury Numer programu i wersji identyfikuje procesy serwerowe Numery procedur identyfikuja procedury w serwerze

Komunikacja klient-serwer Numery programów (HEX) 00000000 1FFFFFFF Sun 20000000 3FFFFFFF Administrator lokalny 40000000 5FFFFFFF Programista 60000000 FFFFFFFF Zastrzezone

Komunikacja klient-serwer Serwer po uruchomieniu informuje portmapper na ktorych portach nasłuchuje, i jakimi numerami programowymi RPC dysponuje Klient odwołując się do danego numeru programu, najpierw komunikuje się z portmapperem na maszynie serwera w celu określenia numeru portu do którego należy wysłać pakiet RPC Informacje o numerach portów można uzyskać za pomocą rpcinfo $ rpcinfo -p localhost program vers proto 100000 4 udp 100000 4 tcp 587202561 1 udp 587202561 1 tcp 588321041 1 udp 588321041 1 tcp port 111 111 56013 51408 59268 51412 portmapper portmapper

Budowa aplikacji RPC Maszyna B Aplikacja serwera Program Procedura 1 Procedura 2 Procedura 3 Wywołanie Maszyna A Aplikacja klienta Lokalizacja Rejestracja Portmapper

Przykład 1 - Mnożenie 2 liczb całkowitych Argumenty int a int b Wynik int c Funkcja Multiply

Przykład 1 - Mnożenie 2 liczb całkowitych Zawartość pliku mul.x /*--------------------------------------------------*/ struct operands { int a; int b; }; /*--------------------------------------------------*/ program MUL_PROG { version MUL_VERS { int Multiply(operands) = 1; } = 1; } = 0x20000001; /*--------------------------------------------------*/

Przykład 1 - Mnożenie 2 liczb całkowitych Kompilacja rpcgen -a -C mul.x

Przykład 1 - Mnożenie 2 liczb całkowitych Klient Serwer

Przykład 1 - Mnożenie 2 liczb całkowitych Plik mul_server.c

Przykład 1 - Mnożenie 2 liczb całkowitych Plik mul_client.c

Przykład 1 - Mnożenie 2 liczb całkowitych Modyfikacja pliku mul_server.c

Przykład 1 - Mnożenie 2 liczb całkowitych Modyfikacja pliku mul_client.c

Przykład 2 - Operacje tekstowe Argumenty char Buffer[100] int Size Wyniki char Buffer[100] int Size Funkcje UpperCase LowerCase

Przykład 2 - Operacje tekstowe Zawartość pliku text.x /*--------------------------------------------------*/ struct Data { char Buffer[100]; int Size; }; /*--------------------------------------------------*/ program TEXT_PROG { version TEXT_VERS { Data UpperCase(Data) = 1; Data LowerCase(Data) = 2; } = 1; } = 0x23000001; /*--------------------------------------------------*/

Przykład 2 - Operacje tekstowe Kompilacja rpcgen -a -C text.x

Przykład 2 - Operacje tekstowe Klient Serwer

Przykład 2 - Operacje tekstowe Modyfikacja pliku text_server.c

Przykład 2 - Operacje tekstowe Modyfikacja pliku text_client.c

Przykład 2 - Operacje tekstowe Modyfikacja pliku text_client.c - c.d.

Przykład 3 - Aplikacja GUI Argumenty char Buffer[100] int Size Wyniki char Buffer[100] int Size Funkcje UpperCase LowerCase

Przykład 3 - Aplikacja GUI

Przykład 3 - Aplikacja GUI Modyfikacja pliku mainwindow.h

Przykład 3 - Aplikacja GUI Modyfikacja pliku mainwindow.cpp

Przykład 3 - Aplikacja GUI Modyfikacja pliku mainwindow.cpp

Przykład 3 - Aplikacja GUI Modyfikacja pliku mainwindow.cpp c.d.

Przykład 3 - Aplikacja GUI Działająca aplikacja