Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


 Prev.

1.7.1  Tecnicismos -II-


§3  API

Un acrónimo muy usado en la literatura informática: API (Application Programmer Interface). Se refiere a cualquier especificación que define como debe ser utilizada una determinada característica de la máquina por parte del programador. Como generalmente este no utiliza la máquina "a pelo", sino a través de un capa intermedia de software, lo normal es que sea esta última la que define el marco o entorno (API)  que deberá utilizar el programador.

Existen APIs para Windows  ( 1.7.2), sistemas de ficheros, bases de datos, redes, etc. Dicho en otras palabras: la API es la interfase entre un sistema y el programador que escribe una aplicación para correr en él.

A efectos prácticos la API se concreta en un conjunto de librerías y reglas de uso que podemos usar en nuestros programas para acceder de una forma estándar a los recursos del sistema subyacente.  En algunos casos, por ejemplo, en la API de Windows, estas reglas imponen su propio estilo de programación así como una arquitectura muy específica para los programas que deban correr en él.  Esta circunstancia se ve reforzada porque en este tipo de Sistemas, el programador está bastante alejado del hardware subyacente, y prácticamente cualquier cosa que necesite debe solicitarla al Sistema como un "servicio" que debe ser solicitado y recibido, siguiendo un protocolo muy estricto.

§4  OLE

Una arquitectura de documentos compuestos de Microsoft para su sistema Windows.

Presentado en 1991 bajo el nombre "Object Linking and Embedding" (enlace y vinculación de objetos), en realidad es un estándar para compartir datos complejos entre aplicaciones. Mas tarde, bajo el nuevo estándar OLE 2.0, su nombre se redujo únicamente a las iniciales; actualmente sobrevive repartido entre diversos nombres y tecnologías como COM, COM+, DCOM, ActiveX y ATL.

§5 COM

Es el acrónimo de "Component Object Model", una invención de Microsoft. Desde sus comienzos, históricamente el Sistema Operativo Windows ha sido poco (o nada) orientado a objetos y bastante intrincado; el desarrollo de aplicaciones para este sistema se ha basado en funciones y estructuras de datos C++ encapsulados en una API muy extensa y compleja. Cada utilidad tenía un área de actuación definida, una librería dinámica (.DLL) de servicio específica y unas convenciones de llamada particulares, a veces sumamente farragosas.

Desde los "lejanos" días del nacimiento de Windows, la tecnología de software ha evolucionado bastante, sobre todo porque los sistemas son cada vez menos autistas y están más interconectados; ha habido una explosión de la tecnología de redes (intranets) y últimamente de la tecnología IP (Internet), evolución que tiene su correspondencia en un cambio de la metodología de hacer software, en el que se imponen nuevos paradigmas.

El almacenamiento y tratamiento de la información ha ganado en complejidad, imponiéndose una arquitectura modular (de componentes) y transaccional, dos conceptos clave, junto con los de cliente/servidor, en la nueva arquitectura de software. Las aplicaciones se basan en componentes (se llega a hablar de componentware); objetos que interactúan con otros conjuntos de objetos, del Sistema Operativo, o de otras aplicaciones, locales o remotas.

Nota: en el fondo, la razón de este cambio de paradigmas en el desarrollo del software, tiene su origen en que cada vez cobran más importancia las comunicaciones entre aplicaciones y entre los distintos módulos que las componen. Esto se refiere tanto a aplicaciones y módulos que se ejecutan en el mismo sistema, como las que que se ejecutan en máquinas distintas.


Como no podía ser menos, el Sistema Operativo del gigante de Redmond ha evolucionado paralelamente. A un primer paso, presentado en 1.991 bajo las siglas OLE (Object Linking and Embedding) siguió una generalización denominada COM (Component Object Model).

Se trata de un modelo de software cliente/servidor que permite la interacción entre componentes software y las aplicaciones.  El punto importante de esta tecnología es que permite la comunicación entre clientes y servidores mediante interfaces normalizadas.   Estas interfaces están materializadas en librerías, denominadas librerías de tipos  ( 1.4.4b2d), que proporcionan un medio estándar para que los objetos pasen punteros de modo local o remoto (a través de redes).

