• Kjo faqe përdor cookies. Duke vazhduar të përdorim këtë faqe, ju jeni duke rënë dakord me përdorimin tonë të cookies. LEXO ME SHUME

Arkitektura .NET Remoting

Uriel

Active Member
#1
Njëri prej vetive të fuqishme të .NET Framework është mundësia e komunikimit të lehtë me aplikacione të shpërndara në shumë kompjuter, të lokalizuar në rrjete të ndryshme. Remoting lejon aplikacionet të ndajnë të dhënat e klasave dhe metodat nëpër kompjuterët e rrjetit, ngjashëm me konceptet e web shërbimeve. Pra, këtu mundësohet që metodat e klasave të host-ohen në një pajisje të rrjetës dhe të thirren nga cilido program C#, pa pasur nevojë të instalimit të IIS serverit. Remoting mundëson serializimin e të dhënave, i cili lejon elementet e të dhënave të klasës të çfarëdo lloji të transmetohen nëpërmjet një stream-i dhe pastaj të ribashkohen.

.NET Remoting është një mekanizëm i komunikimit ndërmjet objekteve të cilat nuk gjinden në të njëjtin proces. Është një sistem i përgjithshëm që aplikacionet e ndryshme të komunikojnë me njëra-tjetrën. Objektet .NETi ekspozohen proceseve në distancë, kështu për t’ju mundësuar komunikimin ndër procese. Remoting është dizajnuar në atë mënyrë që të fshehin aspektet më të ndërlikuara siç mund të jenë menaxhimi i lidhjeve, renditja e të dhënave (ang. Marshalling data) si dhe leximi dhe shkrimi i XML (ang. Extended Markup Language) dhe SOAP (ang. Simple Object Access Protocol). Ky Framework ofron një numër të shërbimeve duke përfshirë aktivizimin e objekteve dhe përkrahjen e jetëgjatësisë së objektit, gjithashtu edhe kanalet komunikuese të cilat janë përgjegjëse për transmetimin e mesazheve tek dhe nga aplikacionet në distancë.


Objektet në distancë
Çka janë objektet në distancë?

Çdo objekt jashtë domenit të aplikacionit të thirrësit të aplikacionit do të duhej të ishte në distancë, ku objekti do të rivendosej. Objektet lokale të cilat nuk mund të ndahet në pjesë- pjesë (ang. serialized), nuk mund të përcillen në domene të ndryshme të aplikacionit, prandaj edhe nuk mund të jenë “në distancë”.

Çdo objekt mund ndryshohet në objekt distance nëse e nxjerrim nga MarshalByRefObject, ose duke e bërë ndarjen në pjesë-pjesë si nga vendosja e etiketës [Serializable] ose nga implementimi i ndërfaqes ISerializable. Kur të aktivizoj një klient objektin në distancë, ai e pranon një Proxy në objektin e distancës. Të gjitha veprimet në këtë Proxy janë të orientuara në mënyrë të përshtatshme për të lejuar infrastrukturën Remote (në distancë) të ndërpresë dhe përcjell thirrjet në mënyrë të përshtatshme. Në rastet kur Proxy dhe objektet në distancë janë në domene të ndryshme të aplikacionit, të gjitha metodat që thërrasin parametrat në raft (ang. Stack) janë shndërruar në mesazhe dhe janë transmetuar në domenin e aplikacionit në distancë, ku mesazhet janë kthyer në një kornizë rafti dhe është bërë kërkesa për thirrjen e metodës. E njëjta procedurë është përdorur për të kthyer rezultatet nga thirrja e metodës.


Llojet e .NET objekteve në distancë
Janë tre lloje të objekteve që mund të konfigurohen për të shërbyer si .NET objekte në distancë. Mund të vendosni llojin e objektit varësisht nga kërkesa e aplikacionit tuaj.


Thirrje e vetme (ang. Single Call)
Shërbimi i thirrjes së vetme të objekteve mundëson një dhe vetëm një kërkesë të vetme. Objektet e thirrjes së vetme janë të dobishme rastet kur kërkohet që objektet të kryejnë një varg veprimesh. Objekteve të thirrjes së vetme zakonisht nuk iu kërkohet që të ruajnë informatat e gjendjes, dhe se ato nuk mund të mbajnë informatat e gjendjes ndërmjet thirrjeve të metodës.


Objektet e vetme (ang. Singleton)
Objektet Singleton janë ato objekte të cilat i shërbejnë shumë klient, dhe kështu i ndajnë të dhënat duke i ruajtur informatat e gjendjes ndërmjet klientëve të përfshirë. Ato janë të dobishme kur të dhënat duhet të ndahen në mënyrë eksplicite ndërmjet klientëve, dhe gjithashtu në dërgimin e krijimit dhe mirëmbajtjes së objekteve të konsiderueshme.


