Obiect distribuit - Distributed object
În calculul distribuit , obiectele distribuite sunt obiecte (în sensul programării orientate pe obiect ), care sunt distribuite pe spații de adrese diferite , fie în diferite procese pe același computer, fie chiar în mai multe computere conectate printr-o rețea , dar care lucrează împreună prin schimbul de date și invocarea metodelor. Aceasta implică adesea transparența locației , unde obiectele la distanță apar la fel ca obiectele locale. Principala metodă de comunicare a obiectelor distribuite este cu invocarea la o metodă de la distanță , în general prin transmiterea mesajelor: un obiect trimite un mesaj către un alt obiect dintr-o mașină sau un proces la distanță pentru a efectua o anumită sarcină. Rezultatele sunt trimise înapoi la obiectul apelant.
Obiectele distribuite au fost populare la sfârșitul anilor 1990 și la începutul anilor 2000, dar de atunci au scăzut din favoare.
Termenul se poate referi, în general, la una dintre extensiile conceptului de obiect de bază utilizat în contextul calculului distribuit, cum ar fi obiecte replicate sau obiecte distribuite live .
- Obiectele replicate sunt grupuri de componente software ( replici ) care rulează un protocol distribuit în mai multe părți pentru a obține un grad ridicat de coerență între stările lor interne și care răspund la solicitări într-o manieră coordonată. Referirea la grupul de replici în comun ca obiect reflectă faptul că interacțiunea cu oricare dintre ele expune aceeași stare și comportament vizibil extern.
- Obiectele distribuite în direct (sau pur și simplu obiecte vii ) generalizeazăconceptul de obiect replicat la grupuri de replici care ar putea utiliza în interior orice protocol distribuit, ceea ce poate duce la o consistență slabă între statele lor locale. Obiectele distribuite live pot fi definite, de asemenea, ca instanțe de rulare a protocoalelor distribuite în mai multe partide, privite din perspectiva orientată obiect ca entități care au o identitate distinctă și care pot încapsula starea și comportamentul distribuite.
Consultați și suita de protocoale Internet .
Obiecte locale vs. distribuite
Obiectele locale și distribuite diferă în multe privințe. Aici sunt câțiva dintre ei:
- Ciclul de viață: Crearea, migrarea și ștergerea obiectelor distribuite este diferită de obiectele locale
- Referință: Referințele de la distanță la obiectele distribuite sunt mai complexe decât indicatoarele simple către adresele de memorie
- Latency Request: O solicitare de obiect distribuit este de ordinul mărimii mai lent decât invocarea metodei locale
- Activare obiect: Obiectele distribuite pot să nu fie întotdeauna disponibile pentru a răspunde unei solicitări de obiecte în orice moment
- Paralelism: obiectele distribuite pot fi executate în paralel.
- Comunicare: Există diferite primitive de comunicare disponibile pentru solicitările de obiecte distribuite
- Eșec: obiectele distribuite au cu mult mai multe puncte de eșec decât obiectele locale tipice.
- Securitate: distribuția îi face vulnerabili la atac.
Exemple
Facilitățile RPC ale protocolului de serializare multiplă platformă, Cap'n Proto reprezintă un protocol de obiect distribuit. Apelurile la metoda obiectului distribuit pot fi executate (în lanț, într-o singură solicitare de rețea, dacă este nevoie) prin referințe / capabilități de interfață .
Obiectele distribuite sunt implementate în Objective-C folosind API-ul Cocoa cu clasa NSConnection și obiecte de suport.
Obiectele distribuite sunt utilizate în Java RMI .
CORBA vă permite să construiți sisteme distribuite de obiecte mixte.
DCOM este un cadru pentru obiecte distribuite pe platforma Microsoft.
DDObjects este un cadru pentru obiecte distribuite folosind Borland Delphi.
Jt este un cadru pentru componente distribuite care utilizează o paradigmă de mesagerie.
JavaSpaces este o specificație Sun pentru o memorie distribuită, partajată (spațiu)
Pyro este un cadru pentru obiecte distribuite folosind limbajul de programare Python .
Distribuit Ruby (DRb) este un cadru pentru obiecte distribuite folosind limbajul de programare Ruby .