You are on page 1of 7

nformación general de .

NET Framework Remoting
Visual Studio 2005 Otras versiones

y y

.NET Framework 4 Visual Studio 2008

.NET Remoting permite crear fácilmente aplicaciones ampliamente distribuidas, tanto si los componentes de las aplicaciones están todos en un equipo como si están repartidos por el mundo. Se pueden crear aplicaciones de cliente que utilicen objetos en otros procesos del mismo equipo o en cualquier otro equipo disponible en la red. También se puede utilizar .NET Remoting para comunicarse con otros dominios de aplicación en el mismo proceso. (Para obtener más información sobre la programación de los dominios de aplicación, vea Programar con dominios de aplicación.) .NET Remoting proporciona un enfoque abstracto en la comunicación entre procesos que separa el objeto utilizado de forma remota de un dominio de aplicación de cliente o servidor específico y de un mecanismo espec ífico de comunicación. Por lo tanto, se trata de un sistema flexible y fácilmente personalizable. Se puede reemplazar un protocolo de comunicación con otro o un formato de serialización con otro sin tener que recompilar el cliente ni el servidor. Además, el sistema de interacción remota no presupone ningún modelo de aplicación en particular. Se puede comunicar desde una aplicación Web, una aplicación de consola, un servicio de Windows, desde casi cualquier aplicación que se desee utilizar. Los servidores de interacción remota también pueden ser cualquier tipo de dominio de aplicación. Cualquier aplicación puede albergar objetos de interacción remota y proporcionar sus servicios a cualquier cliente en su equipo o red. Nota Por motivos de seguridad, es muy recomendable exponer los extremos de interacción remota a través de canales seguros. No exponga nunca extremos de interacción remota inseguros en Internet. Si desea utilizar .NET Remoting para crear una aplicación en la que dos componentes se comunican directamente más allá de los límites de los dominios de aplicación, sólo deberá crear lo siguiente:
y

Un objeto que se puede utilizar de forma remota.

donde se pueden invocar directamente los métodos de la copia. Las direcciones de los métodos del servidor son lógicas y funcionan correctamente en un proceso. le resultará más fácil si considera el sistema de interacción remota como un sistema genérico de comunicación entre procesos con algunas implementaciones predeterminadas capaces de controlar fácilmente la mayoría de los escenarios posibles. un cliente que realice llamadas al objeto servidor y un mecanismo de transporte que lleve las llamadas de un e tremo a otro. La mayor parte del sistema funciona sin llamar la atención. Tanto si implementó una serie de aplicaciones distribuidas como si sólo desea mover componentes a otros equipos para aumentar la escalabilidad de su programa. La e plicación siguiente comienza con los principios básicos de la comunicación entre procesos mediante la interacción remota. esquemas de duración de objetos y modos de creación de objetos. o copiar. pero no funcionan en otro proceso de cliente. Pero la verdadera ventaja del sistema de interacción remota es su capacidad para permitir la comunicación entre objetos pertenecientes a dominios de aplicación o a procesos distintos mediante diferentes protocolos de transporte. el cliente puede llamar a un objeto servidor realizando una copia de todo el objeto y pasándola al proceso de cliente. sea cual sea la razón. se pasan automáticamente de una aplicación a otra en dominios de aplicación o en equipos distintos. Sólo tiene que marcar sus clases personalizadas como serializables para que el sistema funcione. la interacción remota permite intervenir en prácticamente todas las fases del proceso de comunicación. Además. Copias y referen ias La comunicación entre procesos requiere un objeto servidor cuya funcionalidad esté a disposición de los llamadores fuera de su proceso. los objetos que se pueden pasar por valor. Arquit tura Remotin Visual Studio 2005 £ ¤ d .N Remotin es un enfoque abstracto de la comunicación entre procesos.NET Remoting puede considerarse de esta manera.N Framework La infraestructura de . Un dominio de aplicación de cli ente que realiza solicitudes para dicho objeto.   ¥ ¦ . Para solucionar este problema.Incluso en una aplicación compleja de varios clientes o servidores . § ¢ ¡ y y Un dominio de aplicación hos para esc char las solicitudes de dicho objeto. Por ejemplo. formatos de serialización. Las aplicaciones host y cliente también deben configurarse con la infraestructura remota y es preciso comprender las cuestiones de vida útil y de activación que conlleva dicha infraestructura.