Objektet e aktivizuara nga klienti (ang. Client-Activated Objects – CAO)
Objektet e aktivizuara nga klienti (CAO) janë objekte të anës së serverit të cilat janë të aktivizuara para kërkesës së klientit. Kur klienti e dërgon një kërkesë për një objekt të serverit duke përdorur operatorin “new” është dërguar një mesazh kërkese për aktivizim tek aplikacioni në distancë. Serveri pastaj e krijon një instancë të klasës së kërkuar, dhe e kthen një ObjReftek klienti që ka bërë thirrjen. Pastaj, është krijuar një Proxy tek ana e klientit duke e shfrytëzuar ObjRef. Metoda e thirrjeve të klientit do të ekzekutohet në Proxy. Objektet e aktivizuara nga klienti mund të ruajnë informacionet e të dhënave ndërmjet thirrjeve të metodave për klientin e tij të posaçëm, dhe ndërmjet objekteve të ndryshme të klientit. Secila “new” thirrje e kthejnë një Proxy në një instancë të pavarur të llojit të serverit.


Domenet
Në .NET, kur të ngarkohet në memorie një aplikacion, është krijuar një proces, dhe brenda këtij procesi, krijohet një domen i aplikacionit. Në të vërtetë aplikacioni është ngarkuar në domenin e aplikacionit. Nëse ky aplikacion komunikon me ndonjë aplikacion tjetër, duhet të shfrytëzojë Remoting pasi që aplikacioni tjetër do ta ketë domenin e vet, dhe domenet ndërmjetësuese, objekti nuk mund të komunikoj drejtpërdrejt. Mund të ekzistojnë domene të ndryshme të aplikacioneve në të njëjtin proces, apo ato mund të ekzistojnë në procese të ndryshme.


Kontekstet
Koha e punës .NET pastaj e ndanë domenin e aplikacionit në kontekste. Konteksti garanton që një varg i detyrimeve dhe semantikës së shfrytëzimit drejton të gjitha qasjet në objekte brenda tij. Të gjitha aplikacionet kanë një kontekst të nënkuptuar (ang. Default) në të cilin janë konstruktuar objektet, përderisa nuk janë konstruktuar ndryshe. Një kontekst, si një domen i aplikacionit, krijon një kufij .NET Remoting. Kërkesat e qasjeve duhet të renditen ndërmjet konteksteve.


Proxy-të
Kur të bëhet një thirrje ndërmjet objekteve në të njëjtin domen të aplikacionit, kërkohet vetëm një thirrje lokale, megjithatë, thirrja ndërmjet domeneve të aplikacioneve kërkon një thirrje në distancë. Me qëllim të lehtësimit të një thirrje në distancë, është paraqitur një Proxy nga .NET framework-u në anën e klientit. Ky Proxy është një instancë e klasës TransparentProxy, drejtpërdrejt në dispozicion për klientin për të komunikuar me objektet në distancë. Zakonisht, Proxyobjekti është një objekt i cili vepron në vend të disa objekteve tjera. Proxy objekti siguron që të gjitha thirrjet e bëra në Proxy janë përcjellë tek instanca e duhur e objektit në distancë. Infrastruktura .NET Remotingtrajton në mënyrë automatike krijimin dhe menaxhimin e Proxy-ve. Kjo infrastrukturë përdorë dy Proxy objekte të cilat janë RealProxydhe TransparentProxy.


Renditja (ang. Marshaling)
Renditja e objekteve përcakton se si i shfaqet aplikacionit të klientit një objekt në distancë. Është procesi i paketimit të një objekti për t’iu qasur kërkesës në një domen aplikacioni dhe për të përcjellë atë kërkesë në domenin tjetër. Infrastruktura .NET Remoting e menaxhon tërë sistemin e renditjes. Ekzistojnë dy metoda nga të cilat mund të bëhet i disponueshëm një objekt në distancë tek një objekt i klientit lokal: Renditja sipas vlerës (ang. Marshal by value) dhe renditja sipas referencës (ang. Marshal by reference).


Kanalet (ang. Channels)
Infrastruktura .NET Remoting ofron një mekanizëm nga i cili një rrjedhë (ang. Stream) e bitëve është dërguar nga një pikë në tjetrën (p.sh. nga klienti tek serveri). Kjo arrihet nga një kanal. E thënë në mënyrë rigoroze, është një klasë e cila implementon ndërfaqen IChannel. Ekzistojnë dy kanale të paracaktuara të .NET RemotingSystem.Runtime.Remoting.Channels të cilat janë TcpChanneldhe HttpChannel. Për ta përdorur TcpChannel -in, serveri duhet të ilustroi (ang. Instantiate) dhe regjistroi klasën TcpServerChannel, dhe klienti, klasën TcpClientChannel.


Autor: MSc. Driton Gashi/itshqip.com