Interop marshaling

Atunci când un client gestionat și un server unmanaged sunt în aceeași unitate, serviciul marshaling se ocupă de toate datele de interacțiune marshaliruemye. Dar, în cazul în care clientul și serverul sunt inițializate în diferite divizii, necesită, de asemenea marshaling COM. Diagrama de mai jos ilustrează elementele unui apel între unități.


Apelul între client și NET COM-obiecte care sunt în diferite divizii

Pentru Mareșalul între unitățile, puteți:

Pentru acord cu costurile suplimentare ale marshaling între unitățile care devin vizibile numai în cazul în care granița traversează multe provocări. Apelurile la trecut cu succes unitățile de frontieră, este necesar să se înregistreze o bibliotecă de tipuri-COM componente.

Schimbarea fluxul principal de fluxul de client pe un singur fir sau multifir. De exemplu, în cazul în care C # client cauzează multe unități de un singur fir-COM component poate fi evitată marshaling între unități, prin setarea unității de flux principal un singur fir.

O dată pentru C # fir client este dat unitate singur fir, pentru a apela COM-componentele unităților necesită multifir marshaling între unități.

Instrucțiuni pentru selectarea modelelor de compartimentare se referă în mod explicit. Secțiunea Managed și Unmanaged Threading.

Când marshaling între unitățile COM marshaling utilizate în fiecare apel între cod gestionat și negestionat, în cazul în care obiectele sunt în procese separate. De exemplu:

Clientul COM, referindu-se la serverul de gestionat pe computerul la distanță folosind DCOM.

client de gestionat care accesează serverul COM pe computerul la distanță folosind DCOM.

Următoarea diagramă arată cum marshaling interacțiunea și COM marshaling oferă canale de comunicare între procese la nivel transfrontalier și noduri.


Marshaling între procese

Se salvează ID-uri

CLR menține identificatori de referințe gestionate și neadministrate. Următoarea diagramă arată fluxul de legături directe nedirijate (rândul de sus) și legături directe controlate (linia de jos) prin limita dintre procesele și nodurile.

Interop marshaling

legături de transport transfrontaliere între procese și noduri

client unmanaged devine o referință la COM-obiect dintr-un obiect gestionat, pentru a primi acest link de la un nod la distanță. Mecanismul este controlată de la distanță DCOM.

client gestionate primește o referință la un obiect gestionat de COM-obiect care a primit acest link de la un nod la distanță. Mecanismul este controlată de la distanță DCOM.

Exportat tip de bibliotecă serverul gestionat trebuie să fie înregistrate.

Numărul de procese ale limitelor dintre apelante și numite obiecte este irelevant; aceleași referințe sunt utilizate pentru a direcționa apelurile de intrare și ieșire, în procesele de ele.

Remoting controlată

Mediul de execuție oferă, de asemenea Remoting controlat, care pot fi utilizate pentru a stabili un canal de comunicare între obiecte gestionate la nivel transfrontalier între procese și noduri. remoting controlată poate furniza firewall între componentele de legare unul cu celălalt, așa cum se arată în schema de mai jos.


apeluri de la distanță prin intermediul firewall-uri folosind SOAP sau TcpChannel clasa