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