Como crear Clientes/Servidores en COM-DCOM

21
INSTITUTO TECNOLOGICO SUPERIOR DE COATZACOALCOS INGENIERIA EN INFORMATICA ASIGNATURA: PROGRAMACION C/S DOCENTE: I.S.C LIZBETH HERNÁNDEZ OLÁN TEMA: PROGRAMACION CLIENTE ALUMNA: ELIANA VALENTIN RUIZ GRADO Y GRUPO: 7° “B

Transcript of Como crear Clientes/Servidores en COM-DCOM

Page 1: Como crear Clientes/Servidores en COM-DCOM

INSTITUTO TECNOLOGICO SUPERIOR DE COATZACOALCOS

INGENIERIA EN INFORMATICA

ASIGNATURA: PROGRAMACION C/S

DOCENTE: I.S.C LIZBETH HERNÁNDEZ OLÁN

TEMA: PROGRAMACION CLIENTE

ALUMNA: ELIANA VALENTIN RUIZ

GRADO Y GRUPO: 7° “B

COMO CREAR CLIENTES Y SERVIDORES COM/DCOM

Page 2: Como crear Clientes/Servidores en COM-DCOM

No es necesario cambiar el código para habilitar una aplicación cliente para crear una instancia de un servidor remoto mediante DCOM. La diferencia es la forma en que empaquetar e implementar al cliente. Además, hay algunas configuraciones de seguridad que se debe hacer después de instalar el cliente y el servidor. Puede realizar estos ajustes mediante una utilidad denominada DCOMCNFG. En particular, cuando el servidor provoca eventos, no sólo son importantes la configuración del servidor, pero el cliente son demasiado.

Los pasos siguientes demuestran cómo distribuir y configurar una aplicación cliente- servidor simple. Llamar al servidor DCOMDemoEvents_Svr y el cliente DCOMDemoEvents_Cli. Crear una carpeta independiente para cada uno de ellos y, con el propósito de este artículo, nombre de las carpetas c:\DCOMDemoEvents\Server y c:\DCOMDemoEvents\Client.

Crear el servidor

1. Inicie un nuevo proyecto de Visual Basic. En el cuadro de diálogo Nuevo proyecto , seleccione EXE de ActiveXy, a continuación, haga clic en Abrir. Class1 se crea de forma predeterminada.

2. Agregue el código siguiente al módulo de Class1:

3.

4. Option Explicit

5.

6. Public Event TimeUpdate(sTime As String)

7.

8. Public Sub CallMeBack()

9. RaiseEvent TimeUpdate(Time())

10.

11. End Sub

12.

13. Public Function ServerTime() As String

14.

2

Page 3: Como crear Clientes/Servidores en COM-DCOM

15. ' this method was included just in case we need

16. ' to test a method without call back.

17. ServerTime = Time

18.

19. End Function

20. En el menú proyecto , haga clic en la opción Propiedades del proyecto .21. Seleccione la ficha General .22. En el campo Nombre de proyecto , escriba DCOMDemoEvents_Svr.23. En el campo Descripción del proyecto , escriba DCOMDemoEvents_Svr - Server.24. Seleccione la ficha componente y, a continuación, seleccione la opción

Archivos de servidor remoto .

Nota: 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. Los archivos contienen entradas del registro que deben incluirse en el equipo cliente.

25. Cierre el cuadro de diálogo Propiedades del proyecto .26. En el menú archivo , seleccione Guardar comoy, a continuación, guarde

este proyecto en la carpeta c:\DCOMDemoEvents\Server.27. En el menú archivo , seleccione Hacer DCOMDemoEvents_Svr y compile el

servidor.28. En el menú proyecto , seleccione la opción Propiedades del proyecto y,

a continuación, seleccione la fichacomponentes . En la ficha componente , seleccione Compatibilidad de versión, seleccione la opciónCompatibilidad binaria y a continuación, realice el binario de proyecto compatible con el archivo ejecutable del servidor que acaba de crear (DCOMDemoEvents_Svr.exe). Por lo que esta opción, está garantizando todos los GUID se mantienen igual si vuelve acompilar el servidor.

3

