Compartir a través de


Introducción

 

Introducción

Brent Rector
Wise Owl Consulting

Octubre de 2003

Contenido

Acerca de lo que trata este libro
    Modelo de aplicación "Longhorn"
    Informática y seguridad de confianza
    Almacenamiento enriquecido y acceso a datos
    Comunicación y colaboración
    Presentación enriquecida y medios
Lo que encontrará en este libro

Como desarrollador de software de muchos, muchos años, he escrito programas para numerosas plataformas y sistemas operativos, todos los cuales tenían sus ventajas y desventajas. Por lo general, la mayoría de las plataformas y sistemas operativos eran similares a sus predecesores con mejoras incrementales.

Hasta la fecha, Microsoft® Windows® ha evolucionado de esta manera. Inicialmente, escribir una aplicación de Windows significaba programar en la API de Microsoft Win32®. (En realidad, fue la API de Win16 a la vez, pero conceptualmente son las mismas). Microsoft diseñó la API de Win32 como una API de procedimientos plana a la que pueden llamar los programas de C. A la vez, el libro de Charles Petzold Programming Windows, que introdujo esta API, era necesario leer para cualquier desarrollador de aplicaciones de Windows.

Lo bueno de la API de Win32 es que te permite hacer prácticamente todo lo que quieras. (Lo menos bonito es que casi debes hacer todo lo que quieras). Obtienes el primer descifrado en todos los mensajes de Windows y puedes responder a los eventos que indican de cualquier manera adecuada (o inapropiada). Puede modificar la memoria (la memoria de su propio proceso o incluso la memoria de otro proceso), pero quiere permitir la seguridad. Puede dibujar una ventana de la forma que quiera. Su trabajo es simplemente para obtener los bits correctos a la pantalla en los lugares correctos en los momentos adecuados.

El diseño de Windows en sí es realmente bastante orientado a objetos. Los objetos de ventana se manipulan, se usan lápices gráficos, etc. Sin embargo, puede realizar estas operaciones llamando a las API correctas (fuera de los miles disponibles) en el orden adecuado y pasando los tipos de datos adecuados, principalmente sin ayuda del compilador cuando se produce un error.

Cuando Microsoft lanzó Por primera vez Windows y durante varios años después, los desarrolladores de software normalmente escribieron aplicaciones monolíticas y aisladas. Los desarrolladores no tenían componentes de los que componer aplicaciones y ningún mecanismo que admita la composición; además, las aplicaciones no intentaron comunicarse con otras aplicaciones en el mismo sistema, mucho menos con una aplicación en un equipo diferente.

En 1993, Microsoft introdujo el Modelo de objetos componentes (COM). Microsoft diseñó COM como intento de resolver los dos problemas siguientes. COM introdujo un estándar binario para que los componentes, generados por diferentes compiladores de lenguaje de origen, pudieran interoperar mediante definiciones de interfaz inmutables. El protocolo de red COM distribuido (DCOM) permite que estos componentes interactúen entre los límites del proceso y de la máquina.

Muchas de las API de Windows que Microsoft introdujo después de 1993 son API basadas en COM. Dos ejemplos son las API de extensiones de Microsoft DirectX® y Shell. En la actualidad, Windows tiene más de 10 000 API diseñadas por muchos desarrolladores diferentes en muchos equipos diferentes con objetivos diferentes. Como resultado, Windows expone algunas de las API como puntos de entrada de lenguaje C planos en una biblioteca de vínculos dinámicos (DLL). Expone otras API como un conjunto de interfaces COM complejas e interactúan. Hay otras API a las que accede mediante otras tecnologías.

En la práctica, usted, el desarrollador, quiere que un sistema operativo le proteja de la mayor parte de esta complejidad la mayor parte del tiempo. Por lo tanto, muchos equipos diferentes, dentro de Microsoft y fuera, desarrollaron varias bibliotecas de marcos para simplificar el desarrollo de aplicaciones. Algunas bibliotecas de marcos populares son Microsoft Foundation Classes (MFC), la Biblioteca de plantillas de Microsoft ActiveX (ATL), la biblioteca de Microsoft Visual Basic®, la biblioteca de Windows de objetos de Borland (OWL) y, sin duda, muchas otras.

