sábado, 15 de julio de 2017



MATERIA:

PROGRAMACIÓN EN AMBIENTE CLIENTE/SERVIDOR

INTEGRANTES

SALGADO PICHARDO GUADALUPE
SALGADO PICHARDO ALDO
RIOS REYES KATIA YARENI
 FLORES GUADARRAMA MARY CARMEN
FLORES BAHENA DAMIAN
 

NOMBRE DEL MAESTRO:

M.C. VÍCTOR MANUEL JACOBO ADÁN


CARRERA:
INGENIERÍA EN INFORMÁTICA




Iguala, Gro; 17 Julio 2017.
INTRODUCCIÒN


(COM) es una plataforma de Microsoft para componentes de software, introducida en 1993. Esta plataforma es utilizada para permitir la comunicación entre procesos y la creación dinámica de objetos, en cualquier lenguaje de programación que soporte dicha tecnología. El término COM es a menudo usado en el mundo del desarrollo de software como un término que abarca las tecnologías OLE, OLE Automation, ActiveX, COM+ y DCOM. Si bien COM fue introducido en 1993, Microsoft no hizo énfasis en el nombre COM hasta 1997.
Microsoft Distributed COM (DCOM) extiende COM (Component Object Model) para soportar comunicación entre objetos en ordenadores distintos, en una LAN, WAN, o incluso en Internet. Con DCOM una aplicación puede ser distribuida en lugares que dan más sentido al cliente y  a la aplicación.
Como 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.

Actualmente DCOM viene con los sistemas operativos Windows 2000, NT, 98 y  también está disponible una versión para Windows 95 en la página de Microsoft. También hay una implementación de DCOM para Apple Macintosh y se está trabajando en implementaciones para plataformas UNIX como Solaris.


4.1 CREACIÓN DE SERVIDORES

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.
La arquitectura DCOM  
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. La Figura 1 ilustra esto en la notación de COM
Los Componentes y su reutilización  
Muchas aplicaciones distribuidas no están desarrolladas
Al existir infraestructuras de hardware, software, componentes, al igual que herramientas, se necesita poder integrarlas y nivelarlas para reducir el desarrollo y el tiempo de trabajo y coste. DCOM toma ventaja de forma directa y transparente de los componentes COM y herramientas ya existentes. Un gran mercado de todos los componentes disponibles haría posible reducir el tiempo de desarrollo integrando soluciones estandarizadas en las aplicaciones de usuario. Muchos desarrolladores están familiarizados con COM y pueden aplicar fácilmente sus conocimientos a las aplicaciones distribuidas basadas en DCOM.
Cualquier componente que sea desarrollado como una parte de una aplicación distribuida es un candidato para ser reutilizado. Organizando los procesos de desarrollo alrededor del paradigma de los componentes permite continuar aumentando el nivel de funcionalidad en las nuevas aplicaciones y reducir el tiempo de desarrollo.
Diseñando para COM y DCOM se asegura que los componentes creados serán útiles ahora y en el futuro.
4.2 CREACIÒN DEL CLIENTE
El cliente debe realizar las siguientes tareas:

Iniciar la librería COM
Obtener la interfaz
Manipular el objeto a través de su interfaz
Liberar las interfaces
Finalizar la librería COM
Para iniciar la librería COM hay que llamar al método del API COM CoInitialize:
            hr = CoInitialize(NULL);
            if ( SUCCEEDED(hr) )
            {
                        ...
            }
El método CoInitialize inicializa la librería en el thread de ejecución desde el que se invoque. Es necesario llamar a CoInitialize desde cada thread de la aplicación que quiera acceder a objetos COM.

OBTENER LA INTERFAZ
Para obtener la interfaz inicial llamamos al método CoCreateInstance, este creará una nueva instancia de un objeto COM y nos devolverá un puntero a su interfaz.
            IUnknown *pIUnknown = NULL;
            hr = CoCreateInstance(CLSID_UserInfo, NULL,
                                   CLSCTX_INPROC_SERVER, IID_IUnknown,
                                   (LPVOID *)&pIUnknown);
            if (SUCCEEDED(hr))
            {....}

A través del puntero a IUnknow obtener el puntero a la interfaz IUserInfo
                        hr = pIUnknown->QueryInterface(IID-IUserInfo,
                                   (LPVOID *)&pIUserInfo);
                                   if (SUCCEEDED(hr))
                                               {\\manipulación del objeto}



LIBERAR LAS INTERFACES

para liberar las interfaces hay que llamar al método Release, si el objeto COM no tiene más interfaces referenciadas se borrara automaticamente:

            pIUserInfo->Release();
            pIUnknown->Release();

FINALIZAR LAS LIBRERIAS

La librería COM se finaliza a través del método CoUninitialize, una vez llamado a este método no se podrá seguir llamando a funciones de la librería COM ni manipulando objetos COM.
4.3 AUTOMATIZACIÒN