Copiar el objeto servidor entero. Los clientes pueden utilizar esta referencia para llamar al objeto del servidor. Su clien te recibe una referencia al objeto de servidor. el sistema de interacción remota reúne toda la información referente a la llamada y la envía al proceso del servidor. el proceso del servidor deb ería pasar al proceso del cliente una referencia al objeto servidor. Normalmente. se devuelve el resultado de la llamada al proceso del cliente para que se lo devuelva a su vez al cliente. Por último. Los objetos sumamente grandes con muchos métodos son los menos aconsejables para copiar o pasar por valor a otros procesos. Puede copiar esta dirección. Los objetos proxy son objetos complementarios. supondría desperdiciar el ancho de banda así como la memoria del cliente y el tiempo que se emplea en procesarlo todo. para su cliente. No obstante. Copiar estos objetos podría permitir que clientes no autorizados e aminaran datos internos. en lugar de una copia del objeto. Cuando un cliente crea una instancia del tipo remoto. que se presentan como si fueran otro objeto. Su cliente llama a un método en ese objeto proxy y el sistema de interacción remota recibe la llamada. la arquitectura de interacción remota proporciona al programador un procedimiento aún más sencillo. un cliente sólo necesita la información devuelta por un solo método o por unos pocos en el objeto servidor. lo que le permite llamar a sus métodos como si el objeto estuviera en su proceso en lugar de estar ejecutándose en otro equipo. muchos objetos no se pueden o no se deben copiar ni pasar a otros procesos para ejecutarse. un objeto FileInfo contiene una referencia a un archivo de sistema operativo que tiene una dirección única en la memoria del proceso del servidor. algunos objetos utilizan datos que no se pueden copiar de ninguna forma comprensible. pero nunca tendrá sentido en otro proceso. Si configura correctamente el cliente. El ancho de banda se utiliza únicamente para la información esencial: la llamada. la infraestructura de interacción remota crea un objeto proxy que. tiene exactamente la misma apariencia que el tipo remoto. sólo tiene que crear una nueva instancia del objeto remoto mediante new (o la función de creación de instancias del lenguaje de programación administrado que utilice). donde se interpreta.No obstante. la dirige hacia el ¨ . incluyendo lo que podrían ser enormes cantidades de información interna o estructuras ejecutables no relacionadas con las necesidades del cliente. El sistema de interacción remota utiliza objetos proxy para dar la impresión de que el objeto del servidor se encuentra en el proceso del cliente. Además. se busca el objeto del servidor correcto y se realiza la llamada a dicho objeto en nombre del objeto del cliente. Estas llamadas no se ejecutan en el proceso del cliente. ¨ ¨ Arquitectura simplificada de interacción remota El uso de referencias a objetos para la comunicación entre objetos de servidor y clientes es la esencia de la interacción remota. muchos objetos e ponen una funcionalidad pública pero requieren datos privados para la ejecución interna. Por ejemplo. A c ontinuación. En vez de eso. sus argumentos y todas las e cepciones o valores devueltos. lo que posibi litaría la aparición de problemas de seguridad. En estos casos.

Diseño completo de un sistema de interacción remota Imagine que en su equipo se ejecuta una aplicación y desea utilizar la funcionalidad expuesta por un tipo almacenado en otro equipo. Desde el exterior del dominio de aplicación de servidor. que garantizan que su llamada remota va dirigida al tipo apropiado. invoca al objeto de servidor y envía el valor devuelto al objeto proxy del cliente. Aunque el proceso del servidor conoce perfectamente todos los tipos. En el sistema . la combinación de tecnologías subyacentes necesarias para abrir una conexión de red y utilizar un determinado protocolo para enviar los bytes a la aplicación receptora se representa como un canal de transporte. se pueden utilizar en ambos sentidos. Proceso de interacción remota .proceso del servidor. Para obtener más información. En la ilustración siguiente se muestra el proceso general de interacción remota. vea Direcciones URL de activación. otros sólo pueden enviarla y otros. crea un paquete según un determinado protocolo de red y lo envía a otro equipo. el clie nte sólo sabe que necesita una referencia a un objeto de otro dominio de aplicación. Las llamadas remotas deben ser transmitidas de alguna forma entre el cliente y el proceso del servidor. Las direcciones URL que representan tipos únicos para el mundo exterior son direcciones URL de activación.NET Remoting. puede que de otro equipo. como las clases predeterminadas TcpChannel y HttpChannel. Algunos canales sólo pueden recibir información. que a su vez devuelve el resultado al cliente. una dirección URL ubica el objeto. podría empezar aprendiendo programación de redes y una amplia gama de protocolos y especificaciones de formatos de serialización. Un canal es un tipo que toma una secuencia de datos. Si crea un sistema de interacción remota por su cuenta.