MFC, por ejemplo, intenta encapsular las distintas idiosincrónicas de la API de Win32 con un conjunto coherente y orientado a objetos de clases de C++. Cuando el lenguaje de programación que prefiera es C++ y las bibliotecas de MFC admiten directamente lo que desea hacer, su trabajo es fácil. Sin embargo, cuando quiere algo ligeramente fuera de la corriente estándar, está principalmente por su cuenta y, de hecho, en una forma peor que antes porque ahora tiene que averiguar cómo usar las API de Win32, además de hacer que el trabajo interopera con las clases MFC existentes.

ATL permite escribir objetos COM extremadamente eficientes y, en menor medida, las aplicaciones de Windows que usan clases ocultas y (para muchos desarrolladores) mal comprendidas en C++. No es un extremo decir que podría terminar fácilmente con objetos altamente eficientes que nadie pueda entender.

El equipo de Visual Basic de Microsoft ha tomado un enfoque diferente. Encapsulan el acceso a la API de Win32 en un lenguaje y una biblioteca fáciles de aprender y usar, pero a costa de quitar la funcionalidad y las opciones. Visual Basic hace que sea extremadamente sencillo generar componentes para aplicaciones y aplicaciones que usan estos componentes. Sin embargo, Visual Basic no permite obtener acceso completo a todo lo que ofrece la API de Win32. A veces, el desarrollador de Visual Basic simplemente no puede realizar una tarea debido a las restricciones impuestas por el entorno de desarrollo elegido.

A principios de mediados de los años 990, la World Wide Web se despegó. Los equipos empezaron a conectarse cada vez más. Inicialmente, un explorador web simplemente representaba HTML estático y la exploración de la Web era muy similar a mirar una página de revista.

Cuando Microsoft lanzó Internet Explorer 4 en 1997, surgen otras posibilidades. Los desarrolladores podrían crear archivos HTML que contengan script más marcado. Los objetos del modelo de objetos HTML obtuvieron comportamientos y podría escribir scripts que respondieron a eventos y proporcionaron un comportamiento personalizado. Las páginas HTML ahora podrían reaccionar ante eventos de usuario en el cliente y responder mucho más rápidamente que las aplicaciones basadas en web anteriores que requerían un recorrido de ida y vuelta al servidor para cada actualización de pantalla.

Una gran ventaja de las aplicaciones web era que podía implementar fácilmente la aplicación simplemente copiando un conjunto de archivos en un servidor. La próxima vez que un cliente examine la aplicación, interactúó con la versión más reciente.

Otra gran ventaja de las aplicaciones web fue la compatibilidad integrada para la integración de medios enriquecidos. El diseño de página basado en flujo y la compatibilidad con varias fuentes, gráficos y contenido multimedia es mucho más fácil proporcionar a través de una aplicación web que actualmente se encuentra a través de una aplicación Win32, independientemente del marco que use.

Sin embargo, en general, sigue siendo difícil escribir aplicaciones web hoy en día porque el lenguaje de programación y la compatibilidad con bibliotecas para estas aplicaciones está limitado. La depuración de aplicaciones web suele ser una pesadilla. De muchas maneras, la experiencia del usuario cliente todavía no es tan enriquecida como la proporcionada por las aplicaciones cliente basadas en la API de Win32 debido al conjunto limitado de controles disponibles para las aplicaciones web.

A finales de la década de 1990, un desarrollador de Windows a menudo tenía que especializarse. Era un programador de API de Win32 y podía escribir cualquier tipo de aplicación cliente lentamente. Como alternativa, era desarrollador de Visual Basic y podía escribir aplicaciones de interfaz de usuario (UI) relativamente enriquecidas y basadas en formularios rápidamente, pero no podía escribir ciertos otros tipos de aplicaciones en absoluto. Un desarrollador de MFC algo estrató estos dos extremos, aunque en la práctica, era necesario ser un desarrollador de C++ experto que estaba familiarizado con la API de Win32 para ser un buen desarrollador de MFC. A menudo, los desarrolladores de objetos COM y ATL eran los fontaneros de un sistema y proporcionaban componentes para que estos otros desarrolladores reutilizaran.

En 2000, Microsoft introdujo .NET. La definición de lo que es exactamente .NET es diferente en función de quién pregunte. En mi opinión, .NET es una plataforma de desarrollo de software moderna para producir, más rápidamente de lo que antes podía, corregir y proteger las aplicaciones windows que usan las tecnologías más recientes, como XML y servicios web, a la vez que permite el acceso a su código de herencia.