Basado en la Biblioteca de plantillas estándar (STL), ATL amplía el entorno de desarrollo de Visual Studio con asistentes utilizados para la automatización objeto COM. ATL facilita la programación de objetos COM para la invocación guión de páginas Active Server (ASP). ATL se puede utilizar para crear una variedad de objetos, incluyendo cuadros de diálogo y los controles de Internet Explorer. ATL soporta características de COM clave, como los controles ActiveX, interfaces duales y puntos de conexión.
4.4.- ATL (ACTIVE TEMPLATE LIBRARY)

La biblioteca de plantillas activa (ATL) es un conjunto de clases de C ++ basadas en plantillas desarrolladas por Microsoft , destinadas a simplificar la programación de objetos COM ( Component Object Model ). El soporte COM en Microsoft Visual C ++ permite a los desarrolladores crear una variedad de objetos COM, servidores de automatización OLE y controles ActiveX . ATL incluye un asistente de objetos que configura la estructura primaria de los objetos rápidamente con un mínimo de codificación manual. En el lado del cliente COM ATL proporciona punteros inteligentes que se ocupan de conteo de referencia COM. La biblioteca hace un uso intensivo del patrón de plantilla Curiosamente recurrente .

HISTORIA
Los objetos COM también se pueden crear con Microsoft Foundation Classes (MFC), pero esto conduce a binarios más grandes que requieren soporte DLL . ATL, por otro lado, es una alternativa más ligera en situaciones donde las partes gráficas de interfaz de usuario de MFC no son necesarias.

En la versión 7 de ATL (Visual Studio 2003), que tuvo éxito directo con la versión 3 (Visual Studio 6.0), varias clases MFC como CString se pusieron a disposición en ATL o más exactamente se trasladaron a una capa común ATLMFC que es compartida por ambas bibliotecas. ATL versión 7 también introdujo atributos en C + + en un intento de proporcionar algo similar a los atributos de CLI , sin embargo estos no han sido particularmente exitosos, y han sido desestimados en ATL versión 8 (Visual Studio 2005); Los distintos asistentes ya no los generan de forma predeterminada. La versión 7 también introdujo nuevas clases de conversión de cadenas.

El 28 de julio de 2009, Microsoft lanzó un parche a ATL para corregir un error que podría permitir que los controles ActiveX creados con ATL sean vulnerables a una falla de seguridad de ejecución remota de código.

Desde Visual Studio 2013, código ATL en Visual C ++ 2013 es estático, eliminando la DLL. 

viernes, 14 de julio de 2017

4.5 DCOM

DCOM

Microsoft Distributed COM (DCOM) extiende COM (Component Object Model) para soportar comunicación entre objetos en ordenadores distintos, en una LAN, WAN, o incluso en Internet. Con DCOM una aplicación puede ser distribuida en lugares que dan más sentido al cliente y a la aplicación.
Como 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.
Actualmente DCOM viene con los sistemas operativos Windows 2000, NT, 98 y también está disponible una versión para Windows 95 en la página de Microsoft. También hay una
Implementación de DCOM para Apple Macintosh y se está trabajando en implementaciones para plataformas UNIX como Solaris.
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 ).





A continuación, un gráfico nos muestra otra forma de ver los objetos COM. El objeto COM es la caja, y cada una de las interfaces son los paneles. Cada Panel tiene además un conjunto de botones que son las funciones.


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.

LA ARQUITECTURA DCOM

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 puede 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.


En los actuales sistemas operativos, los procesos están separados unos de otros. Un cliente que necesita comunicarse con un componente en otro proceso no puede llamarlo directamente, y tendrá que utilizar alguna forma de comunicación entre procesos que proporcione el sistema operativo. COM proporciona este tipo de comunicación de una forma transparente: intercepta las llamadas del cliente y las reenvía al componente que está en otro proceso.

Cuando el cliente y el componente residen en distintas máquinas, DCOM simplemente reemplaza la comunicación entre procesos locales por un protocolo de red. Ni el cliente ni el componente se enteran de que la unión que los conecta es ahora un poco más grande.
Las librerías de COM proporcionan servicios orientados a objetos a los clientes y componentes, y utilizan RPC y un proveedor de seguridad para generar paquetes de red estándar que entienda el protocolo estándar de DCOM.

VENTAJAS

DCOM se puede usar en redes de una forma muy transparente, lo que nos permite la programación a varios niveles.
Podemos aprovechar las ventajas de las DLLs (Librerías de Enlace Dinámico) en el modelo de componentes. Entre estas ventajas están:
·         Minimizar el uso de memoria de programas (al existir sólo una copia de las funciones en memoria)
·         Las actualizaciones de las librerías realizan mejoras sobre todos los programas que las usan (aunque esto es un inconveniente, pues todas las nuevas versiones deben de ser compatibles 100% con las anteriores)
·         Se pueden usar y escribir funciones de/desde distintos lenguajes de programación.
·         Sin embargo, la principal desventaja es la complejidad del tema.

