Cómo crear una aplicación de cliente o servidor DCOM mediante Visual Basic


Resumen


Este artículo demuestra cómo crear, empaquetar e implementar una aplicación cliente-servidor del Modelo distribuido de objetos componentes (DCOM) con Visual Basic. Para crear una aplicación cliente-servidor DCOM, se necesita Visual Basic Enterprise Edition. Microsoft da por supuesto que el lector ya está familiarizado con la creación de aplicaciones cliente-servidor que se ejecutan en el mismo equipo.

Más información


No tiene que cambiar el código para permitir que una aplicación cliente cree instancias de un servidor remoto con DCOM. La diferencia es la manera en la que se empaqueta e implementa el cliente. Además, es necesario realizar cierta configuración de seguridad después de instalar el cliente y el servidor. Para ello, puede usar una utilidad denominada Dcomcnfg.

Los pasos siguientes demuestran cómo distribuir y configurar una aplicación cliente-servidor simple. Denomine al servidor DCOMDemo_Svr y al cliente DCOMDemo_Cli. Cree una carpeta independiente para cada uno. Dada la finalidad de este artículo, denomine a estas carpetas c:\DCOMDemo\Server y c:\DCOMDemo\Client.

Crear el servidor

  1. Inicie un proyecto nuevo de Visual Basic. En el cuadro de diálogo Nuevo proyecto, seleccione EXE ActiveX y, a continuación, haga clic en Abrir. Se creará Class1 de manera predeterminada.
  2. Agregue el siguiente código al módulo de Class1:
    Public Function ServerTime() As String
    ServerTime = Time
    End Function
  3. En el menú Proyecto, haga clic en la opción Propiedades del proyecto y, a continuación, seleccione la ficha General.
  4. En el campo Nombre de proyecto, escriba DCOMDemo_Svr.
  5. En el campo Descripción del proyecto, escriba DCOMDemo_Svr - Servidor. Active la opción Ejecución desatendida.

    NOTA: esta opción siempre se debería activar en los servidores que no tengan ninguna interfaz de usuario para garantizar que no se muestra ningún cuadro de diálogo de ningún tipo mientras el servidor se está ejecutando. Si existe algún tipo de interacción con el usuario mientras el servidor se está ejecutando bajo una identidad que no es la de Usuario interactivo, puede parecer que el servidor deja de responder.
  6. Seleccione la ficha Componente y active la opción Archivos en servidor remoto.

    NOTA: al activar esta opción, hace que el compilador de Visual Basic genere los archivos VBR y TLB que se necesitan para empaquetar las aplicaciones cliente que utilizan este servidor. Estos archivos contienen entradas del Registro que tienen que incluirse en el equipo cliente.
  7. Cierre el cuadro de diálogo Propiedades del proyecto.
  8. En el menú Archivo, seleccione Guardar como y, a continuación, guarde este proyecto en la carpeta c:\DCOMDemo\Server.
  9. En el menú Archivo, seleccione Generar DCOMDemo_Svr y compile el servidor.
  10. En el menú Proyecto, seleccione la opción Propiedades del proyecto y, a continuación, seleccione la ficha Componente.
  11. En la ficha Componente, seleccione Compatibilidad de la versión, seleccione la opción Compatibilidad binaria y, a continuación, haga que el proyecto tenga compatibilidad binaria con el archivo ejecutable del servidor recién creado (DCOMDemo_Svr.exe). Al seleccionar esta opción, está garantizando que todos los GUID se mantienen igual si vuelve a compilar el servidor.

Crear el cliente

  1. En el menú Archivo , seleccione la opción Nuevo proyecto, seleccione EXE estándar y, a continuación, haga clic en Aceptar. De forma predeterminada, se crea Form1.
  2. En el menú Proyecto, haga clic en la opción Propiedades del proyecto y, a continuación, seleccione la ficha General.
  3. En el campo Nombre de proyecto, escriba DCOMDemo_Cli.
  4. En el campo Descripción del proyecto, escriba DCOMDemo_Cli Proyecto - Cliente.
  5. En el menú Proyecto, haga clic en Referencias. En la lista de referencias disponibles, seleccione DCOMDemo_Svr - Servidor.
  6. Coloque un botón de comando en Form1 y cambie el título del botón por Ejecutar.
  7. Coloque el código siguiente en el evento de clic del botón:
        Dim MyObj As DCOMDemo_Svr.Class1

    On Error GoTo err1

    Set MyObj = CreateObject("DCOMDemo_Svr.Class1")
    MsgBox "Server Time=" & MyObj.ServerTime & " Client Time=" & Time

    Exit Sub
    err1:
    MsgBox "Connection failed: Error " & Err.Number & " - " & Err.Description

  8. En el menú Archivo, seleccione Guardar como y, a continuación, guarde el proyecto en la carpeta c:\DCOMDemo\Client del cliente.
  9. Presione la tecla F5 para ejecutar el cliente en el IDE y probarlo.
  10. En el menú Archivo, seleccione Generar DCOMDemo_Cli para compilar el cliente y, a continuación, cierre Visual Basic.