.NET, en general, y código administrado en particular, proporciona una serie de ventajas para el desarrollador de software:

  • Un modelo de objetos orientado a objetos, independiente del lenguaje y seguro para tipos.
  • Conflictos reducidos entre diferentes versiones de componentes.
  • Número reducido de errores y agujeros de seguridad debido a errores de programación comunes. Por ejemplo, no hay más saturaciones de búfer y no hay más errores de administración de memoria.
  • Un único marco y conjunto de bibliotecas que todos los desarrolladores pueden usar. Las bibliotecas de clases de .NET Framework encapsulan las API de Win32 más numerosas API adicionales proporcionadas por muchos SDK en un paquete unificado.
  • Abstracciones más altas de las que estaban disponibles anteriormente.

De alguna manera, .NET es simplemente un nuevo marco independiente del lenguaje orientado a objetos que encapsula muchos aspectos de las API de Win32. Personalmente, prefiero pensar en .NET como un reemplazo de última generación para las API de Win32, incompletos aún, pero cada vez más completos con el tiempo.

Por ejemplo, .NET versión 1.0 proporciona clases de desarrollo de aplicaciones cliente basadas en formularios orientadas a objetos. Podrías considerarlos simplemente contenedores sobre las API básicas de ventanas de Win32. Sin embargo, .NET también proporciona ASP.NET clases que encapsulan el desarrollo de aplicaciones web y html más la generación de comportamientos. Estas clases en vigor amplían la API de Windows y no son realmente un contenedor para nada en las API de Win32. . La compatibilidad enriquecida de NET con los servicios web y XML en general son dos ejemplos más de nuevas funcionalidades proporcionadas con .NET en lugar de contenedores simples en torno a la funcionalidad win32 existente.

Acerca de lo que trata este libro

Este libro se centra en las características de Microsoft "Longhorn" para el desarrollador. Desde el punto de vista de un desarrollador, "Longhorn" proporciona una nueva funcionalidad que podemos clasificar ampliamente en cinco áreas:

Modelo de aplicación "Longhorn"

"Longhorn" define las aplicaciones de formas nuevas y más eficaces.

  • Las API de "Longhorn" son clases administradas que controlan gran parte del mantenimiento de la programación y reducen la carga de trabajo del desarrollador. Todos los compiladores y herramientas de desarrollador de terceros que admiten .NET Common Language Runtime (CLR) admiten automáticamente las nuevas API de "Longhorn".
  • El modelo de aplicación "Longhorn" admite aplicaciones de navegación tradicionales basadas en formularios y nuevas. El sistema operativo proporciona compatibilidad con la navegación basada en páginas de la aplicación.
  • Un nuevo modelo de seguridad y privacidad de "Longhorn", que es el resultado de una combinación de API administradas e identidad digital, proporciona seguridad de la aplicación desde el principio del proceso de desarrollo. Las aplicaciones y los componentes de "Longhorn" son de confianza debido al uso del código administrado.
  • Las API de "Longhorn" representan los mejores conceptos de desarrollo de una variedad de tecnologías contemporáneas. De muchas maneras, el desarrollador ya no está limitado por las decisiones de diseño tomadas hace más de una década.
  • Administración y retención automáticas del estado de la aplicación para facilitar el desarrollo de aplicaciones.
  • La tecnología de implementación ClickOnce admite características de implementación sofisticadas, como la instalación en archivos de programa, el control de versiones, la instalación en paralelo y la descarga de Drizzle.
  • Las interfaces de usuario inductivas llevan a los usuarios a través de una tarea.
  • Las características de accesibilidad y automatización están integradas en la plataforma. Las aplicaciones obtienen automáticamente dicha compatibilidad.

Informática y seguridad de confianza

"Longhorn" basa la seguridad de una aplicación en el modelo de seguridad de acceso al código (CAS) de Common Language Runtime, pero con extensiones significativas.

  • "Longhorn" reconoce que algunas aplicaciones son de plena confianza y otras solo tienen confianza parcial. Las aplicaciones que participan plenamente en el modelo de seguridad "Longhorn" tendrán acceso completo a las características de "Longhorn". Las aplicaciones que solo participan parcialmente en el modelo tendrán algunas ventajas, aunque con restricciones.
  • "Longhorn" proporciona un entorno en tiempo de ejecución ultraseguro, administrado, denominado Entorno de ejecución seguro (SEE), que protege al usuario del comportamiento de la aplicación "incorrecta".
  • El Administrador de confianza proporciona un sistema de puntuación para las aplicaciones "Longhorn" que determina un nivel de confianza sugerido que los usuarios podrían conceder a la aplicación.
  • "Longhorn" proporciona un Centro de confianza de seguridad que permite a un usuario administrar correcciones de acceso frecuente y acceder a las actualizaciones de Windows. Además, un Asesor de seguridad informa al usuario de los riesgos de seguridad y las infracciones.
  • Digital Rights Management forma parte del código administrado, lo que proporciona una protección sólida para la propiedad intelectual. Esto permite el almacenamiento seguro y la transmisión de la propiedad intelectual anteriormente vulnerable en el entorno "Longhorn".
  • "Longhorn" identifica de forma única a los usuarios y equipos mediante firmas digitales. Cuando se combina con una entidad de firma para la verificación, "Longhorn" puede identificar de forma segura y confiable a usuarios individuales en escenarios informáticos.

