Sunteți pe pagina 1din 3

Introducere

.NET Remoting este un mechanism pentru comunicarea ntre obiecte care nu sunt n acelai proces. Este un sistem generic ce permite comunicarea ntre diferite aplicaii. Obiectele .NET sunt expuse proceselor la distan, permind comunicarea ntre procese. Aplicaiile se pot afla pe acelai calculator, pe diferite calculatoare din aceeai reea sau pe calculatoare din diferite reele. icrosoft .NET Remoting ofer un frame!or" ce permite obiectelor s interacione#e ntre domenii de aplicaii. Remoting$ul a fost proiectat ntr$o manier care ascunde cele mai dificile aspecte cum ar fi gestionarea conexiunilor, marshalling$ul datelor, citirea i scrierea % & i 'OA(. )rame!or"$ul ofer mai multe ser*icii, inclusi* acti*area obiectelor, suportul timpului de *ia al obiectului, canalele de comunicaie care sunt responsabile de transportarea mesa+elor spre i dinspre aplicaiile la distan.

Obiecte la distan
Orice obiect din afara domeniului aplicaiei apelantului trebuie s fie considerat la distan. Obiectele locale care nu pot fi seriali#ate nu pot fi transmise unui alt domeniu de aplicaie, i deci nu pot fi obiecte la distan. Orice obiect poate fi schimbat ntr$un obiect la distan prin deri*area sa de la clasa arshal,-RefOb+ect, sau fcndu$l seriali#abil fie prin adugarea tag$ului .'eriali#able/, fie prin implementarea interfeei 0seriali#able. Atunci cnd un client acti*ea# un obiect la distan, acesta primete un prox- la obiectul la distan. Toate operaiile asupra acestui prox- acti*ea# infrastructura Remoting pentru a intercepta i transmite apelurile n mod corespun#tor. 1n ca#ul n care prox-$ul i obiectele la distan sunt n diferite domenii de aplicaie, toi parametrii apelului de metod sunt transformai n mesa+e i transportate ctre domeniul aplicaiei la distan, unde mesa+ele sunt transformate napoi ntr$un cadru de sti* i apelul de metod este in*ocat. Aceeai procedur este utili#at pentru a returna re#ultatele apelului metodei.

Tipuri de obiecte .NET Remotable


Exist trei tipuri de obiecte ce pot fi configurate pentru a ser*i ca obiecte la distan. 'e poate alege tipul obiectului n dependen de cerinele aplicaiei. Obiecte 'ingle 2all Obiectele 'ingle 2all ser*esc una i doar o singur cerere. Obiectele 'ingle 2all sunt utile n scenariile n care obiectele trebuie s ndeplineasc un lucru finit. Obiectele 'ingle 2all de obicei nu trebuie s stoche#e informaii despre stare i nu pot pstra informaia despre stare ntre apeluri. Obiecte 'ingleton Obiecte 'ingleton sunt acele obiecte care ser*esc clieni multipli i, prin urmare, parta+ea# date prin stocarea informaiei despre stare ntre in*ocrile clienilor. Ele sunt utile n ca#urile n care datele trebuie s fie explicit parta+ate ntre clieni i n ca#urile n care costul crerii i meninerii obiectelor este substanial. Obiecte 2lient$Acti*ated Obeictele 2lient$Acti*ated sunt obiecte ser*er$side care sunt acti*ate la cererea clientului. Atunci cnd clientul trimite o cerere unui obiect utili#nd operatorul 3ne!4, un mesa+ cu o cerere de acti*are este trimis aplicaiei la distan. 'er*erul apoi crea# o instan a clasei solicitate i returnea#

aplicaiei client care l$a in*ocat un Ob+Ref. Apelurile de metod ale clientului *or fi executate pe prox-. Obiectele 2lient$Acti*ated pot stoca informaii de stare ntre apelurile de metode pentru clientul su specific i nu ntre diferite obiecte client. )iecare in*ocare a lui 3ne!4 returnea# un proxla o instan independent a tipului ser*er.

Domenii
1n .NET, atunci cnd o aplicaie este ncrcat n memorie, este creat un proces, i n interiorul acestui proces este creat un domeniu de aplicaie. Aplicaia este efecti* ncrcat n domeniul aplicaiei. 5ac aceast aplicaie comunic cu alt aplicaie, ea trebuie s utili#e#e Remoting, deoarece cealalt aplicaie *a a*ea propriul su domeniu, i ntre domenii obiectele nu pot comunica direct. (ot exista diferite domenii de aplicaie n cadrul aceluiai proces, dar pot exista i n diferite procese.

Contexte
.NET runtime mparte domeniile de aplicaie n contexte. 6n context garantea# c un set comun de constrngeri i semantici de utili#are gu*ernea# accesul la obiectele din interiorul lui. Toate aplicaiile au un context implicit n care obiectele sunt construite, n afar de ca#ul cnd se cere altfel. 6n context, ca i un domeniu de aplicaie formea# o grani .NET Remoting. 2ererile de acces trebuie s fie marshall$uite ntre contexte.