En realidad COM nació por la necesidad de un mecanismo que permitiese que un elemento de software ofreciera servicios a otro (esta es la base filosófica del componentware y el concepto que se usa de forma cada vez más generalizada);   Aunque OLE fue la primera herramienta que lo utilizó, el concepto va mucho más allá de permitir el intercambio de documentos complejos entre aplicaciones; en el fondo la idea es un mundo de objetos independiente de un lenguaje de programación concreto [3]. De hecho, los objetos COM pueden escribirse en cualquier lenguaje (Java, C++, Pascal etc.) e implementarse en sus propios ejecutables o bajo la forma de librerías .DLL. A un cliente que esté utilizando un objeto COM le es indiferente en que lenguaje se ha escrito o como esté implementado, si se está ejecutando en una .DLL o en un proceso separado. Es decir: el usuario se encuentra en la misma posición que la del programador C++ que utiliza una clase de librería de la que solo le interesa su interfaz, no sus detalles internos.

§6  DCOM

La evolución tuvo su continuación natural en DCOM, COM-distribuido (Distributed Component Objetc Model). Un paso en la evolución del COM de Microsoft para su plataforma Windows. Con la misma filosofía que aquel, pero pensado para que el sistema pueda funcionar bajo cualquier tipo de red, ya sea LAN, WAN o Internet [4], de forma que se solucionasen los múltiples problemas que añaden estos entornos [1].  DCOM es capaz de transferir la petición de un objeto local a uno remoto ejecutándose en una máquina diferente.

Si bien en sus principios DCOM solo estaba disponible para Windows 95/98 y NT, actualmente existen también implementaciones Unix. Junto con CORBA y Java RMI, DCOM es uno de los tres principales sistemas o modelos de objetos distribuidos. Software AG, Digital y HP lo están transportando a plataformas no Windows.

Al mismo tiempo, el modelo de programación hacia el que se evoluciona, propició la aparición del denominado MTS (Microsoft Transaction Server). Un software que se ejecuta bajo la forma de servicios del sistema; un conjunto de servicios diseñados para integrar los objetos COM en un modelo mayor de cómputo distribuido, en el que MTS ofrece un background transaccional y un modelo de programación orientado a objetos COM.

COM+, COM plus, son las extensiones a COM introducidos con Windows 2000. Integran la tecnología que existía previamente de forma separada como MTS en los servicios estándar COM.

El resultado de toda esta evolución que empezó con OLE, es una nueva capa de software situada sobre el antiguo corazón del sistema; un sistema operativo dentro del sistema operativo, como se le ha denominado en ocasiones, que si presenta características de orientación a objetos así como una amplia colección de estos. Actualmente una auténtica plataforma software que basa su filosofía y su potencia en la encapsulación de código dentro de objetos y en ofrecer una especificación y una implementación para la interoperabilidad de dichos objetos. Así, esta tecnología afecta cada vez más a las aplicaciones Windows, permitiendo una comunicación e interacción más sencilla entre ellas, de forma que la mayoría de las operaciones que realiza el PC están controlada en algún momento por COM, desde el uso del portapapeles al navegador.

Nota:  Si todas estas siglas le parecen una sopa de letras no se preocupe, acabo de leer [7] que este galimatías tiene incluso su propio nombre:  MINFU ("Microsoft Nomenclature Foul-UP").

§7  ActiveX

Contra lo que pudiera parecer, ActiveX no hace referencia a una tecnología bien definida, de hecho "ActiveX es un nombre de marca (de Microsoft), como Calvin Klein o Ford. Y tal como ocurre con cualquier nombre de marca, aquello a lo que se aplica puede variar con el tiempo" [2].

Todas las tecnologías ActiveX se basan en el Component Object Model COM de Microsoft, pero no puede decirse que ActiveX sea algo que engloba todas las tecnologías COM;  todo lo más que podría afirmarse es que ActiveX es un conjunto mal definido de tecnologías con base COM.

Veamos ahora que es ActiveX en opinión de la propia Microsoft [11]:

Un término que engloba tecnologías de Microsoft que permiten a los programadores crear contenido interactivo para World Wide Web. Un conjunto de tecnologías de interoperabilidad independientes del lenguaje que permiten que los componentes de software escritos en diferentes lenguajes funcionen juntos en entornos de red. Los elementos fundamentales de la tecnología ActiveX son el Modelo de objetos componentes (COM) y el Modelo de objetos componentes distribuido (DCOM). La organización de estándares The Open Group tiene licencia para estas tecnologías, que se están implementando en múltiples plataformas.

§8  .NET

