Zdalne wywoływanie procedur

Transkrypt

Zdalne wywoływanie procedur
Miejsce RPC w modelu sieciowym
Warstwy 5÷7
X11
NFS
RFS
NCS
RPC
XDR
Zdalne wywoływanie
Interfejs gniazdek lub TLI
procedur
TCP
UDP
Internet Protocol (IP)
sieć lokalna
XDR i RPC
Zbigniew Suski
1
XDR
sieć rozległa
Zbigniew Suski
Warstwa 4
Warstwa 3
Warstwy 1 i 2
XDR i RPC
2
XDR - tworzenie potoków
Potok w standardowym wejściu-wyjściu
proces
nadawcy
void xdrstdio_create ( . . . . . )
proces
odbiorcy
Potok w pamięci
kodowanie
kodowany
potok XDR
dekodowanie
void xdrmem_create ( . . . . . )
dekodowany
potok XDR
Potok komunikatów
void xdrrec_create ( . . . . . )
pamięć, plik lub sieć
Zbigniew Suski
XDR i RPC
3
Zbigniew Suski
XDR i RPC
4
1
XDR - filtry
XDR - zarządzanie pamięcią
Filtry proste
void xdr_free (xdrproc_t filtr_XDR, char
main ( )
{
FILE *plik;
XDR id_potoku;
char bufor;
bool_t xdr_type ( XDR *id_potoku,
type *obiekt )
type ∈ { char, int, long, float, double, void }
Filtry złożone
plik = fopen ( XDRFILE, "r" );
xdrstdio_create ( &id_potoku, plik, XDR_DECODE);
bufor = NULL;
xdr_string ( &id_potoku, &bufor, MAXL );
bool_t xdr_type ( XDR *id_potoku,
type *obiekt, . . . )
type ∈ { string, opaque, bytes, vector, array,
union, reference, pointer }
/*
XDR i RPC
przetwarzanie pobranego łańcucha */
xdr_free ( xdr_string, &bufor );
close ( plik );
exit ( 0 );
Filtry pochodne
Tworzone przez programistów jako kombinacje filtrów
istniejących. W praktyce wykorzystuje się RPCGEN.
Zbigniew Suski
*adres_obiektu )
}
5
UNIX – Sun RPC
XDR i RPC
Zbigniew Suski
6
Wywołanie lokalne i zdalne
APLIKACJA
wywołanie
parametry
powrót
Przykład:
procedura lokalna
wyniki
plik XDR-przyklady
procedura odległa
APLIKACJA
wywołanie
powrót
Zbigniew Suski
XDR i RPC
7
Zbigniew Suski
parametry
wyniki
XDR i RPC
8
2
RPC - nawiązywanie połączenia
RPC – budowa klienta i serwera
4
program
klient
program
serwer
procedury
aplikacji
klienta
procedury
aplikacji
serwera
łącznik klienta
(client stub)
łącznik serwera
(server stub)
funkcje
sieciowe
funkcje
sieciowe
2
1
3
1 - rejestracja serwera
2 - żądanie numeru portu serwera
3 - odesłanie numeru portu
4 - wysłanie właściwego żądania
portmapper
XDR i RPC
Zbigniew Suski
9
RPCGEN
abc.x
abc.x
utworzone przez PRCGEN
na podstawie abc.x
RPCGEN
abc.h
abc_clnt.c
pliki aplikacji klienta
abc_clnt.c
abc_xdr.c
abc_client.c
pliki aplikacji serwera
abc_svc.c
abc_xdr.c
abc_server.c
Zbigniew Suski
10
RPCGEN - kompletowanie aplikacji klienta
plik nagłówkowy
abc.h
definicja
definicja
interfejsu
interfejsu
wwjęzyku
języku
RPCGEN
RPCGEN
XDR i RPC
Zbigniew Suski
XDR i RPC
11
abc_xdr.c
program
program
klienta
klienta
napisane przez programistę
abc_client.c
inne pliki
Zbigniew Suski
XDR i RPC
12
3
RPCGEN - kompletowanie aplikacji serwera
UNIX – Sun RPC
utworzone przez PRCGEN
na podstawie abc.x
abc.h
Przykład:
abc_svc.c
abc_xdr.c
plik RPC-przyklady
program
program
serwera
serwera
napisane przez programistę
abc_server.c
Zbigniew Suski
XDR i RPC
13
Zbigniew Suski
XDR i RPC
14
RPC – Linux (można prościej)
registerrpc ( numer_programu, wersja,
numer_procedury, nazwa_procedury,
filtr_wejściowy, filtr_wyjściowy)
callrpc ( serwer, numer_programu, wersja,
numer_procedury,
filtr_wejściowy, dane_wejściowe,
filtr_wyjściowy , dane_wyjściowe)
Zbigniew Suski
XDR i RPC
15
4

Podobne dokumenty