.NET Remoting es una interfaz de programación de aplicaciones (API) de Microsoft para la comunicación entre procesos lanzada en 2002 con la versión 1.0 de .NET Framework . Es una de una serie de tecnologías de Microsoft que comenzó en 1990 con la primera versión de vinculación e incrustación de objetos (OLE) para Windows de 16 bits . Los pasos intermedios en el desarrollo de estas tecnologías fueron Component Object Model (COM) lanzado en 1993 y actualizado en 1995 como COM-95, Distributed Component Object Model (DCOM), lanzado en 1997 (y renombrado como Active X), y COM + con Microsoft. Transaction Server (MTS), lanzado en 2000.[1] Ahora es reemplazado por Windows Communication Foundation (WCF), que es parte de .NET Framework 3.0 .
Al igual que los miembros de su familia y tecnologías similares como Common Object Request Broker Architecture (CORBA) y la invocación de método remoto de Java (RMI), .NET Remoting es complejo, pero su esencia es sencilla. Con la ayuda del sistema operativo y los agentes de red, un proceso cliente envía un mensaje a un proceso servidor y recibe una respuesta. [2] [3]
Descripción general
.NET Remoting permite que una aplicación haga que un objeto (denominado objeto remoto ) esté disponible a través de límites remotos , lo que incluye diferentes dominios de aplicaciones , procesos o incluso diferentes computadoras conectadas por una red. [4] El tiempo de ejecución .NET Remoting aloja al oyente para las solicitudes al objeto en el dominio de aplicación de la aplicación del servidor. En el extremo del cliente, el tiempo de ejecución de .NET Remoting envía cualquier solicitud al objeto remoto a través de los Channel
objetos, que encapsulan el modo de transporte real, incluidos los flujos TCP , los flujos HTTP y las canalizaciones con nombre . Como resultado, al crear instancias de los Channel
objetos adecuados , se puede crear una aplicación .NET Remoting para admitir diferentes protocolos de comunicación sin volver a compilar la aplicación. El propio tiempo de ejecución gestiona el acto de serialización y ordenación de objetos en los dominios de aplicaciones del cliente y del servidor. [4]
.NET Remoting hace una referencia de un objeto remoto disponible para una aplicación cliente, que luego crea una instancia y utiliza un objeto remoto como si fuera un objeto local. [4] Sin embargo, la ejecución real del código ocurre en el lado del servidor. Un objeto remoto se identifica mediante URL de activación y se crea una instancia mediante una conexión a la URL. [5] El tiempo de ejecución remoto crea un oyente para el objeto cuando el servidor registra el canal que se utiliza para conectarse al objeto remoto. En el lado del cliente, la infraestructura de comunicación remota crea una proxy
que sustituye a una pseudo-instanciación del objeto remoto. No implementa la funcionalidad del objeto remoto, pero presenta una interfaz similar. Como tal, la infraestructura remota necesita conocer la interfaz pública del objeto remoto de antemano. Todas las llamadas a métodos realizadas contra el objeto, incluida la identidad del método y los parámetros pasados, se serializan en un flujo de bytes y se transfieren a través de un protocolo de comunicación dependiente Channel
a un objeto proxy del destinatario en el lado del servidor (" ordenado "), escribiendo al sumidero de transporte del Canal. [5] En el lado del servidor, el proxy lee el flujo del receptor y realiza la llamada al objeto remoto en nombre del cliente. Los resultados se serializan y se transfieren a través del receptor al cliente, donde el proxy lee el resultado y lo entrega a la aplicación que realiza la llamada. [5] Si el objeto remotable necesita hacer una devolución de llamada a un objeto cliente para algunos servicios, la aplicación cliente debe marcarlo como remotable y tener un host de tiempo de ejecución remoto para escucharlo. [5] El servidor puede conectarse a él a través de un canal diferente, o por el ya existente si la conexión subyacente admite la comunicación bidireccional. [5] Un canal puede estar compuesto por varios objetos de canal diferentes, posiblemente con diferentes transportes heterogéneos. Por lo tanto, la comunicación remota también puede funcionar en sistemas separados por una interconexión de redes heterogéneas, incluida Internet. [5] La seguridad de tipos se aplica mediante el CTS y el tiempo de ejecución de .NET Remoting. Las llamadas a métodos remotos son inherentemente síncronas; Las llamadas asincrónicas se pueden implementar utilizando bibliotecas de subprocesos. La autenticación y el control de acceso se pueden implementar para los clientes mediante el uso de canales personalizados o alojando los objetos remotables en IIS y luego usando el sistema de autenticación de IIS. [6]
Referencias
- ^ Hoja de ruta de tecnología de software (2001). "Modelo de objetos componentes y capacidades relacionadas" . Instituto Carnegie-Mellon de Ingeniería de Software. Archivado desde el original el 15 de mayo de 2008.
- ^ McLean, Scott; Naftel, James; Kim, Williams (2002). Microsoft .NET Remoting . Microsoft Press.
- ^ Rammer, Ingo; Szpuszta, Mario (2005). .NET Remoting avanzado . Presione.
- ^ a b c "Descripción general de .NET Remoting" . Consultado el 23 de octubre de 2007 .
- ^ a b c d e f "Arquitectura Remota .NET" . Consultado el 23 de octubre de 2007 .
- ^ "Seguridad" . MSDN7897878979878 . Consultado el 23 de octubre de 2007 .
enlaces externos
- Página web oficial
- Migración de .NET Remoting a WCF