La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Introducción a Remoting

Presentaciones similares


Presentación del tema: "Introducción a Remoting"— Transcripción de la presentación:

1 Introducción a Remoting

2 Agenda Introducción Elementos de .Net Remoting Aplicación de ejemplo

3 Introducción Tecnología de objetos distribuidos sucesora de DCOM.
Objetivo: crear herramientas que faciliten la distribución de la aplicación en red de forma transparente. Framework variado y extensible para que los objetos de distintos dominios de aplicaciones, procesos y equipos se puedan comunicar sin problemas. Ideas fundamentales encontradas ya en CORBA o Java RMI, aunque la combinación final es algo diferente.

4 .NET Remoting: definiciones 1
Un AppDomain es el entorno donde se ejecuta la aplicación, por lo que la comunicación se dará entre distintos AppDomains, siendo un AppDomain el cliente y otro el servidor. Un canal es la forma de ordenar, formatear o transmitir mensajes a través de AppDomains, de forma que nosotros podamos decir que queremos transmitir un mensaje bien por medio de un protocolo de transporte como el TCP o de aplicación como pudiese ser el HTTP o cualquier canal implementado por la arquitectura.

5 NET Remoting: definiciones 2
Un proxy es un objeto que se encarga de abstraer la comunicación entre cliente/servidor de forma que los objetos de otro AppDomain (remotos) parezcan locales. Un sumidero (sink) es capaz de recibir mensajes de Remoting (IMessage), tratarlos y enviarlos al siguiente sumidero en la cadena de comunicación.

6 Introducción Remoting permite utilizar objetos o valores entre distintos application domains utilizando distintos protocolos

7 .NET Remoting: Sinks

8 .Net Remoting: Cliente Si se configura el cliente correctamente, podemos crear nuevas instancias de un objeto remoto: utilizando la sentencia “new”, recibiendo una referencia al objeto que reside en el servidor y ejecutando métodos/propiedades como si el objeto estuviese en el mismo proceso.

9 .Net Remoting: Servidor
El servidor necesita publicar un objeto Escuchar en un canal TCP o HTTP Tener un servicio con un nombre (Ej:ServicioMat) El cliente se conecta al ServicioMat utilizando un canal soportado y recibe una instancia El cliente se conecta a un servidor en un puerto El cliente especifica el objeto que desea Ejemplo: Conectar al “servicioMat” en el servidor “X” utilizando el protocolo HTTP en el puerto 80

10 Objetos remotos Tipos MarshalByRef MarshalByVal
Referencia en el cliente, objeto en el servidor MarshalByVal El cliente tiene una copia del objeto Deben ser objetos serializables (ISerializable), ya que el objeto entero debe viajar al cliente

11 Activación y Ejecución
Por Servidor SingleCall (Se instancia por cada llamada) Singleton (todos los clientes usan la misma instancia) Por Cliente Leasing Ejecución Síncrona Asíncrona Con o sin retorno

12 Ejemplo Cliente Servidor Cliente.exe Servidor.exe TiposCompartidos.dll

13 Aplicación de ejemplo El objeto remoto expone 2 métodos para sumar o restar 2 números Debemos Tener una implementacion de un tipo remoto Un “Application domain” host que escuche Un “Application domain” cliente que invoque Configurar el sistema de remoting en cada parte del sistema (cliente y servidor)

14 Remoting: desarrollo Escribir los componentes que se desea acceder remotamente y compilarlos en una dll (shared assembly) Escribir un componente ejecutable que oficie de “host” de los objetos anteriores Escribir los clientes que llamen al servidor

15 Creando “Remotable Type”
El tipo que se va a consumir remotamente debe heredar de MarshalByRefObject El resto… es como una clase tradicional

16 LibMat.cs using System; public class LibMat : MarshalByRefObject {
private int resultado; public int Sumar(int num1, int num2) resultado = num1 + num2; return resultado; } public int Restar(int num1, int num2) resultado = num1 - num2;

17 Crear la aplicación de Servidor
La aplicación deberá escuchar las peticiones de los clientes para permitir crear los objetos remotos Deberá Elegir y Registrar el canal (objeto que manejará los protocolos de red y los formatos de serialización) Registrar el componente de tipos remotos en .Net Remoting

18 Listener.cs using System; using System.Runtime.Remoting;
public class Listener { public static void Main() RemotingConfiguration.Configure("Listener.exe.config"); Console.WriteLine (“Escuchando peticiones. Enter para salir..."); Console.ReadLine(); }

19 Listener.exe.config <configuration>
<system.runtime.remoting> <application> <service> <wellknown mode="Singleton” type=“LibMat, MathLibrary” objectUri="MathLibrary.rem"/> </service> <channels> <channel ref="http" port="8989"/> </channels> </application> </system.runtime.remoting> </configuration>

20 Compilar Crear el ejecutable Listener.exe y referenciar a la dll de tipos LibMat.dll

21 Client.cs using System; using System.Runtime.Remoting;
public class Cliente { public static void Main() { RemotingConfiguration.Configure("Cliente.exe.config"); MathLibrary lib = new MathLibrary(); Console.WriteLine("Número 1:"); string num1 = Console.ReadLine(); Console.WriteLine(“Número 2:"); string num2 = Console.ReadLine(); Console.WriteLine(lib.Sumar(Convert.ToInt16(num1),Convert.ToInt16(num2 )).ToString()); Console.WriteLine (“Enter para salir..."); Console.ReadLine(); }

22 Ejecutar la aplicación
Ejecutar Listener.exe Ejecutar Cliente.exe

23 .NET Remoting: alojamiento
Los objetos de servicios remotos .NET se pueden alojar en: Un ejecutable administrado: cualquier archivo .NET EXE normal o en un servicio administrado. IIS (Internet Information Server): los objetos reciben los mensajes a través del canal HTTP. Se debe crear una raíz virtual, en la que se copiará"remoting.config“. El ejecutable o la DLL que contiene el objeto remoto se debe colocar en el directorio “bin”, en el directorio al que señala la raíz de IIS. Servicios de componentes .NET: para aprovechar los diferentes servicios de COM+, tales como las transacciones, JIT, la agrupación de objetos, etc...

24 .NET Remoting: servicios del canal
System.Runtime.Remoting.Channels. Facilitan el medio de transporte necesario para establecer estas comunicaciones. Canales HTTP (protocolo SOAP) y TCP (carga binaria). Se pueden conectar (a través de IChannel) utilizando canales personalizados en los que se puede escribir para permitir la integración de aplicaciones muy diversas.

25 Client-side remoting Client calls method on TransparentProxy
TransparentProxy builds message Stack frame to message TransparentProxy passes msg to RealProxy RealProxy forwards msg to envoy sink(s) Last envoy sink forwards msg to context sink(s) Last context sink forwards msg to channel sink(s) Channel sinks turn message into a byte stream Last channel sink sends byte stream to server

26 Remoting chain Transparent Proxy Real Channel Channel Server object
Message Envoy Sink Tx Sink Envoy Sink Envoy Sinks Context Sinks Tx Sink Formatter Sink Transparent Proxy Real 010110… Channel Transport Sink Channel Sink Channel Sink Client-side Server-side Channel 010110… Transport Sink Channel Sink Channel Sink Message Tx Sink Tx Sink Server object


Descargar ppt "Introducción a Remoting"

Presentaciones similares


Anuncios Google