Empaquetar el servidor

Utilice el Asistente de empaquetado e implementación para empaquetar como de costumbre el servidor para la distribución. Un cliente remoto crea una instancia del servidor con DCOM. Al crear el paquete para el servidor, obtiene un cuadro de diálogo en el que se pregunta si este servidor se utilizará como servidor remoto de automatización y si desea incluir los archivos de compatibilidad para este propósito. Basta con que haga clic en el botón No, porque DCOM no es un modelo de automatización remota. La automatización remota es una tecnología anterior a la que reemplazó DCOM.

Empaquetar el cliente

Al empaquetar el cliente, es necesario realizar algunos pasos concretos considerando que el servidor no se ejecuta en el mismo equipo que el cliente. Los cambios realizados al paquete del cliente garantizan que sólo se instala la biblioteca de tipos (archivo .tlb) y que se incluyen algunas entradas del Registro adicionales en lugar de la aplicación ejecutable del servidor, lo que no es necesario en el equipo del cliente porque no va a ejecutarse allí.

Use el procedimiento siguiente para empaquetar el cliente:

  1. Inicie el Asistente de empaquetado e implementación, y a continuación seleccione el proyecto del cliente.
  2. Haga clic en el botón Paquete. En el cuadro de diálogo Tipo de paquete, seleccione Paquete de instalación estándar y, a continuación, haga clic en Siguiente.
  3. En el cuadro de diálogo Carpeta de paquete, seleccione la carpeta donde almacenar el paquete y, a continuación, haga clic en Siguiente. En este caso, es c:\DCOMDemo\Client\Package.

    NOTA: puede que aparezca un cuadro de diálogo que indique que no hay ninguna información de dependencia para el servidor. Haga clic en Aceptar porque este servidor no tiene ninguna dependencia.

    Debería estar ahora en el cuadro de diálogo Archivos incluidos.
  4. Anule la selección del archivo ejecutable del servidor, DCOMDemo_Svr.exe, porque no desea distribuir la aplicación ejecutable del servidor y, a continuación, haga clic en el botón Agregar.
  5. Cambie el cuadro combinado Tipo a Archivos de servidor remoto (*.vbr).
  6. Señale a la carpeta donde tiene el proyecto del servidor (en este caso c:\DCOMDemo\Server) y seleccione el archivo VBR relacionado, DCOMDemo_Svr.VBR. Haga clic en Abrir y el cuadro de diálogo Agregar Archivo se cierra. Observe que se incluyen dos archivos, DCOMDemo_Svr.VBR y DCOMDemo_Svr.TLB. Haga clic en el botón Siguiente.

    NOTA: en el cuadro de diálogo Servidores remotos puede definir el nombre del equipo (dirección de red) donde el servidor se está ejecutando. Normalmente mantiene este campo en blanco porque puede no saber de antemano dónde se instalará el servidor. Si mantiene el espacio en blanco, se le preguntará la información al instalar el cliente. En este ejemplo, deje el espacio en blanco.
  7. Haga clic en Siguiente para continuar. Ahora puede proseguir con los procedimientos estándar para el Asistente de empaquetado e implementación. En este caso, basta con que haga clic en Siguiente en los demás cuadros de diálogo.

Instalar el servidor

Instale el servidor en el equipo en el que desearía ejecutarlo, utilizando el paquete de la distribución que creó anteriormente. Si desea utilizar el equipo de desarrollo para ejecutar el servidor, no necesita instalarlo porque Visual Basic realiza el registro en su lugar cuando compila el servidor.

Instalar el cliente