Page 4: Como crear Clientes/Servidores en COM-DCOM

Crear el cliente

1. En el menú archivo , seleccione la opción Nuevo proyecto , seleccione EXEestándary haga clic en Aceptar. Se creará Form1 de forma predeterminada.

2. En el menú proyecto , haga clic en la opción Propiedades del proyecto y, a continuación, seleccione la fichaGeneral .

3. En el campo Nombre de proyecto , escriba DCOMDemoEvents_Cli.4. En el campo Descripción del proyecto , escriba DCOMDemoEvents_Cli proyecto

- clientey, a continuación, haga clic en Aceptar para cerrar el cuadro de diálogo Propiedades del proyecto .

5. En el menú proyecto , seleccione referenciasy agregue una referenciaa DCOMDemoEvents_Svr - Server.

6. En la sección General Declarations de Form1, incluya la línea siguiente:

7.

8. Dim WithEvents MyEventObj As DCOMDemoEvents_Svr.Class1

Esto declara el objeto de servidor con los eventos. Después de escribir en esta línea, debería ver MyEventObj en la lista de objetos para este formulario. La lista de objetos del formulario se encuentra en el cuadro combinado superior izquierda en el módulo de código del formulario.

9. En la lista de objetos del formulario, seleccione MyEventObj. El vacío se creaMyEventObj_TimeUpdate Sub.Escriba en la siguiente línea de código:

10.

11. MsgBox "Event from Server received. Time=" & sTime

Page 5: Como crear Clientes/Servidores en COM-DCOM

12. Ponga un botón command en Form1 y cambie el título del botón a Ejecutar con eventos.

13. Coloque el código siguiente en el botón, haga clic en evento:

14.

15. On Error GoTo err1

16.

17. Set MyEventObj = CreateObject("DCOMDemoEvents_Svr.Class1")

18. MyEventObj.CallMeBack

19. Exit Sub

20.

21. err1:

22. MsgBox "Error: " & Err.Number & " - " & Err.Description

23. Coloque un segundo botón de comando en Form1 y cambie el título del botón a Ejecutar sin eventos.

24. Coloque el código siguiente en el botón, haga clic en evento:

25.

26. Dim MyObj As DCOMDemoEvents_Svr.Class1

27.

5

Page 6: Como crear Clientes/Servidores en COM-DCOM

28. On Error GoTo err1

29.

30. Set MyObj = CreateObject("DCOMDemoEvents_Svr.Class1")

31. MsgBox "Server time without events: " & MyObj.ServerTime

32. Exit Sub

33. err1:

34. MsgBox "Error: " & Err.Number & " - " & Err.Description

35. Una vez haya hecho esto, el código del formulario debe ser similar al siguiente:

36.

37. Option Explicit

38. Dim WithEvents MyEventObj As DCOMDemoEvents_Svr.Class1

39.

40. Private Sub Command1_Click()

41.

42. On Error GoTo err1

43.

44. Set MyEventObj = CreateObject("DCOMDemoEvents_Svr.Class1")

45. MyEventObj.CallMeBack

46. Exit Sub

47. err1:

6

Page 7: Como crear Clientes/Servidores en COM-DCOM

48. MsgBox "Error: " & Err.Number & " - " & Err.Description

49.

50. End Sub

51.

52. Private Sub Command2_Click()

53. Dim MyObj As DCOMDemoEvents_Svr.Class1

54.

55. On Error GoTo err1

56.

57. Set MyObj = CreateObject("DCOMDemoEvents_Svr.Class1")

58. MsgBox "Server time without events: " & MyObj.ServerTime

59. Exit Sub

60. err1:

61. MsgBox "Error: " & Err.Number & " - " & Err.Description

62.

63. End Sub

64.

65. Private Sub MyEventObj_TimeUpdate(sTime As String)

66. MsgBox "Event from Server received. Time=" & sTime

67.

68. End Sub

7

Page 8: Como crear Clientes/Servidores en COM-DCOM

69. En el menú archivo , seleccione Guardar comoy, a continuación, guarde el proyecto en la carpeta del cliente, c:\DCOMDemoEvents\Client.