Proxy-uri
Atunci cnd un apel este efectuat ntre obiectele din acelai domeniu de aplicaie, este necesar doar un apel local normal. Totui, un apel ntre domenii de aplicaie diferite necesit un apel la distan. (entru a facilita un apel la distan, un prox- este introdus de ctre .NET )rame!or" pe partea client. Acest prox- este o instan a clasei Transparent(rox-, disponibil direct clientului pentru a comunica cu obiectul la distan. 1n general, un obiect prox- este un obiect care acionea# n locul altui obiect. Obiectul prox- asigur c toate apelurile fcute pe prox- sunt transmise la instana la distan corect. 1n .NET Remoting prox-$ul gestionea# procesul de marshalling i alte sarcini necesare pentru a efectua apelurile ntre frontiere. 0nfrastructura .NET Remoting n mod automat crea# i gestionea# prox-$urile. Real(rox- i Transparent(rox)rame!or"$ul .NET Remoting utili#ea# 7 obiecte prox- pentru a face un apel la distan de la un obiect client la un obiect ser*er8 un obiect Real(rox- i un obiect Transparent(rox-. Obiectul Real(rox- trimite efecti* mesa+ele spre obiectul la distan i primete mesa+e de la acesta. Transparent(rox- interacionea# cu clientul, interceptnd apelul la distan fcut de client.

Mars allin!-ul
arshalling$ul de obiecte specific cum un obiect la distan este expus aplicaiei client. Este procesul mpachetrii unei cereri de acces la obiect ntr$un domeniu de aplicaie i al transmiterii acestei cereri ctre alt domeniu. 0nfrastructura .NET Remoting gestionea# ntreg procesul de marshalling. Exist 7 metode prin care un obiect la distan poate fi fcut disponibil pentru un obiect client local8 marshalling$ul dup *aloare i marshalling$ul dup referin. arshalling$ul obiectelor dup *aloare
7

arshalling$ul dup *aloare este analog cu a a*ea o copie a obiectului ser*er la client. Obiectele care sunt supuse marshalling$ului dup *aloare sunt create pe ser*erul la distan, seriali#ate ntr$un stream i transmise la client unde o copie exact este reconstruit. Odat copiat la domeniul de aplicaie al apelantului 9prin procesul de marshalling:, toate apelurile de metode i accesrile proprietilor sunt executate n ntregime n acest domeniu. 2lasele ce sunt supuse marshalling$ului dup *aloare trebuie sau s fie marcate cu atributul .'eriali#able/ pentru a utili#a seriali#area implicit, sau s implemente#e interfaa 0'eriali#able. arshalling$ul dup referin arshalling$ul dup referin este analog cu a a*ea un pointer la obiect. arshalling$ul dup referin transmite o referin la obiectul la distan ctre client. Aceast referin este o clas Ob+Ref care conine toat informaia necesar pentru a genera obiectul prox- care face comunicarea cu obiectul la distan. 1n reea numai parametrii i *alorile returnate sunt transmise. O in*ocare de metod la distan necesit ca obiectul la distan s apele#e metoda sa pe host$ul la distan 9ser*er:. 2lasele crora se aplic marshalling$ul dup referin trebuie s moteneasc de la '-stem. arshal,-RefOb+ect.

Canale
0nfrastructura .NET Remoting ofer un mecanism prin care un stream de octei este trimis de la un punct la altul 9de la client la ser*er etc.:. Acest lucru este reali#at printr$un canal. 'trict *orbind, este o clas care implementea# interfaa 02hannel. Exist 7 canale .NET Remoting predefinite n '-stem.Runtime.Remoting.2hannels8 Tcp2hannel i ;ttp2hannel. (entru a utili#a Tcp2hannel, ser*erul trebuie s instanie#e i s nregistre#e clasa Tcp'er*er2hannel i clientul < clasa Tcp2lient2hannel. (entru selectarea canalului se aplic urmtoarele reguli8 $ 2el puin un canal trebuie s fie nregistrat cu Remoting )rame!or" nainte ca un obiect la distan s poat fi apelat. 2analele trebuie s fie nregistrate nainte ca obiectele s fie nregistate. $ 2analele sunt nregistrate pentru fiecare domeniu de aplicaie. (ot exista mai multe domenii de aplicaie ntr$un singur proces. Atunci cnd un proces moare, toate canalele pe care le$a nregistrat sunt automat distruse. $ Este incorect de a nregistra acelai canal care ascult la acelai port mai mult dect o dat. 2hiar dac canalele sunt nregistrate pentru fiecare domeniu de aplicaie, diferite domenii de aplicaie de pe aceeai main nu pot nregistra acelai canal s asculte la acelai port. (oate fi nregistrat acelai canal ce ascult la dou porturi diferite pentru un domeniu de aplicaie. $ 2lienii pot comunica cu un obiect la distan utili#nd orice canal nregistrat. Remoting )rame!or" asigur c obiectul la distan este conectat la canalul corect atunci cnd un client ncearc s se conecte#e la el. 2lientul este responsabil pentru apelarea metodei Register2hannel pe clasa 2hannel'er*ice nainte de a ncerca s comunice cu un obiect la distan.