Almacenamiento enriquecido y acceso a datos

"Longhorn" proporciona almacenamiento y acceso de datos de aplicaciones significativamente mejorado a través de un nuevo sistema de archivos.

  • El nuevo ADO.NET proporciona acceso mejorado a los datos.
  • Los esquemas comunes para la información diaria, como contactos, organizaciones, direcciones y mucho más, permiten el acceso compartido a la información por parte de las aplicaciones, el sistema operativo y el shell. De hecho, la nueva interfaz de usuario del shell es uno de los usuarios más pesados del nuevo sistema de almacenamiento.
  • Una aplicación puede adjuntar metadatos adicionales a objetos del sistema de archivos, lo que permite una búsqueda y recuperación más rápidas de los objetos de archivo que es posible con un sistema de archivos tradicional.
  • Los cambios en los objetos del entorno "Longhorn" se propagan automáticamente a otras instancias de esos objetos mediante el enlace de datos dinámicos.

Comunicación y colaboración

Las aplicaciones "Longhorn" ahora tienen una amplia variedad de características de comunicación y colaboración.

  • Características como sesiones y canales proporcionan servicios de colaboración enriquecidos a los participantes.
  • Las características de comunicación y colaboración pueden funcionar de forma segura a través de firewalls y traducción de direcciones de red (NAT), lo que permite atravesar los límites corporativos.
  • La comunicación estandarizada basada en servicios web permite que las aplicaciones heredadas y nuevas participen en la colaboración.
  • Las características de comunicaciones basadas en servidor o en sistemas de mismo nivel pueden funcionar sobre una infraestructura centralizada o directamente para los clientes de usuario.
  • La compatibilidad con presencia virtual permite a los usuarios colaborar con otros usuarios a través de características similares a la mensajería instantánea (notificación común, invitación, etc.).
  • La seguridad integrada es una parte integral de estas funcionalidades.
  • Compatibilidad con la extensibilidad de Shell, como verbos de colaboración ** (uso de un cliente de chat predeterminado, etc.), se puede identificar para usar herramientas conocidas en la comunicación en tiempo real "Longhorn".
  • Los controles comunes, como el nuevo control Selector de Personas, proporcionan compatibilidad con aplicaciones de alto nivel para las aplicaciones de comunicación.

Presentación enriquecida y medios

Los desarrolladores pueden generar aplicaciones más fácilmente que proporcionen interfaces de usuario enriquecidas mediante la presentación y los servicios multimedia disponibles en "Longhorn".

  • "Longhorn" proporciona al desarrollador clases de gráficos enriquecidas que proporcionan animación, efectos y imágenes visualmente emocionantes que aprovechan la aceleración de hardware.
  • Los potentes gráficos vectoriales declarativos y dinámicos permiten la presentación flexible y el escalado para dispositivos de salida de alta resolución, al tiempo que se ahorran recursos porque los gráficos se generan a partir de un lenguaje descriptivo.
  • Las animaciones aplicadas fácilmente mejoran la facilidad de uso y la continuidad de la interfaz de usuario.
  • La compatibilidad con gráficos usa tarjetas de vídeo DirectX/3D aceleradas por hardware para crear un entorno más envolvente y fluido.
  • La aplicación puede integrar sin problemas todas las formas de interfaz de usuario: imágenes, vídeo, audio, gráficos vectoriales, controles, texto, etc.
  • Un nuevo modelo de diseño permite mostrar texto enriquecido y multimedia debido a un marco que ajusta automáticamente la paginación, la posición, etc., al tamaño de la pantalla.
  • Los nuevos servicios de texto, como la inclusión de la representación de subpixeles (ClearType) permiten una GUI visualmente atractiva en cualquier equipo con un acelerador 3D independiente de las posibles resoluciones de pantalla.
  • Puede combinar fragmentos de datos dispares en contenedores, que se pueden mover alrededor de la interfaz de usuario.
  • Las transformaciones condicionales de datos basadas en el tipo, el valor u otras reglas proporcionan a las herramientas de desarrollo crear una interfaz de usuario más facile.
  • Una amplia plataforma multimedia permite una reproducción sin problemas de audio y vídeo; experiencias distribuidas de A/V entre equipos y dispositivos electrónicos de consumo; Códecs de audio y vídeo de mayor calidad; alto rendimiento para la captura y edición de contenido en tiempo real y de alta definición; servicios enriquecidos de metadatos de CD, DVD y televisión.