70. Presione el botón F5 para ejecutar al cliente en el IDE y probarlo. Tenga en cuentaque esta prueba es local para el equipo de desarrollo en este momento. Se está ejecutando el servidor local de archivo EXE de ActiveX.

71. En el menú archivo , seleccione Hacer DCOMDemoEvents_Cli para compilar al cliente y, a continuación, cierre Visual Basic.

Empaquetar el servidor

Utilice el Asistente de empaquetado y distribución para empaquetar como de costumbre el servidor para su distribución. El servidor se crea una instancia de un cliente remoto mediante DCOM. Al crear el paquete para el servidor, aparece un cuadro de diálogo preguntando si este servidor se utilizará como servidor de automatización remota y si desea incluir archivos de compatibilidad para este propósito. Haga clic en NO sólo porque DCOM no es la automatización remota. Automatización remota es una tecnología antigua que reemplazó DCOM.

Empaquetar el cliente

Al empaquetar el cliente, hay algunos pasos específicos que deben realizarse, teniendo en cuenta que el servidor no se ejecuta en el mismo equipo que el cliente. Los cambios realizados al paquete del cliente garantizan que se instala la biblioteca de tipos (archivo .tlb) y algunas entradas del registro adicionales se incluyen en lugar del archivo ejecutable del servidor en el equipo cliente. No es necesario el ejecutable del servidor instalado en el equipo del cliente porque no va a ejecutarse allí.

Emp a q ueta r a l c lie nt e s ig uie nd o es to s pa so s :

1. Iniciar el Asistente de empaquetado y distribución y, a continuación, seleccione el proyecto del cliente. Haga clic en el botón de paquete .

2. En el cuadro de diálogo Tipo de paquete , seleccione el Paquete de instalación estándary, a continuación, haga clic en siguiente.

3. En el cuadro de diálogo Carpeta de paquete , seleccione la carpeta donde estáalmacenado el paquete y, a continuación, haga clic en siguiente. En este caso, es c:\DCOMDemoEvents\Client\Package.

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

Page 9: Como crear Clientes/Servidores en COM-DCOM

Ahora debe ser en el cuadro de diálogo de Archivos incluidos .

8

Page 10: Como crear Clientes/Servidores en COM-DCOM

Desactive el archivo ejecutable del servidor, DCOMDemoEvents_Svr.exe. No desea distribuir la aplicación ejecutable del servidor.

4. Haga clic en el botón Agregar y cambiar el cuadro combinado de Tipo de archivo a Archivos de servidor remoto (*.vbr).

5. Seleccione la carpeta donde tiene el proyecto del servidor, en este caso, c:\DCOMDemoEvents\Server y, a continuación, seleccione el archivo VBR relacionado DCOMDemoEvents_Svr.VBR.

6. Haga clic en Abrir y la cierra el cuadro de diálogo Agregar archivo . Nota que se incluyen dos archivos, DCOMDemoEvents_Svr.VBR y DCOMDemoEvents_Svr.TLB. Haga clic en siguiente.

7. En el cuadro de diálogo Servidores remotos , defina el nombre del equipo(dirección de red) donde se ejecutará el servidor.

Normalmente mantiene este campo en blanco porque puede que no sepa de antemano donde está instalado el servidor. Si mantiene en blanco, se le pedirá para él al instalar el cliente. Para este ejemplo, manténgalo en blanco.

Haga clic en siguiente para continuar. Ahora puede continuar con los procedimientos estándar para el Asistente de empaquetado y distribución. En nuestro ejemplo, haga clic en siguiente para todos los demás cuadros de diálogo.

Insta la r e l se rvido r

Instale al servidor en el equipo en el que desea ejecutarlo, utilizando el paquete de 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 automáticamente cuando compila el servidor.

Insta la r e l c lie nt e

Instale al cliente en el equipo en el que desea ejecutarlo, utilizando el paquete de distribución que creó anteriormente.Dado que este cliente utiliza un servidor DCOM y dejó la ubicación real del servidor en blanco cuando creó el paquete de distribución, ahora debe proporcionar esta ubicación. Cuando el programa de instalación le pida esta ubicación, proporcione el nombre del equipo donde instaló el servidor.

