.NET Remoting

Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 7 ianuarie 2018; verificările necesită 8 modificări .

.NET Remoting este o componentă creată de Microsoft . API pentru comunicarea între procese . Implementarea de către Microsoft a protocolului SOAP ( servicii web ). Lansat în 2002 cu versiunea 1.0 a .NET Framework . Este una dintr-o serie de tehnologii de la Microsoft care a început în 1990 cu prima versiune de OLE pentru Windows pe 16 biți . Etapele intermediare în dezvoltarea unor astfel de tehnologii au fost COM , lansat în 1993 și finalizat în 1995 sub denumirea COM-95, DCOM, lansat în 1997 (și redenumit ActiveX) și COM+ cu Microsoft Transaction Server (MTS), lansat în 2000 [1] . În prezent, .NET Remoting a fost înlocuit cu WCF , care face parte din .NET Framework 3.0 .

La fel ca toți membrii acestei familii și tehnologii similare, cum ar fi CORBA și RMI , caracteristica .NET Remoting este următoarea: cu suportul infrastructurii .NET Remoting, procesul client trimite un mesaj procesului server și primește un răspuns [2] [3] .

Prezentare generală

.NET Remoting permite unei aplicații să creeze un obiect (numit obiect la distanță ) disponibil în limitele de la distanță și situat în domeniul aplicației în cadrul unui proces, într-un alt proces care rulează pe acel computer sau chiar pe un alt computer conectat printr-o rețea [4] ] . Procesul .NET Remoting conține un ascultător de solicitare pentru un obiect din domeniul aplicației server . Pe partea clientului, orice solicitare către un obiect la distanță este direcționată de .NET Remoting runtime prin obiecte Channelcare sunt învelișuri pentru facilitățile stratului de transport, cum ar fi fluxurile TCP , fluxurile HTTP și conductele numite . Ca urmare, cererile către obiecte la distanță pentru codul client nu sunt diferite de apelurile locale și, prin crearea unei instanțe a obiectului dorit Channel, o aplicație .NET Remoting poate fi transferată la un alt protocol de comunicare fără recompilare. Runtime-ul însuși efectuează pașii de serializare și marshaling a obiectelor din mediul dintre domeniile de aplicație client și server [4] .

.NET Remoting pune la dispoziție referința la obiectul de la distanță (remotabil) aplicației client, care apoi înaintează cereri către instanța obiectului de la distanță ca și cum ar fi un obiect local [4] . Cu toate acestea, execuția efectivă a codului are loc pe partea de server. Obiectul de la distanță are identificatori sub forma unui URL de activare . În funcție de configurația procesului server, o instanță a obiectului la distanță este creată la conectarea folosind datele URL [5] în momentul creării unei legături către obiectul la distanță sau în momentul primului acces la obiectul la distanță. Un ascultător pentru un obiect este creat de .NET Remoting runtime atunci când serverul înregistrează un canal care va fi folosit pentru a se conecta la obiectul de la distanță. Pe partea clientului, cadrul .NET Remoting creează un obiect substituent ( proxy), care este o pseudoinstanță a obiectului înlocuit. Nu implementează funcționalitatea unui obiect la distanță, dar oferă o interfață similară, redirecționând toate cererile către obiectul server și returnând rezultatele de la acesta către client. În consecință, cadrul .NET Remoting trebuie să aibă metadate care să descrie interfața publică a obiectului la distanță pentru a crea un proxy. Acest lucru se poate face prin conectarea statică la ansamblul care conține metadatele în timpul compilării sau prin preluarea dinamică a metadatelor sub formă de WSDL sau un format proprietar dezvoltat de Microsoft.

În timpul execuției interogării, orice apeluri de metodă direcționate către obiect, inclusiv identificatorul de metodă și orice parametri trecuți, sunt serializate într-un flux de octeți și transmise printr-un canal de comunicație specific protocolului către obiectul proxy de recepție de pe partea serverului (" marshaled "). . Transferul are loc prin scrierea datelor la intrarea de transport a canalului [5] . Pe partea de server, proxy-ul citește fluxul de date de la ieșirea conductei și efectuează un apel de bean la distanță în numele clientului. Rezultatele sunt serializate și trecute printr-o conductă către client, unde proxy-ul citește rezultatul și îl transmite aplicației care apelează [5] .

Dacă un obiect la distanță trebuie să ofere un apel invers unui obiect client, obiectul client callback trebuie să fie marcat la distanță și infrastructura .NET Remoting trebuie configurată pentru a crea un ascultător pentru acesta [5] . Serverul se poate conecta la acesta printr-un alt canal sau printr-unul existent, dacă conexiunea pe care se bazează suportă comunicarea bidirecțională [5] . Un canal poate fi compus din mai multe obiecte canal, poate chiar cu mecanisme de transport diferite. Astfel, un sistem bazat pe .NET Remoting poate consta din mai multe subsisteme conectate prin rețele eterogene conectate între ele, inclusiv internetul [5]

Note

  1. Cornella-Dorda, Santiago. Model de obiecte componente și  capabilități aferente . Carnegie-Mellon Software Engineering Institute (13 martie 2001). Arhivat din original pe 15 mai 2008.
  2. Scott McLean, James Naftel și Kim Williams. Microsoft .NET Remoting  . —Microsoft Press, 2002.
  3. Ingo Rammer și Mario Szpuszta. Telecomandă avansată .NET  . — Apress , 2005.
  4. 1 2 3 .NET Remoting  Overview . Consultat la 23 octombrie 2007. Arhivat din original la 30 iunie 2007.
  5. 1 2 3 4 5 6 . Arhitectura  .NET Remoting . Consultat la 23 octombrie 2007. Arhivat din original pe 8 iunie 2007.