OTRAS VENTAJAS
·         Independencia de la localización    
Con la independencia de localización de DCOM, la aplicación puede combinar componentes relacionados en máquinas "cercanas" entre sí, en una sola máquina o incluso en el mismo proceso. Incluso si un gran número de pequeños componentes implementan la funcionalidad de un gran módulo lógico, podrán interactuar eficientemente entre ellos.


·         Independencia del lenguaje de programación
Con la independencia de lenguaje de DCOM, los desarrolladores de aplicaciones pueden elegir las herramientas y lenguajes con los que estén más familiarizados. La independencia del lenguaje permite crear componentes en lenguajes de nivel superior como Microsoft Visual Basic, y después re implementarlos en distintos lenguajes como C++ o Java, que permiten tomar ventaja de características avanzadas como multihilo.


·         Independencia del protocolo
DCOM proporciona un marco de seguridad a todos estos protocolos.
Los desarrolladores pueden simplemente utilizar las características proporcionadas por DCOM y asegurar que sus aplicaciones son completamente independiente del protocolo.

FUNCIONES MÍNIMAS DE LOS COMPONENTES


Las siguientes son las funciones mínimas que según Orfali (ver referencia 5), debe tener un componente. (Esta definición incluye tanto lo que ofrece CORBA como lo que ofrece DCOM).

·    Un componente es una pieza empacada de software funcional en si misma que se puede comprar en un mercado de cómputo abierto.

·         Un componente puede combinarse con otros componentes para formar una aplicación completa. Está diseñado para desempeñar un conjunto limitado de tareas dentro del dominio de una aplicación. Los componentes pueden ser objetos finamente granulados tales como un objeto en C++; objetos medianamente granulados tales como un control en una interfase gráfica o objetos gruesamente granulados tales como una aplicación antigua completa.


·     Igual que los objetos del mundo real, un componente puede ser utilizado en maneras totalmente impredecibles por su desarrollador. Típicamente pueden combinarse con otros componentes de la misma familia - llamada suit - usando mecanismos de "enchufar y funcionar " (plug-and-play) .

·   Igual que cualquier objeto, un componente solo puede manipularse a través de su interfase. Sin embargo, la interfase de un componente está separada de su implementación. La interfase es el "contrato" que el componente ex-pone al mundo, Cómo instrumentar interiormente este contrato es asunto del componente. Se puede instrumentar un componente utilizando objetos, código procedural2 o mediante la encapsulación de código existente. CORBA y COM proveen un Lenguaje de Definición de la Interfase (IDL), in-dependiente de cualquier otro lenguaje de desarrollo, que se puede utilizar para especificar las interfases de los componentes. Java soporta interfases como parte del lenguaje.



·     Para enfatizar y facilitar su utilización, los componentes deben poderse agrupar en cajas o paletas de herramientas gráficas desde donde puedan ser utilizados y personalizados. La paleta es un contenedor de componentes. Además, la mayoría de las herramientas proveen lienzos (formas o ventanas) que se pueden utilizar para ensamblar los componentes utilizan-do técnicas de arrastrar y soltar (drag and drop) y otras técnicas visuales. Las formas funcionan también como contenedores visuales de componentes.

·     Un componente debe ser capaz de avisarle al mundo cuando le sucede a él alguna cosa de interés. El componente realiza esto señalando un evento. Otros componentes que tienen interés en este evento pueden suscribirse al mismo. Estos otros componentes recibirán una notificación cuando el evento se dispara. Este tipo de acoplamiento es ideal para unir componentes mediante una herramienta visual. 


·   Los componentes tienen estado. Las propiedades pueden identificar y sacar a la superficie esta información; definen las características de un componente. Una propiedad es un atributo discreto con nombre que se puede utilizar, típicamente utilizando un editor dentro de una herramienta gráfica, para leer y modificar el estado de un componente.

·   Un componente debe permitir que su interfase se pueda controlar con un lenguaje (scripting).

·       Un componente debe proveer, cuando se le requiera, información sobre sí mismo. Esto incluye una descripción de sus interfases, propiedades, eventos, calidad de servicio y las suites que soporta.

·      Un componente puede invocarse como un objeto a través de espacios de direcciones, redes, lenguajes, sistemas operativos y herramientas. Es una entidad de software independiente de cualquier sistema o aplicación. Ver siguiente figura tomada del libro de Orfali.


·          Un componente debe proveer un número limitado de operaciones para promover su utilización. En otras palabras el nivel de abstracción debe ser tan alto como sea posible para invitar a que el componente sea reutilizado. 
CONCLUSIÒN



Nuestra conclusión es sobre de COM/DCOM está diseñado para permitir que los clientes se comuniquen en forma distinta y transparente no importa donde se están ejecutando ya sea en el mismo proceso o diferente.