Académique Documents
Professionnel Documents
Culture Documents
Los objetos a los que se llama mediante la infraestructura .NET Remoting se pueden alojar en ASP.NET, en ejecutables personalizados o en servicios de Windows. En este artculo se muestra cmo alojar un objeto remoto en un servicio de Windows y llamarlo desde una aplicacin Web ASP.NET. En este artculo se describe cmo alojar un objeto remoto en un servicio de Windows y llamarlo desde una aplicacin Web ASP.NET.
Notas
Los objetos remotos (objetos .NET a los que se tiene acceso de forma remota mediante la tecnologa .NET Remoting) se pueden alojar en servicios de Windows, en ejecutables personalizados o en ASP.NET. Para comunicarse con los objetos remotos alojados en ejecutables personalizados o en servicios de Windows, los clientes utilizan el canal TCP. Para comunicarse con los objetos remotos alojados en ASP.NET, los clientes utilizan el canal HTTP. Si la seguridad es lo ms importante, aloje los objetos en ASP.NET y utilice el canal HTTP. Esto le permite beneficiarse de las caractersticas de seguridad subyacentes de ASP.NET e IIS. Para obtener informacin acerca de cmo alojar un objeto remoto en ASP.NET (con IIS), consulte el artculo Q312107, "HOW TO: Host a Remote Object in IIS" (en ingls), en Microsoft Knowledge Base. Si el rendimiento es lo ms importante, aloje los objetos en un servicio de Windows y utilice el canal TCP. Con esta opcin no se proporciona seguridad integrada.
Requisitos
A continuacin se describen las recomendaciones de hardware, software, infraestructura de red, conocimientos y Service Pack que se necesitan. Sistema operativo Microsoft Windows 2000 Sistema de desarrollo Microsoft Visual Studio .NET Para llevar a cabo los procedimientos de este artculo, tambin es necesario que tenga conocimientos de la herramienta de desarrollo Microsoft Visual C#.
Resumen
En este artculo se incluyen los siguientes procedimientos: 1. Crear la clase de objetos remotos
2. Crear una aplicacin host de servicios de Windows 3. Crear una cuenta de Windows para ejecutar el servicio 4. Instalar el servicio de Windows 5. Crear una aplicacin cliente de prueba
4. Al principio del archivo, agregue la siguiente instruccin using debajo de las instrucciones using existentes.
using System.Runtime.Remoting;
5. Busque el mtodo Main y reemplace la lnea de cdigo existente que inicializa la variable ServicesToRun por el cdigo que se indica a continuacin.
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new HostService() };
7. Busque el mtodo OnStart y agregue la siguiente lnea de cdigo para configurar la interaccin remota (remoting). La ruta de acceso completa del archivo de configuracin se pasar al servicio como un parmetro de inicio.
RemotingConfiguration.Configure(args[0]);
8. Agregue al proyecto un nuevo archivo de clase de C# con el nombre HostServiceInstaller. 9. Agregue una referencia de ensamblado al ensamblado System.Configuration.Install.dll. 10. Al principio de HostServiceInstaller, agregue las siguientes instrucciones using debajo de la instruccin using existente.
using System.ComponentModel; using System.ServiceProcess; using System.Configuration.Install;
13. Agregue a la clase HostServiceInstaller las dos variables miembro privadas siguientes. Los objetos se utilizarn al instalar el servicio.
private ServiceInstaller HostInstaller; private ServiceProcessInstaller HostProcessInstaller;
15. En el Explorador de soluciones, haga clic con el botn secundario del mouse (ratn) en RemotingHost, elija Agregar y, a continuacin, haga clic en Agregar nuevo elemento. 16. En la lista Plantillas, haga clic en Archivo de texto y utilice el nombre app.config para el archivo. Visual Studio .NET copia automticamente los archivos de configuracin que tienen el nombre app.config como parte del proceso de compilacin en la carpeta de salida (por ejemplo, <directorioProyecto>\bin\debug) y se cambia su nombre por <nombreAplicacin>.config. 17. Haga clic en Aceptar para agregar el nuevo archivo de configuracin. 18. Agregue los siguientes elementos al nuevo archivo de configuracin.
<configuration> <system.runtime.remoting> <application name="RemoteHostService"> <service> <wellknown type="RemoteObject.Calculator, RemoteObject" objectUri="RemoteObject.Calculator" mode="Singleton" /> </service> <channels> <channel ref="tcp" port="8085"> <serverProviders> <formatter ref="binary" /> </serverProviders> </channel> </channels> </application> </system.runtime.remoting> </configuration>
1. Cree una nueva cuenta de usuario local llamada RemotingAccount. Escriba una contrasea y active la casilla de verificacin La contrasea nunca caduca. 2. En el grupo de programas Herramientas administrativas, haga clic en Directiva de seguridad local. 3. Utilice la herramienta Directiva de seguridad local para conceder a la nueva cuenta el privilegio Iniciar sesin como servicio.
3. En el cuadro de dilogo Establecer inicio de sesin del servicio, escriba el nombre de usuario y la contrasea de la cuenta creada anteriormente en el procedimiento 3, y haga clic en Aceptar. Vea la salida de la utilidad installutil.exe y confirme que el servicio se ha instalado correctamente. 4. Copie el ensamblado RemoteObject.dll en el directorio de salida del proyecto RemotingHost (RemotingHost\Bin\Debug). 5. En el grupo de programas Herramientas administrativas, inicie el complemento de MMC Servicios. 6. En la lista Servicios, haga clic con el botn secundario en Calculator Host Service y, a continuacin, haga clic en Propiedades. 7. Escriba la ruta de acceso completa del archivo de configuracin del servicio (remotinghost.exe.config) en el campo Parmetros de inicio. Nota: para llevarlo a cabo de forma rpida, seleccione y copie el contenido del campo Ruta de acceso al ejecutable, y pguelo en el campo Parmetros de inicio. Despus, adjunte la cadena ".config". 7. Haga clic en Iniciar para iniciar el servicio. 8. Confirme que el estado del servicio cambia a Iniciado. 9. Haga clic en Aceptar para cerrar el cuadro de dilogo Propiedades.
3. Agregue una referencia de ensamblado al ensamblado System.Runtime.Remoting.dll. 4. Agregue una referencia de proyecto al proyecto RemoteObject. 5. Al principio del archivo class1.cs, agregue las siguientes instrucciones using debajo de las instrucciones using existentes.
using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; using RemoteObject;
6. Agregue el siguiente cdigo de prueba al mtodo Main para llamar e invocar al objeto Calculator alojado en el servicio de Windows.
TcpChannel chan = new TcpChannel(); ChannelServices.RegisterChannel(chan); Calculator calc = (Calculator)Activator.GetObject( typeof(RemoteObject.Calculator), "tcp://localhost:8085/RemoteObject.Calculator"); if (calc == null) System.Console.WriteLine("Could not locate server"); else Console.WriteLine("21 + 21 is : " + calc.Add(21,21) );
7. En el men Generar, haga clic en Generar solucin. 8. Ejecute la aplicacin cliente y confirme que se muestra el resultado correcto en la ventana de salida de la consola.
Referencias
Para obtener informacin acerca de cmo alojar un objeto remoto en ASP.NET (con IIS), consulte el artculo Q312107, "HOW TO: Host a Remote Object in IIS" (en ingls), en Microsoft Knowledge Base.