.NET es lo que en español denominaríamos un marco o ambiente de desarrollo ("Application framework"). Un entorno para desarrollar y ejecutar aplicaciones "made in" Microsoft y presentado, como es costumbre de la casa, bajo un apabullante despliegue publicitario. Como todo lo que está "In" (2005), tiene que ver con la informática distribuida, la conectividad y la portabilidad: Internet; intranets; redes corporativas, Etc.

La plataforma dispone de sus propios lenguajes, creados expresamente o adaptados de versiones clásicas. C#  (C sharp) ha sido concebido especialmente para su uso en esta plataforma, mientras que ASP.NET o VB.NET (entre otros) son adaptaciones de la tecnología tradicional de Páginas Activas de Servidor (ASP) y de Visual Basic al nuevo entorno. En lo tocante a aplicaciones, con el fin de dotarla de contenidos, Microsoft se ha apresurado a trasladar sus aplicaciones punteras; por ejemplo, Office.NET. Seguramente asistiremos a una avalancha de transformaciones de todo bicho (digital) viviente a punto-NET.

El "porqué" de este deslumbrante "invento" de Microsoft hay que buscarlo en Java y en los contenciosos jurídicos que MS ha mantenido con Sun, la empresa desarrolladora y propietaria de Java. Realmente la idea era genial;  la Máquina Virtual Java (MVJ) proporciona una plataforma unificada que funciona igual sobre cualquier sistema, lo que permite simplificar el portazgo de aplicaciones. De hecho, creó en su momento una gran expectación en la comunidad informática.  Microsoft intentó enseguida apropiarse de la idea y tergiversarla (haciendo su propia máquina virtual Java que no era totalmente compatible con el estándar dictado por Sun). Como los tribunales no le dejaron hacerlo, decidió desarrollar su propia versión de la idea. En este caso el entorno de ejecución se denomina CLR, e implementa algunas mejoras sobre Java. Las principales, que no está supeditada a un solo lenguaje (las aplicaciones para MVJ deben estar escritas en Java) y que representa otra opción (en informática, como en biología, la diversidad es deseable). El asunto en sí mismo no debería presentar inconvenientes, sin embargo, dado lo especialísimo de la compañía promotora, sí puede suponer un serio peligro para algunos integrantes del ecosistema informático, donde algunos pequeños organismos habían empezado a encontrar su sitio en rincones oscuros y alejados de la atención del Cíclope.

En lo tocante a estrategia comercial, la historia se repite [13]. ¿Se acuerdan de Netscape, el navegador que se vio eclipsado porque Microsoft empezó a proporcionar gratis su I. Explorer?. Ahora la empresa de Redmond ha empezado a distribuir una versión gratuita de ASP.NET denominada Web Matrix, que pretende segar la hierba bajo los piés de PHP.  Por si esto fuera poco, en vista de que MySQL estaba empezando a conseguir un pedazo del pastel más que importante, también ha liberado MSDE, una versión gratuita de MS SQL server 2000... Ahora que el gigante ha fijado su mirada en ellos, ¿Tendremos la desgracia de asistir al funeral de esta simpática compañía sueca?

  Inicio.


[1]  El conjunto de servicios MTS diseñados para integrar COM en un sistema de cómputo distribuido, incluye no solo servicios para manejar los recursos del Sistema Operativo; también seguridad; procedimientos para llamadas remotas utilizando el protocolo RPC (Remote Procedure Call) del DCE (Open Group's Distributed Computing Environment);  Para la seguridad distribuida DCOM utiliza el protocolo NT LAN manager (NTLM), y para los servicios de directorio, el Sistema de Nombres de Dominio DNS (Domain Name System).

[2]  "Desmitificar Active X", por D. Chappell y D. S. Linthicum; Byte España num. 34. Un hermoso artículo con abundantes referencias históricas sobre el tema.

[3]  Por esta razón, cuando decimos "un objeto COM" no nos referimos exactamente al mismo concepto que cuando en C++ u otro lenguaje orientado a objetos nos referimos a la instancia de una clase.

[4]  LAN (Local Area Network) Red de área local; se usa en contraposición al concepto WAN (Wide Area Network) Red de área extensa. La Internet es una WAN que utiliza un protocolo de comunicaciones específico, TCP/IP.

[7]  David S. Platt "Así es Microsoft .NET". McGraw-Hill  1 Ed. 2001 Madrid. ISBN 84-481-3251-3

[11]  Según aparece en la documentación de MS Personal Web Server para Windows 98.

[13]  Este capítulo de la historia informática ocurrió a finales de los 90 y alguien lo ha denominado la WWI (Web War I)

 Prev.