4.1. CREACIÓN DE SERVIDORES COM. 


Microsoft Distributed COM (Component Object Model) sirve para soportar comunicación entre objetos en ordenadores distintos, en una LAN, WAN, o incluso en Internet.

DCOM es una extensión de COM, y éste define como los componentes y sus clientes interactúan entre sí. Esta interacción es definida de tal manera que el cliente y el componente pueden conectar sin la necesidad de un sistema intermedio. El cliente llama a los métodos del componente sin tener que preocuparse de niveles más complejos.

 DCOM es una evolución lógica de COM, se pueden utilizar los componentes creados en aplicaciones basadas en COM, y trasladarlas a entornos distribuidos. DCOM maneja detales muy bajos de protocolos de red, por lo que uno se puede centrar en la realidad de los negocios: proporcionar soluciones a clientes.


SERVIDOR


Es una aplicación que ofrece un servicio a usuarios de Internet, el servidor es un programa que recibe una solicitud, realiza el servicio requerido y devuelve los resultados en forma de una respuesta. Generalmente un servidor puede tratar múltiples peticiones (múltiples clientes) al mismo tiempo.


1.1 Los clientes mandan peticiones a los servidores solicitando una respuesta , el servidor escucha la petición y envía una respuesta a la petición del cliente 


Las funciones que lleva a cabo el proceso servidor se resumen en los siguientes Puntos

• Aceptar los requerimientos de bases de datos que hacen los clientes. 
• Procesar requerimientos de bases de datos. 
• Formatear datos para trasmitirlos a los clientes. 
• Procesar la lógica de la aplicación y realizar validaciones a nivel de bases de datos.


El uso de los componentes COM es un claro ejemplo de la arquitectura Cliente/Servidor. El objeto COM en sí es el servidor, y es usado por un programa que hace de cliente. Existen varias formas de realizar la comunicación. Podemos encontrar los componentes como partes de un ejecutable (como el caso de los productos de Microsoft Office, o si implementamos nuestro propio componente y lo incluimos con un programa que los use), dentro de una librería de enlace dinámico (DLL) o incluso en otra máquina (DCOM).



Tipos de Servidores COM
Anteriormente hemos visto que existen varios tipos distintos de servidores COM. Entre ellos están los objetos COM que se “alojan” en DLLs, los que se alojan en un ejecutable y los que se alejan en otra máquina de una red. Vamos a ver el problema de la comunicación entre cliente y servidor (para el paso de parámetros).

SERVIDORES COM EN DLL
Esta es la forma más sencilla de funcionamiento del modelo COM. Cliente y Servidor comparten un espacio de direcciones y un mapa de memoria. La carga del objeto COM desde el DLL se hace de forma transparente al usuario. La comunicación se puede realizar con el paso de parámetros normal fijado para una DLL (incluyendo eso sí, como parámetros también, un puntero a la instancia del objeto).
Es el programa cliente el que realiza la creación de memoria para comenzar la creación del objeto COM. Al entrar en ejecución el constructor del objeto, éste podría realizar peticiones de memoria dinámica.

SERVIDORES COM EN EXE
Son llamados servidores locales. Se ejecutan en el mismo ordenador que el cliente, pero en procesos distintos. La comunicación la gestiona el sistema operativo. No hace falta que esté el ejecutable del servidor funcionando, pues el sistema es capaz de ejecutarlo. El “exe” contiene una parte que se encarga de la gestión de memoria inicial que requieren los objetos COM.

SERVIDORES COM REMOTOS O DCOM
Cliente y servidor se encuentran en ordenadores distintos. La comunicación la gestiona el sistema operativo. Internamente, Microsoft usa el protocolo RPC para realizar la comunicación. Sin embargo, el programa servidor debe de estar ejecutándose.
A la hora de la práctica, hay poca diferencia en la programación. Las funciones miembros se llaman de la misma forma, los objetos se crean prácticamente igual (en servidores remotos se usa la función CoCreateInstanceEx, la cual tiene un parámetro que identifica al ordenador servidor). Pero, si los objetos se usan igual, ¿cómo se puede conseguir entonces el efecto de llamadas a función? Es decir, ¿cómo podría usarse?


Objeto1->Funcion1 (parámetros);

El cliente no tiene constancia entonces de que tiene establecer una conexión por red. Es el sistema operativo el que tiene que poner un proxy que “simule” que las funciones están accesibles. Y la llamada a la Funcion1 realmente estará llamando a una función local gestionada por el sistema operativo que realice la comunicación con el otro extremo.



REFERENCIAS:




Wikipedia. (12 de Marzo de 2016). wikipedia. Recuperado el 15 de Julio de 2017, de wikipedia: https://en.wikipedia.org/wiki/Active_Template_Library