Distribueret objektkommunikation - Distributed object communication
I et distribueret computing miljø, distribueret objekt kommunikation realiserer kommunikation mellem distribuerede objekter . Hovedrollen er at give objekter adgang til data og påberåbe sig metoder på eksterne objekter (objekter, der befinder sig i ikke-lokalt hukommelsesrum ). Påkald af en metode på et fjernobjekt er kendt som fjernmetodeopkald ( RMI ) eller fjernopkald og er den objektorienterede programmeringsanalog af et RPC (Remote Procedure Call ).
Klassestubbe og skeletter
Den udbredte tilgang til, hvordan kommunikationskanalen implementeres, realiseres ved hjælp af stubbe og skeletter . De er genererede objekter, hvis struktur og adfærd afhænger af den valgte kommunikationsprotokol, men generelt giver yderligere funktionalitet, der sikrer pålidelig kommunikation over netværket.
I RMI defineres en stub (som er biten på klienten) af programmøren som en grænseflade . Rmic (rmi compiler) bruger dette til at oprette klassestubben. Stubben udfører typekontrol. Skelettet er defineret i en klasse, der implementerer interface-stubben.
Når en opkalder ønsker at foretage fjernopkald på det kaldte objekt, delegerer den anmodninger til sin stub, som initierer kommunikation med fjernskelettet . Derfor overfører stuben opkaldsargumenter over netværket til serverens skelet. Skelettet sender derefter modtagne data til det kaldte objekt, venter på et svar og returnerer resultatet til klientstubben. Bemærk, at der ikke er nogen direkte kommunikation mellem den, der ringer op og det kaldte objekt.
Flere detaljer består kommunikationen i flere trin:
- opkalderen kalder en lokal procedure implementeret af stubben
- stub marshalls opkaldstype og inputargumenterne i en anmodningsmeddelelse
- klient stub sender beskeden over netværket til serveren og blokerer den aktuelle udførelse tråd
- serverskelet modtager anmodningsmeddelelsen fra netværket
- skelet udpakker opkaldstype fra anmodningsmeddelelsen og ser proceduren på det kaldte objekt
- skelet unmarshalls procedure argumenter
- skelet udfører proceduren på det kaldte objekt
- kaldet objekt udfører en beregning og returnerer resultatet
- skelet pakker outputargumenterne i en svarmeddelelse
- skelet sender beskeden over netværket tilbage til klienten
- klientstub modtager svarmeddelelsen fra netværket
- stub udpakker outputargumenter fra meddelelsen
- stub passerer output argumenter til kalderen, frigiver udførelse tråd og opkalds fortsætter derefter i udførelsen
Fordelen ved denne arkitektur er, at hverken den, der ringer eller det kaldte objekt, skal implementere netværksrelateret logik. Denne funktionalitet, der sikrer pålidelig kommunikationskanal over netværket, er flyttet til stubben og skeletlaget .
Stub
Objektet på klientsiden, der deltager i distribueret objektkommunikation, er kendt som en stub eller proxy og er et eksempel på et proxyobjekt .
Stubben fungerer som en gateway for klientsideobjekter og alle udgående anmodninger til serversideobjekter, der dirigeres gennem den. Stuben ombryder klientobjektfunktionalitet og ved at tilføje netværkslogikken sikrer den pålidelige kommunikationskanal mellem klient og server. Stubben kan skrives op manuelt eller genereres automatisk afhængigt af den valgte kommunikationsprotokol.
Stubben er ansvarlig for:
- igangsættelse af kommunikationen mod serverens skelet
- oversætte opkald fra den, der ringer op
- samordning af parametrene
- underretter skelettet om , at opkaldet skal påberåbes
- videregive argumenter til skeletet over netværket
- unmarshalling af svaret fra skeletet
- informere den, der ringer op, at opkaldet er afsluttet
Skelet
Serversideobjektet, der deltager i distribueret objektkommunikation, er kendt som et skelet (eller stub; term undgås her).
Et skelet fungerer som gateway for serversideobjekter, og alle indgående klientforespørgsler dirigeres gennem det. Skelettet indpakker serverobjektfunktionaliteten og udsætter den for klienterne, og ved at tilføje netværkslogikken sikrer den pålidelige kommunikationskanal mellem klienter og server. Skeletter kan skrives op manuelt eller genereres automatisk afhængigt af den valgte kommunikationsprotokol.
Skelettet er ansvarligt for:
- oversætte indgående data fra stuben til de korrekte opkald til serverobjekter
- opbevaring af argumenter fra modtagne data
- videregivelse af argumenter til serverobjekter
- samordning af de returnerede værdier fra serverobjekter
- passerer værdier tilbage til klienten stub over netværket
Protokoller ved hjælp af stub / skelet tilgang
- Bærbare distribuerede objekter (PDO) - Objective-C
- Common Object Request Broker Architecture (CORBA) - inter-sprog
- Java Remote Method Invocation (Java RMI) - Java
-
Distribueret komponentobjektmodel (DCOM) - Microsoft, inter-sprog
- (bemærk at stubben kaldes "proxy" og skelettet kaldes "stub")
- .NET Remoting - Microsoft, inter-sprog
- DDObjects - Borland Delphi
- Distribueret rubin (DRb) - Rubin
Se også
Referencer
- Plášil, František og Stal, Michael. "En arkitektonisk opfattelse af distribuerede objekter og komponenter i CORBA, Java RMI og COM / DCOM" , softwarekoncepter og værktøjer (bind 19, nr. 1) , januar 1998.
- Druschel, Peter "Distribueret programkonstruktion"
- Farley, Jim. Java Distributed Computing , O'Reilly, januar 1998.
- Research Papers , Distributed Systems Research Group, Charles University Prague