es importante resaltar que si aloja un objeto remoto en los Servicios de Internet Information Server (IIS). como los indicados a continuación. En otros temas. que a su vez busca (o crea. los detalles de los niveles inferiores pue den resultar muy complejos. Una dirección URL de activación en el cliente tiene esta forma: EsquemaProtocolo :// NombreEquipo : Puerto / PosibleNombreAplicación Si usa objetos TcpChannel. A continuación el proceso se invierte: el sistema de interacción remota del servidor incluye la respuesta en un mensaje que el canal del servidor envía al canal del cliente. la dirección URL recibe la denominación de dirección URL de objeto conocido. En este caso. la infraestructura de interacción remota controla la llamada. Para que esto funcione se necesita muy poco código propiamente dicho.NET Remoting genera automáticamente una dirección URL única para cada instancia. la dirección URL que se utiliza para activar un objeto de activación en el cliente recibe el nombre de dirección URL de activación en el cliente. se requiere el número de puerto. vea Configuración. Por último. un cliente se limita a crear una nueva instancia de la clase de servidor. se describen con más detalle los elementos principales de la interacción remota. El sistema de interacción remota crea un objeto proxy que representa a la clase y devuelve al objeto del cliente una referencia al objeto proxy. el sistema de interacción remota del cliente devuelve el resultado de la llamada al objeto del cliente a través del objeto proxy. Un canal a la escucha detecta la solicitud y la reenvía al sistema de interacción remota del servidor. . El código puede ser totalmente correcto y aún así no funcionar porque una dirección URL o un número de puerto no lo sean. Además. si es necesario) y llama al objeto solicitado. pero es conveniente reflexionar un poco sobre el diseño y la configuración de la relación. Para obtene r más información. Aunque esta información general del proceso básico de interacción remota es bastante sencilla. el directorio virtual de su apl icación pasa automáticamente a ser el nombre de la aplicación. Cuando un cliente llama a un método. podría ser necesario introducir algunos cambios poco importantes. comprueba el tipo de información y dirige la llamada por el canal hacia el proceso del servidor. Una dirección URL de objeto conocido tiene la siguiente forma: EsquemaProtocolo :// NombreEquipo : Puerto / PosibleNombreAplicación / UriObjeto No obstante. porque el sistema . no podrá declarar un nombre de aplicación. Por tanto. Como resultado.Si ambas partes de la relación están configurados correctamente. DIRECCIONES URL DE ACTIVACIÓN Los objetos activados en el servidor que se publican en una dirección URL fuera del dominio de aplicación se denominan tipos conocidos. Los objetos activados en el cliente no necesitan una dirección URL única para cada uno.

Independientemente del nombre de archivo que elija. De esta forma podrá copiar los archivos de configuración que sólo se encargan de los canales. Por ejemplo. Naturalmente.config.confi © © Se recomienda utilizar este formato de nombre de archivo en la mayoría de los casos.Con dominios de aplicación host que no sean IIS. (Cuando aloja un tipo utilizable de f orma remota en los Servicios de Internet Information Server (IIS). en los sistemas operativos Microsoft Windows se ejecutan cada una en su propio proceso.Configure y pasando el nombre del archivo de configuración. puede pasar varios archivos de configuración a Confi ure. los proveedores o de cualquier otra funcionalidad personalizada. debe cargar los valores en el archivo llamando a RemotingConfiguration. después. Este mecanismo de protección se implementa mediante el uso de procesos y dominios de aplicación. el nombre apropiado para el archivo de configuración es MiServidor. Si se produce un error en una aplicación por algún motivo. Si especifica plantillas de canales personalizados en un archivo Channels. LÍMITES: PROCESOS Y DOMINIOS DE APLICACIÓN Los sistemas operativos y los entornos de motores de tiempo de ejecución modernos necesitan proteger cada aplicación frente a los errores de las demás aplicaciones.config y proveedores personalizados en un archivo Providers. sólo se ve afectado ese proceso. formateadores y proveedores de canales personalizados en otro archivo o archivos y. Cálculo de referencias es el término asignado a los eventos que se producen cuando una llamada y sus argumentos se empaquetan en un proceso y se © . la configuración de la seguridad de la aplicación sólo se aplicará si está incluida en un archivo cuyo nombre tenga esta forma: <NombreAplicación>. se detectarán los elementos <service>.exe. puede resultar un tanto complejo llamar a las funciones de un proceso desde otro. mientras que las aplicaciones de otros procesos siguen funcionando. registrarlos todos en sucesivas llamadas a Confi ure.exe.config. En el segundo caso. Procesos Para proteger a unas aplicaciones de otras. puede usar las llamadas que se muestran en el siguiente ejemplo de código para configurar su cliente de interacción remota.<ExtansiónArchivo>. si el ejecutable host es MiServidor. puede configurar el tipo utilizable de forma remota mediante programación o utilizar un archivo de configuración.) Aunque puede utilizar cualquier nombre de archivo para el archivo de configuración de interacción remota. debido a que las direcciones de memoria en un proceso no tienen sentido en ningún otro. A menudo resulta útil especificar los canales.

NET Remoting facilita la infraestructura para comunicarse entre dominios de aplicación de una manera sencilla.desempaquetan en otro. Toda aplicación administrada se ejecuta en un dominio de aplicación. . protegida por las tecnologías de seguridad. al hecho de que el código administrado dispone de seguridad de tipos verificable. Dominios de aplicación En el entorno administrado. . los dominios de aplicación. entre otros factores. y los contextos proporcionan aislamiento y seguridad a un costo menor y con una capacidad mayor para escalar correctamente que un proceso de sistema operativo. tanto si otra aplicación inicia un dominio en su lugar como si el entorno host inicia uno por ella. que se pueden considerar co mo procesos lógicos. gracias. de manera que una llamada que atraviese el límite de un proceso pueda realizarse.