Lo que encontrará en este libro

Cada uno de estos temas puede rellenar fácilmente un libro por sí solo. Por lo tanto, no voy a describir todas las distintas API en "Longhorn". Tampoco voy a profundizar en una descripción detallada de cada tecnología. No se trata de una API ni un libro de referencia. Estoy seguro de que no será largo hasta que pueda encontrar muchas copias ligeramente editadas y regurgitadas de la documentación disponible en las librerías.

Lo que voy a hacer es mostrarte cómo empezar a desarrollar para "Longhorn". Como mínimo, deberías leer capítulos 1 y 2 porque cubren los conceptos básicos absolutos que necesitas saber para desarrollar aplicaciones para la plataforma "Longhorn".

En el capítulo 1, hablo del nuevo modelo de aplicación. No pase Go. No recopile $200. Realmente necesitas leer el capítulo 1 o recibirás una tarjeta Ir a la cárcel en el correo. También le presento un nuevo lenguaje de marcado y programación en el capítulo 1. Tanto si es desarrollador de VB.NET, desarrollador de C# o uno de los míticos desarrolladores de COBOL.NET, deberá aprender este nuevo lenguaje de marcado y programación. Lea el capítulo 1: Modelo de aplicación "Longhorn". No estoy bromeando. De hecho, ve a hacerlo ahora y regresa. Esperaré.

Está bien, ahora que ha leído el capítulo 1 y está encantado de crear sus propias aplicaciones, probablemente debería leer el capítulo 2. En él, le mostré cómo compilar, implementar y ejecutar una aplicación "Longhorn". Por lo tanto, el capítulo 2 también es importante, pero no es necesario apresurarse a él. Es un capítulo muy paciente y esperará a que termine esta introducción.

En los capítulos restantes se presentan las distintas tecnologías a las que he hecho alusión en esta introducción. El capítulo 3 es una introducción fantástica a la creación de interfaces de usuario con el nuevo lenguaje de marcado y le da un sabor de su poder. En el capítulo 4 se presentan las nuevas API del sistema de archivos y es probable que abandones las API del sistema de archivos Win32.

En el capítulo 5, le mostré cómo usar el enlace de datos para mover datos de prácticamente cualquier objeto de .NET a la interfaz de usuario y de nuevo sin escribir ningún código de procedimiento. Te mostré cómo crear aplicaciones de comunicación eficaces, seguras y confiables en el capítulo 6. Por último, en el último capítulo se describen algunas directrices para crear aplicaciones móviles modernas y conectadas.

Gracias por salir hasta el final de esta larga introducción. Ahora es el momento de leer el capítulo 2. (Ya has leído el capítulo 1 antes, ¿no?) Diviértete con "Longhorn". ¡Ciertamente lo tengo!

Continúe con el capítulo 1: Modelo de aplicación "Longhorn"

Brent Rector

Brent Rector es presidente y fundador de Wise Owl Consulting (www.wiseowl.com), y tiene más de tres décadas de experiencia en el desarrollo de software. Brent ha diseñado e implementado sistemas operativos, así como nuevos lenguajes de programación informática y sus compiladores. Brent comenzó a desarrollar aplicaciones de Windows con Windows 1x beta en 1985 y ha participado en el desarrollo de Windows desde entonces. Es el autor y coautor de numerosos libros de programación de Windows, incluidos ATL Internals y Win32 Programming. Brent es también el autor de Demeanor para .NET, el ofuscador de código premier para aplicaciones .NET.

© 2003 Microsoft Corporation. Todos los derechos reservados.

IntelliSense, Microsoft, MSDN, MS-DOS, Visual Basic .NET y Visual Studio .NET son marcas comerciales registradas o marcas comerciales de Microsoft Corporation en los Estados Unidos y/o en otros países. Otros nombres de producto y empresa mencionados aquí pueden ser las marcas comerciales de sus respectivos propietarios.