Page 11: Como crear Clientes/Servidores en COM-DCOM

9

Page 12: Como crear Clientes/Servidores en COM-DCOM

Esta b le ce r l a se g urid ad de l se rvido r

Si instaló al servidor en un equipo con Microsoft Windows NT o Microsoft Windows2000, necesitará configurar su seguridad. Hacerlo mediante DCOMCNFG, como se muestra en los pasos siguientes, que se suponen que los equipos cliente y servidorforman parte de un dominio, y el usuario ha iniciado sesión en el equipo cliente hainiciado sesión como un usuario de dominio. La configuración sugerida es simplemente una posible configuración. Son muy genéricas y proporciona un acceso extenso al servidor. Recuerde que esto es sólo un ejemplo. Al implementar sus aplicaciones reales y la seguridad es una preocupación para su entorno, debería seleccionar opciones más restrictivas. Además, si el equipo que está utilizando para probar este servidor de ejemplo se utiliza para ejecutar otros servidores, tome nota de la configuración actual antes de realizar los siguientes cambios y volver a la configuración original en cuanto termine con las pruebas.

1. En el equipo servidor, haga clic en el botón Inicio y, a continuación, seleccione Ejecutar. En el cuadro de diálogoEjecutar , escriba DCOMCNFGy, a continuación, haga clic en Aceptar. Debe tener derechos de administrador para poder ejecutar DCOMCNFG.

2. Seleccione la ficha Propiedades predeterminadas y compruebe que HabilitarCOM distribuido en este equipoestá activada.

3. Establecer el nivel de autenticación predeterminado para Conectary establecer el nivel de representación predeterminado para identificar.

4. Seleccione la ficha Seguridad predeterminada .5. Haga clic en el botón Modificar 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. Cuando la lista esté completa, haga clic en Aceptar .

7. Haga clic en el botón Modificar 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. Cuando la lista esté completa, haga clic en Aceptar .

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 predeterminado dey, a continuación, seleccione la ficha ubicación . La única opción activada debe ejecutar la aplicación en este equipo.

11. Seleccione la ficha seguridad y compruebe que están activadas las opciones Usar permisos de inicio predeterminado y utilizar permisos de acceso predeterminados .

12. Seleccione la ficha identidad , seleccione el usuario que inicia la opción, haga clic

Page 13: Como crear Clientes/Servidores en COM-DCOM

en Aceptar para cerrar el cuadro de diálogo Propiedades del servidor y, a

10

Page 14: Como crear Clientes/Servidores en COM-DCOM

continuación, haga clic 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 está listo para probar el servidor. En el equipo cliente, inicie al 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, vea el artículo para solucionar problemas, Q269330, enumerado en la sección "Referencias".

Esta b le ce r l a se g urid ad de l c lie nt e

Porque el servidor DCOM expone eventos que utiliza la aplicación cliente, también debe establecer permisos de DCOM en el equipo cliente para permitir que el servidor realizar devoluciones de llamadas al cliente. Si el servidor DCOM no expone eventos o si la aplicación cliente no me consumen eventos, no tiene que realizar este paso.

1. En el equipo cliente, haga clic en Inicioy, a continuación, haga clic para seleccionar Ejecutar.

2. En el cuadro de diálogo Ejecutar , escriba DCOMCNFGy, a continuación, haga clic en Aceptar.

Debe tener derechos de administrador para ejecutar DCOMCNFG.

3. Haga clic en la ficha Propiedades predeterminadas y, a continuación, compruebe que está seleccionadoHabilitar COM distribuido en este equipo .

4. Establecer el Nivel de autenticación predeterminado para Conectary, a continuación, establezca el Nivel de representación predeterminado para identificar.

5. Haga clic en la ficha Seguridad predeterminada .

6. Haga clic en el botón Modificar predeterminados en el panel Permisos de acceso predeterminados .

11

Page 15: Como crear Clientes/Servidores en COM-DCOM

7. Compruebe que todos y sistema están incluidos en la lista con Derechos de acceso permitir. Si no están incluidos en la lista, utilice el botón Agregar para agregarlos a la lista. Cuando la lista esté completa, haga clic enAceptar .

12