Instale el cliente en el equipo en el que desearía ejecutarlo, utilizando el paquete de la distribución que creó anteriormente. Dado que este cliente utiliza un servidor DCOM y usted dejó la ubicación real del servidor en blanco cuando creó el paquete de distribución, ahora tiene que proporcionar esta ubicación. Cuando el programa de instalación la solicite, proporcione el nombre del equipo donde instaló el servidor.


Establecer la seguridad del servidor

Si instaló el servidor en un equipo Microsoft Windows NT o Microsoft Windows 2000, tiene que configurar su seguridad. Para ello, use Dcomcnfg según se muestra en los pasos siguientes, en los que se da por supuesto que los equipos cliente y servidor forman parte de un dominio, y el usuario que inició sesión en el equipo cliente lo hizo como usuario del dominio. La configuración sugerida es simplemente una posible. Es muy genérica y proporciona un acceso extenso al servidor. Recuerde que simplemente se trata de un ejemplo. Al implementar aplicaciones reales, si la seguridad es importante para el entorno, debería seleccionar opciones más restrictivas. Además, si el equipo que usa para probar este servidor de ejemplo se utiliza para ejecutar otros servidores, tome nota de la configuración actual antes de realizar los cambios siguientes, y vuelva a la original en cuanto termine las pruebas.

  1. En el equipo servidor, haga clic en el botón Iniciar y, a continuación, seleccione Ejecutar. En el cuadro de diálogo Ejecutar, escriba Dcomcnfg y, después, haga clic en Aceptar. Debe tener derechos de administrador para poder ejecutar Dcomcnfg.
  2. Seleccione la ficha Propiedades predeterminadas y compruebe que la opción Habilitar COM distribuido en este equipo está activada.
  3. Establezca el nivel de autenticación predeterminado en Conectary el nivel de suplantación predeterminado en Identificar.
  4. Seleccione la ficha Seguridad predeterminada.
  5. Haga clic en el botón Editar valores predeterminados en el panel Permisos de acceso predeterminados.
  6. Compruebe que Todos y Sistema están incluidos en la lista con derechos Permitir acceso. Si no lo están, puede utilizar el botón Agregar para agregarlos a la lista. Haga clic en Aceptar cuando la lista esté completa.
  7. Haga clic en el botón Editar valores predeterminados en el panel Permisos de inicio predeterminados.
  8. Compruebe que Todos y Sistema están incluidos en la lista con permisos Permitir inicio. Si no lo están, utilice el botón Agregar para agregarlos a la lista. Haga clic en Aceptar cuando la lista esté completa.
  9. Seleccione la ficha Aplicaciones, resalte su servidor, DCOMDemo_Svr.Class1, y a continuación haga clic en el botón Propiedades.
  10. Seleccione la ficha General, establezca el nivel de autenticación en Predeterminado y, a continuación, seleccione la ficha Ubicación. La única opción activada debería ser Ejecutar la aplicación en este equipo.
  11. Seleccione la ficha Seguridad y compruebe que los permisos Usar permisos de acceso predeterminados y Usar permisos de inicio predeterminados están activadas.
  12. Seleccione la ficha Identidad, active la opción El usuario inicial, haga clic en Aceptar para cerrar el cuadro de diálogo Propiedades del servidor y, a continuación, haga clic de nuevo en Aceptar para cerrar Dcomcnfg. Como puede ver, el servidor de prueba utiliza toda la configuración predeterminada. Al implementar sus propios servidores, debería definir valores concretos para su aplicación. Toda la configuración personalizada tiene prioridad sobre los valores predeterminados.

    Ahora puede probar su servidor. En el equipo cliente, inicie el cliente y, a continuación, haga clic en el botón Ejecutar. Debería ver un cuadro de mensaje que indica la hora del servidor. Si no puede probar correctamente este ejemplo, consulte el artículo de solución de problemas, Q269330, enumerado en la sección "Referencias".

Referencias


Para obtener información adicional relativa a las aplicaciones cliente-servidor de DCOM, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:

267836 Cómo crear un cliente o servidor DCOM con eventos mediante Visual Basic
268550 Cómo usar Dcomcnfg para una aplicación de cliente o servidor DCOM de Visual Basic
182248 Cómo usar Dcomcnfg con Windows 95 o Windows 98
269330 Cómo solucionar problemas de DCOM para aplicaciones de cliente o servidor de Visual Basic
161837 Cómo crear una aplicación DCOM de cliente o servidor con VB5