Domanda

Sono curioso di sapere come funzionano Reflection e Remoting in .net internamente. Ho anche sentito che .net può usare il telecomando per comunicare con applicazioni scritte in altre lingue (come Java). Come funziona?

Questa è probabilmente una grande domanda, quindi una risposta che tocca brevemente ogni domanda è ragionevole.

È stato utile?

Soluzione

Il remoting funziona intercettando le chiamate a determinati oggetti ( MarshalByRefObject ) ed eseguendo invece una chiamata RPC; essenzialmente l'oggetto al chiamante è solo un proxy leggero per l'oggetto reale nell'AppDomain / machine / etc originario. Gli argomenti e i risultati vengono trasferiti (di nuovo, prendendo in considerazione MarshalByRefObject - altrimenti utilizzando BinaryFormatter per serializzare i valori).

Reflection è integrato nel runtime principale e fornisce l'accesso alle definizioni dei tipi sottostanti. Ciò è probabilmente in parte dovuto al fatto che l'IL sotto i linguaggi .NET è piuttosto espressivo in termini di codice originale.

Tuttavia, non sono personalmente a conoscenza di alcun modo di parlare tramite telecomando a Java. Potrebbe essere possibile, ma i formati utilizzati sono di proprietà (AFAIK). In generale, è più probabile che tali chiamate assumano la forma di chiamate SOA, come servizi Web (su SOAP o POX) o altri standard aperti come messaggi serializzati con JSON o "buffer di protocollo"; (un formato di filo open source con varianti sia per C # che per java).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top