Exportar (0) Imprimir
Expandir todo
Expandir Minimizar
Personas que lo han encontrado útil: 1 de 1 - Valorar este tema

Elección de la arquitectura de capa de presentación correcta (Microsoft Architect Journal)

18 de Julio de 2005

Publicado: Abril de 2005

David Hill

Microsoft Corporation

En esta página

Introducción Introducción
La importancia de la capa de presentación La importancia de la capa de presentación
Descripción de un cliente ligero Descripción de un cliente ligero
Descripción de un cliente inteligente Descripción de un cliente inteligente
Elección de la arquitectura de capa de interacción correcta Elección de la arquitectura de capa de interacción correcta
Plataforma del cliente Plataforma del cliente
Implementación y actualización Implementación y actualización
Experiencia del usuario Experiencia del usuario
Rendimiento Rendimiento
Integración del lado cliente Integración del lado cliente
Capacidades sin conexión Capacidades sin conexión
Conclusión Conclusión
Recursos Recursos
Acerca del autor Acerca del autor

Resumen: la capa de presentación es una parte de vital importancia en una aplicación. En este artículo se describen los enfoques de cliente ligero e inteligente y se proporciona información sobre cómo optar por uno u otro. (16 páginas impresas.)

Introducción

La capa de presentación es una parte de vital importancia en una aplicación, ya que, si su arquitectura no es la adecuada, puede incrementar la complejidad de la aplicación, no favorecer su flexibilidad y hacer que la experiencia del usuario sea poco eficaz y frustrante. Las aplicaciones de cliente ligero presentan conocidas ventajas sobre las aplicaciones de cliente enriquecido tradicionales en cuanto a implementación y capacidad de administración, lo que ha contribuido a que aumente su popularidad en los últimos años. Sin embargo, con la aparición de los clientes inteligentes, la elección de la arquitectura de capa de presentación ha dejado de ser tan sencilla. Los clientes enriquecidos han evolucionado a clientes inteligentes, que pueden combinar las ventajas de la administración central de los ligeros, con la flexibilidad, el nivel de respuesta y el rendimiento de los enriquecidos. En este artículo se describen los enfoques de cliente ligero e inteligente y se proporciona información sobre cómo optar por uno u otro.

La importancia de la capa de presentación

La capa de presentación de la mayoría de aplicaciones resulta con mucha frecuencia esencial para su éxito. Después de todo, representa la interfaz entre el usuario y el resto de la aplicación. Es, por así decirlo, el aspecto fundamental. Si el usuario no puede interactuar con la aplicación de forma que le permita realizar su trabajo con eficacia, el éxito global de la misma se verá seriamente perjudicado.

En mi opinión personal, el término capa de presentación no hace auténtica justicia al funcionamiento y la importancia de esta capa. Raramente se trata de sólo presentar información al usuario, casi siempre tiene más relación con proporcionarle acceso interactivo a la aplicación. Probablemente un nombre más adecuado sería el de capa de interacción del usuario. Sin embargo, por razones de simplicidad, en este artículo se mantendrá el nombre de esta capa aceptado comúnmente.

Sea cual sea el nombre que se le dé, lo importante será diseñarla de manera que se ofrezca una buena experiencia al usuario que le permita interactuar eficazmente con la aplicación. Asimismo, será necesario generar e implementar la capa de tal manera que tenga en cuenta las necesidades empresariales de desarrollo, mantenimiento y funcionamiento. La elección de la arquitectura correcta de la capa de presentación de la aplicación resulta de vital importancia para lograr todos estos objetivos.

Los dos enfoques de arquitectura y diseño de la capa de presentación comúnmente adoptados son el enfoque de cliente ligero y el enfoque de cliente inteligente. Son muchos los factores que pueden influir en la decisión de cuál de los dos resulta más idóneo para una aplicación concreta (los requisitos de la plataforma del cliente, la implementación y la actualización de la aplicación, la experiencia del usuario, el rendimiento, la integración del lado cliente, las capacidades sin conexión, etc.) y cada uno de ellos presenta puntos débiles y fuertes inherentes y admite un determinado estilo de aplicación. Sin embargo, la distinción entre ellos se puede desdibujar, lo que fácilmente puede conducir a la aplicación del enfoque básico menos adecuado y a los consiguientes problemas.

Por ejemplo, se puede proporcionar una interfaz de usuario enriquecido con una capa de presentación basada en un explorador, de la misma forma que se puede proporcionar una interfaz de usuario completamente dinámica con un cliente inteligente. Ninguna sería fácil de conseguir y lo más probable es que las dos supusieran complejidad innecesaria, falta de flexibilidad y costos elevados de desarrollo y mantenimiento.

Muchas organizaciones se decantan por una arquitectura de cliente ligero de forma predeterminada sin considerar debidamente las alternativas. Aunque no resulta adecuada para todos los casos, la arquitectura de cliente inteligente puede ofrecer ventajas significativas sobre el enfoque de cliente ligero, sin acarrear los inconvenientes que tradicionalmente se asocian a los clientes enriquecidos. Las organizaciones deben analizar cuidadosamente cada enfoque y adoptar el más conveniente desde el principio, con lo que se minimizará el costo total de propiedad durante todo el período de vida de la aplicación.

En las siguientes secciones examinaremos los enfoques de cliente ligero e inteligente y algunas tecnologías subyacentes. En cada caso se describirá la arquitectura básica y se analizarán algunas de las opciones de diseño que ofrecen cada de uno de ellos. A continuación se analizarán los puntos débiles y fuertes de cada enfoque con relación a una serie de factores y requisitos comunes que se deben tener en cuenta al decidir cuál de ellos es el más adecuado para una aplicación específica.

Descripción de un cliente ligero

Muchas tecnologías de cliente ligero pertenecen al lado servidor, y los marcos y plataformas de servidor Web (ASP, ASP.NET, JSP, etc.) entre los que se puede elegir es elevado. Cada uno presenta características especiales que intentan hacer más fácil la creación de aplicaciones de cliente ligero, pero todos ellos ofrecen la interfaz de usuario en un explorador en el cliente mediante una serie de páginas HTML. Una aplicación de cliente ligero se puede definir de forma simple como la aplicación que utiliza un explorador para proporcionar el entorno de ejecución de su interfaz de usuario (definida con HTML).

Además de proporcionar la interfaz y de permitir que el usuario interactúe con ella, el explorador también ofrece capacidades genéricas de seguridad, administración de estados y control de datos, junto con el entorno de ejecución para cualquier lógica del lado cliente. El explorador generalmente facilita a este último un motor de secuencias de comandos y capacidad para alojar otros componentes ejecutables como subprogramas Java, controles ActiveX y .NET, entre otros, (aunque la mayoría de las definiciones de tecnologías de cliente ligero no consideran a estos componentes ejecutables como tales; véase la sección dedicada a las aplicaciones híbridas más adelante).

Una aplicación que se haya diseñado para utilizar una capa de presentación de cliente ligero se compone de páginas, cada una de las cuales se "implementa" en el cliente a petición. Cada página contiene la descripción de la interfaz de usuario y, generalmente, parte de la lógica de secuencias de comandos del lado cliente y una pequeña cantidad de datos e información de estado (Viewstate, cookies, islas de datos XML, etc.). En la figura 1 se muestra una representación esquemática de una arquitectura de capa de presentación de cliente ligero.

El explorador tiene capacidad limitada para interactuar con el entorno de cliente (el hardware y otras aplicaciones de software que se ejecuten en él). Proporciona un mecanismo para guardar pequeñas cantidades de datos en el cliente (mediante cookies) y, en ocasiones, permite almacenar páginas en caché, si bien, estas características normalmente son de uso limitado, excepto cuando se trata de seguimiento o administración simple de sesiones y de capacidades rudimentarias sin conexión de sólo lectura, respectivamente.

El explorador también ofrece la infraestructura de seguridad para que se pueda asignar a las distintas aplicaciones (páginas) más o menos permisos para hacer cosas distintas con el estado (como las cookies), alojar componentes y ejecutar secuencias de comandos. Internet Explorer implementa todas estas capacidades con el uso de distintas zonas, sitios de confianza, valoraciones, etc.

En un intento de proporcionar una interfaz de usuario enriquecida y con un mayor nivel de respuesta, algunas aplicaciones Web han recurrido a DHTML y otras tecnologías similares. Aunque no se consideran tecnologías estándar en el sentido de que no todos los exploradores las admiten de la misma forma, ofrecen capacidad para incluir elementos de interfaz de usuario más avanzados (menús desplegables, operaciones de arrastrar y colocar, entre otros) en una página Web.

Figura 1: Representación esquemática de una arquitectura de cliente ligero

Otras aplicaciones Web han recurrido a alojar componentes complejos dentro de la página como subprogramas Java, controles ActiveX y .NET. Estos componentes ofrecen bien una interfaz de usuario con mayor nivel de respuesta, bien lógica del lado cliente que no se puede implementar en secuencias de comandos o por razones de seguridad. Es en este punto donde el cliente ligero comienza a mezclarse con el cliente inteligente conduciendo a lo que se conocen como aplicaciones híbridas.

Aunque es posible utilizar estas aplicaciones híbridas para equilibrar los puntos débiles y fuertes de cada enfoque, en este documento, el término cliente ligero se define como una aplicación Web genérica que no emplea tales componentes sino las características básicas que ofrece el entorno del explorador. Las aplicaciones híbridas se describirán en una sección posterior, junto con las aplicaciones de cliente inteligente, dado que precisan utilizar capacidades de estas últimas para evitar problemas de administración y funcionamiento.

Descripción de un cliente inteligente

Las aplicaciones de cliente inteligente no resultan tan sencillas de definir como las de cliente ligero, porque pueden presentar muchas formas distintas y no se limitan al enfoque que se podría denominar universal de estas últimas. La principal diferencia que existe entre un cliente inteligente y un cliente ligero es que el primero no se basa en un explorador para proporcionar el entorno de ejecución, de seguridad y de interfaz de usuario que necesita para su funcionamiento. Asimismo, los clientes inteligentes, en lugar de HTML y Jscript, generalmente llevan asociados elementos de código compilado (componentes, ensamblados, etc.) que se ejecutan en el equipo cliente para ofrecer la interfaz de usuario de la aplicación y la lógica del lado cliente.

¿De qué manera están relacionados los clientes inteligentes con los enriquecidos? Las aplicaciones de cliente enriquecido han evolucionado a aplicaciones de cliente inteligente. Los clientes enriquecidos ofrecían muchas ventajas sobre las aplicaciones de cliente ligero, entre las que se incluían un rendimiento mejorado, mayor nivel de respuesta y flexibilidad, y capacidad para trabajar sin conexión; sin embargo, presentaban distintos problemas de funcionamiento cuando se trataba de implementarlos y actualizarlos de forma robusta. Las soluciones de cliente ligero destacan claramente en el área de la implementación y la actualización, razón por la cual han sido tan populares.

Sin embargo, las aplicaciones de cliente inteligente representan lo mejor de ambos enfoques, al tomar las ventajas de la capacidad de administración de las de cliente ligero y combinarlas con los beneficios que ofrecen las de cliente enriquecido. Los clientes inteligentes son clientes enriquecidos mejorados que aprovechan la nueva tecnología y las técnicas más novedosas para evitar los problemas de las aplicaciones de cliente enriquecido tradicionales.

Por ejemplo, las aplicaciones de cliente inteligente generadas en la plataforma .NET pueden beneficiarse de varias tecnologías fundamentales que ofrece .NET Framework para solucionar muchos de los problemas asociados tradicionalmente con los clientes enriquecidos. Aunque siempre se han podido generar aplicaciones de cliente enriquecido que minimizaban o evitaban los problemas de seguridad e implementación, las características de .NET Framework facilitan en mayor medida este proceso.

.NET proporciona capacidad para implementar una aplicación, o parte de ella, desde un servidor Web. Esta tecnología, conocida como implementación "no-touch", permite implementar aplicaciones a través de una dirección URL, lo que posibilita que se ofrezcan las aplicaciones desde una ubicación central (es decir, un servidor Web) para que se puedan implementar automáticamente en el cliente a petición. Todos los clientes se pueden mantener actualizados automáticamente, puesto que la aplicación comprueba las actualizaciones disponibles cada vez que se ejecuta, y cada una de las aplicaciones cliente descarga el nuevo código si es necesario.

Figura 2: Representación esquemática de una arquitectura de cliente inteligente

.NET también proporciona la infraestructura de seguridad de acceso al código (CAS). CAS asigna permisos específicos de código de .NET en función de la evidencia que presenta y funciona de forma muy similar a como lo hace el explorador en una aplicación de cliente ligero, ofreciendo un entorno de recinto en el que opera la aplicación. La implementación "no-touch" se integra con CAS. De forma predeterminada, se asigna a las aplicaciones que se implementan mediante "no-touch" un conjunto restringido de permisos en función de la zona de URL desde la que se realice la implementación. Los administradores de red pueden modificar los permisos con directivas de seguridad para que se asignen o se denieguen permisos específicos a la aplicación según los requisitos.

Al crear aplicaciones de cliente inteligente con .NET Framework se generan aplicaciones menos frágiles. Tradicionalmente, al instalar una aplicación de cliente enriquecido se podían interrumpir otras aplicaciones, ya que se reemplazaban componentes y DLL importantes que compartían. .NET permite aislar las aplicaciones y mantener todos sus componentes en un directorio local de manera que todos los ensamblados sean independientes. Además, tales aplicaciones no requieren ningún proceso de registro cuando se implementan, lo que reduce aún más el riesgo de interrumpir las demás. Asimismo, .NET Framework permite implementar varias versiones de un ensamblado en paralelo. De esta forma se garantiza que, cuando la aplicación se ejecuta, utiliza las versiones exactas de los ensamblados con los que se ha creado y probado.

Una aplicación diseñada para que utilice un cliente inteligente para su capa de presentación típicamente ofrecerá un servidor de implementación central, desde el que los elementos del cliente inteligente se pueden implementar en los clientes, junto con una serie de servicios Web que proporcionan acceso a las capacidades empresariales del servidor (la lógica empresarial y los datos) que emplea el cliente inteligente. Puesto que el cliente inteligente ejecuta código en el cliente, puede separar de forma más clara la interfaz de usuario de la lógica y los datos del lado cliente. Asimismo, en función de los permisos que se le hayan concedido, puede interactuar más libremente con otros recursos del lado cliente como el hardware local y otro software que se ejecute en él. En la figura 2 se muestra una representación esquemática de esta arquitectura.

¿Qué apariencia tiene un cliente inteligente? Estos tipos de aplicaciones pueden presentar muchas formas, y también son muchas las opciones de diseño de las que dispone el arquitecto de una aplicación de estas características. La primera decisión que se debe tomar es elegir el estilo de aplicación más adecuado, es decir, la forma en la que el cliente inteligente se presenta al usuario. En general, existen tres formas de diseñar una aplicación de cliente inteligente:

  • Aplicaciones para Windows. Aplicaciones de estilo Windows tradicional, generadas normalmente con Windows Forms o aplicaciones móviles que integra .NET Compact Framework.

  • Aplicaciones para Office. Programas de Microsoft Office que se amplían para que incluyan capacidades de cliente inteligente y que conectan al usuario con aplicaciones de unidad de negocio y procesos empresariales. 

  • Aplicaciones híbridas. Aplicaciones que utilizan una combinación de tecnologías de cliente ligero e inteligente. Por ejemplo, alojando controles de Windows Forms dentro de una página del explorador, o el propio explorador en una aplicación de Windows Forms.

La elección del estilo de aplicación correcto resulta esencial para poder apreciar completamente las ventajas de un enfoque de cliente inteligente. La implementación, la seguridad, el desarrollo y las capacidades sin conexión influyen en dicha elección, pero quizás el factor más significativo a tener en cuenta es la experiencia global del usuario. Cada opción representa un tipo distinto de experiencia del usuario, y decantarse por la más idónea puede ofrecerle la combinación entre flexibilidad y rendimiento que precisa.

Aplicaciones para Windows

Los usuarios asocian las aplicaciones de cliente inteligente con las aplicaciones de estilo Windows tradicional, porque ofrecen funcionalidad de cliente enriquecido que incluye barras de herramientas, barras de menús, menús contextuales, compatibilidad con las operaciones de arrastrar y colocar, ayuda sensible al contexto, operaciones de deshacer y rehacer, entre otras muchas características. Los desarrolladores pueden generar estos tipos de aplicaciones de cliente inteligente en .NET Framework o .NET Compact Framework mediante Windows Forms, para ofrecer estas características enriquecidas de interfaz de usuario.
Estos desarrolladores también pueden aprovechar una funcionalidad de cliente inteligente pregenerada con Application Blocks, que proporciona el grupo Microsoft Patterns and Practices. Estos bloques facilitan a la aplicación capacidades de cliente inteligente comunes, por ejemplo, almacenamiento en caché de datos local, una mejor implementación y la capacidad de trabajar sin conexión.

Las aplicaciones de Windows Forms proporcionan el mayor control sobre la experiencia del usuario, lo que permite al desarrollador generar la interfaz y el modelo de interacción del usuario para que se ajuste a sus necesidades exactas. Este enfoque es el más idóneo para las aplicaciones que requieren una experiencia de usuario específica que no puede proporcionar ninguna de las aplicaciones de Office.

Aplicaciones de cliente inteligente de Office 2003

Los programas de Microsoft Office ofrecen una plataforma muy adecuada para crear soluciones de cliente inteligente. La ampliación de las aplicaciones de Office para que formen parte de una solución distribuida, y su conexión con servicios empresariales y orígenes de datos remotos, no sólo beneficia a los usuarios, sino que también ofrece ventajas para los desarrolladores que escriben las aplicaciones y para aquellos que las deben implementar y administrar.

Office resulta muy familiar para muchos usuarios que lo utilizan en su trabajo diario. La ampliación de las aplicaciones de Office mediante su conexión con servicios empresariales y orígenes de datos remotos supone ventajas para la solución porque el usuario está familiarizado con ellas, con lo que se puede omitir o reducir drásticamente la necesidad de entrenarlo nuevamente. El usuario también se beneficia, puesto que puede continuar utilizando una aplicación que conoce bien.

Son muchas las organizaciones que utilizan Microsoft Office ampliamente. La mayoría de los PC empresariales (el suyo y el de sus clientes y proveedores) tienen aplicaciones de Office instaladas. El uso de Office como cliente para sistemas de unidad de negocio puede reducir la necesidad de instalar y mantener aplicaciones de cliente incrementales para obtener acceso a los orígenes de datos y servicios del servidor. Asimismo, con mucha frecuencia, los datos de las aplicaciones de unidad de negocio se copian en aplicaciones de Office como Word o Excel para permitir posteriores operaciones de manipulación, edición, análisis y presentación. El proceso de copiar y pegar es una tarea que puede llevar mucho tiempo y generar errores. Lo que es más importante, el vínculo a los datos se pierde, por lo que el usuario se ve obligado a actualizar constantemente y a repetir el proceso de copiar y pegar, con lo que se pueden introducir fácilmente problemas de concurrencia.

Las aplicaciones de Office también pueden proporcionar muchas funcionalidades necesarias para mostrar y manipular datos, lo que permite que el usuario interactúe con la solución aprovechando todas las posibilidades de Office. Todo ello contribuye a ahorrar mucho tiempo y esfuerzo, y a que se pueda desarrollar y lanzar la solución mucho más rápidamente. Por ejemplo, Excel ofrece eficaces características para ordenar, manipular y mostrar datos. Volver a utilizar estas capacidades en el cliente inteligente puede resultar muy costoso.

Por descontado, los usuarios pueden integrar funcionalidad adicional en las aplicaciones de Office durante un tiempo. En algunos casos, esto ha llevado a crear soluciones empresariales fundamentales "ad hoc", que resultan difíciles de administrar porque no las ha desarrollado o mantenido el departamento de TI. La creación de estas soluciones con tecnologías de cliente inteligente facilita su implementación y actualización, y representa una forma de retener el valor de las soluciones, al tiempo que se solucionan algunos de los problemas de capacidad de administración. Office 2003 ofrece compatibilidad para integrar capacidades de cliente inteligente en las aplicaciones de Office y conectarlas a servicios remotos que proporcionan acceso a los datos y a los procesos empresariales. Entre las tecnologías más importantes que admite Office 2003 para crear soluciones de cliente inteligente se incluyen las siguientes:

  • Compatibilidad con XML. Office 2003 ofrece una serie de características que permiten a los desarrolladores conectar con mayor facilidad las aplicaciones de Office a los procesos empresariales y orígenes de datos remotos mediante XML.

  • Word, Excel e InfoPath pueden utilizar XML para almacenar la estructura y el contenido de un documento en un formulario XML que puede leer un usuario o un equipo. Microsoft ha desarrollado para estos formatos de archivo esquemas XSD que cumplen los estándares del W3C y que se encuentran disponibles para cualquier usuario que desee utilizarlos en su solución. Estos esquemas permiten crear con facilidad documentos de Word y Excel y formularios de InfoPath en el servidor y proporcionarlos al cliente mediante servicios Web XML, documentos que los usuarios pueden mostrar y editar con gran facilidad. Esta tecnología también se puede emplear para ofrecer la funcionalidad de redacción, indización o búsqueda de documentos. Asimismo, como estos documentos son XML, se pueden intercambiar con cualquier otro sistema o proceso, lo que proporciona un mecanismo de intercambio de datos entre sistemas heterogéneos. Esta tecnología resulta especialmente adecuada para las soluciones centradas en documentos.

  • Word, Excel e InfoPath también pueden utilizar documentos o mensajes XML que se ajustan a un esquema personalizado o definido por el usuario. Los usuarios pueden emplear las aplicaciones de Office como servicios de capa de presentación en soluciones centradas en datos, donde los servicios o procesos empresariales ya definen el esquema de mensajes. Este tipo de aplicación de cliente inteligente asigna elementos y atributos del mensaje a áreas específicas del documento para que la aplicación de Office pueda mostrarlos correctamente y el usuario pueda editar los valores, al tiempo que se garantiza que los datos facilitados por el usuario se ajustan al esquema subyacente. Se puede consultar, establecer o hacer referencia a valores específicos mediante programación con una instrucción de consulta XPath. JOURNAL4 | Elección de la arquitectura de capa de presentación correcta 9.

  • Documentos inteligentes. Las soluciones de documento inteligente ayudan al usuario a interactuar con un documento proporcionándole instrucciones y datos adicionales en función de su ubicación actual en el mismo. Cuando el usuario interactúa con el documento, éste puede mostrar información o instrucciones relevantes en el panel de tareas, o rellenar automáticamente los campos de datos vacíos en función de la tarea que el usuario esté realizando en ese momento. Al combinar esta experiencia con la conexión con servicios remotos para obtener datos actuales o permitir la interacción con los procesos empresariales posibilita la creación de aplicaciones integradas de enorme capacidad.

  • Information Bridge Framework (IBF). IBF es una solución declarativa que genera una tecnología de documento inteligente que permite conectar los documentos con servicios a través de metadatos. Las etiquetas inteligentes de una aplicación de Office interactúan con la infraestructura de IBF genérica y los metadatos asociados con los servicios Web disponibles, para proporcionar acceso a procesos empresariales y datos relevantes desde el propio documento en función del contenido del mismo y la actividad que esté llevando a cabo el usuario en ese momento. Por ejemplo, si un usuario recibe un documento que hace referencia a un proveedor específico, la infraestructura de IBF obtiene acceso a los datos de la compañía y los muestra en el panel de tareas. También puede ofrecer acceso a las opciones disponibles, lo que permite que se conecte el documento con otros procesos empresariales.

  • Visual Studio Tools for Office (VSTO). VSTO permite el acceso de los modelos de objetos de Word y Excel a las extensiones de código administrado. Los desarrolladores pueden generar completas soluciones de cliente inteligente de Office con VSTO no sólo para permitir el acceso a todas las capacidades de Word y Excel, sino también a todas las características de .NET Framework, por ejemplo, Windows Forms, que posibilitan que se integren fácilmente interfaces de usuario enriquecidas y con un alto nivel de respuesta. Asimismo, VSTO ofrece una experiencia de desarrollo mejorada en la que el desarrollador puede crear y depurar soluciones con facilidad. En esencia, VSTO ofrece el código subyacente en un documento para formar una solución que aprovecha las capacidades que proporciona la aplicación "host".

Aplicaciones híbridas

Las aplicaciones híbridas de cliente inteligente combinan los enfoques de cliente inteligente y ligero. Permiten ampliar una aplicación de cliente ligero existente con capacidades de cliente inteligente o integrar una aplicación basada en un explorador en una aplicación de cliente inteligente.

Por ejemplo, una aplicación de cliente inteligente puede alojar una versión de explorador para que una determinada funcionalidad de contenido y aplicación se pueda proporcionar con el enfoque de cliente ligero. Esta arquitectura puede resultar muy útil cuando la aplicación debe integrar una aplicación de cliente ligero existente o cuando precisa aprovechar una ventaja clave de este enfoque para facilitar el contenido dinámico vinculado que proporciona un servidor Web. Este contenido y esta funcionalidad sólo estarán disponibles cuando el usuario esté conectado, pero la parte de cliente inteligente de la aplicación se puede emplear para ofrecer funcionalidad cuando esté sin conexión, y mejorar la aplicación con acceso a las capacidades del cliente ligero cuando esté en línea.

En algunos casos, el enfoque híbrido se puede utilizar para ampliar una aplicación de cliente ligero existente mediante el alojamiento de controles o componentes de cliente inteligente en una página Web. Estos componentes proporcionan una interfaz de usuario enriquecida y con un alto nivel de respuesta y funcionalidad específica de la aplicación (por ejemplo, procesamiento o visualización de datos), mientras que el resto de la aplicación se facilita según el modelo del cliente ligero. No obstante, esta arquitectura no resulta adecuada para ofrecer compatibilidad sin conexión, ya que la página Web que la aloja no está disponible si no se está conectado, ni para ofrecer integración del lado cliente del software o el hardware, a menos que haya cambios adecuados en la directiva de seguridad.

Elección de la arquitectura de capa de interacción correcta

Ambos enfoques, el de cliente ligero y el de cliente inteligente, son alternativas que hay que tener en cuenta. Cada uno presenta puntos débiles y fuertes, por lo que la elección de uno de ellos dependerá de los requisitos de una aplicación o necesidad empresarial específicas. El enfoque correcto permitirá que el usuario disfrute de una experiencia satisfactoria y que pueda interactuar con la aplicación de forma eficaz, sin dejar de tener en cuenta los aspectos relacionados con el desarrollo, el mantenimiento y el funcionamiento de la aplicación.

Algunas organizaciones utilizan de forma sistemática el enfoque de cliente ligero en todas las aplicaciones. La elección de este enfoque de forma predeterminada puede ocasionar significativos problemas técnicos en algunas aplicaciones, puesto que la plataforma del explorador no puede admitir tan fácilmente los requisitos de las aplicaciones algo más complejas. Desarrollar una aplicación de cliente ligero que se asemeje en su apariencia y capacidades a una aplicación de cliente enriquecido tradicional puede ser extremadamente arriesgado y costoso. ¿Por qué? Porque el explorador impone severas limitaciones al desarrollador en cuanto a la administración de los estados, la lógica y los datos del lado cliente y la provisión de características de interfaz de usuario enriquecida como las operaciones de arrastrar y colocar, deshacer y rehacer, etc. Por otro lado, utilizar un enfoque de cliente inteligente en todas las aplicaciones tampoco resulta adecuado, puesto que puede generar soluciones demasiado complejas en aplicaciones que sólo presentan datos dinámicamente y que necesitan de las ventajas que ofrece una interfaz de usuario dinámica. Asimismo, si la aplicación debe admitir varios sistemas operativos de cliente, el enfoque de cliente inteligente puede no resultar el idóneo por las restricciones entre plataformas.

Por tanto, es probable que la adopción de un único enfoque para todas las aplicaciones acarree costos y complejidad innecesarios, falta de flexibilidad y que reduzca la capacidad de uso. Ambos enfoques pueden coexistir sin problemas dentro del entorno empresarial, siempre en función de los requisitos de las aplicaciones específicas y de las necesidades empresariales. La selección de un enfoque determinado se debe establecer en función de la aplicación concreta, aunque en algunos casos ambos se pueden combinar, ya sea integrando correctamente las tecnologías de cliente ligero e inteligente o adoptando un enfoque de doble canal, en el que se permita el acceso a la aplicación a cierta clase de usuarios con un cliente ligero y a los usuarios con requisitos más reducidos con un cliente inteligente. En cualquiera de los casos, la clave radica en equilibrar la tecnología adecuada en el momento preciso para cumplir las expectativas de los usuarios y las necesidades empresariales globales.

El enfoque de cliente ligero presenta conocidas ventajas en cuanto a alcance y facilidad de implementación y funcionamiento. Sin embargo, con la aparición de la tecnología de cliente inteligente, los clientes inteligentes están centrándose en estos aspectos y ahora constituyen una alternativa viable a los ligeros en muchos casos. En concreto, los clientes inteligentes no experimentan los problemas de implementación y administración que sufrían las soluciones de cliente enriquecido e incorporan ventajas en flexibilidad, nivel de respuesta y rendimiento.

Por tanto, si la implementación y la capacidad de administración ya no son los factores determinantes que influyen en la decisión entre el uso de un enfoque u otro, ¿cómo se puede elegir entre ellos? Con la erosión de las ventajas relativas del enfoque de cliente ligero en este área, la balanza se inclina hacia otro lado y los factores que se deben considerar son muchos más. En función de la prioridad relativa de los requisitos, un enfoque resultará más adecuado que el otro, y la elección del correcto contribuirá a un proceso de desarrollo más rápido y menos complejo, de mayor facilidad de uso y que generará mayor satisfacción en el usuario.

Las características, las ventajas y las desventajas de cada uno de los enfoques se han descrito en las secciones anteriores, pero ¿cómo se pueden traducir en decisión teniendo en cuenta los requisitos de una aplicación específica? Entre los factores más importantes que las organizaciones deben considerar se encuentran los siguientes:

  • Requisitos de la plataforma del cliente

  • Requisitos de implementación y actualización

  • Requisitos de la experiencia del usuario

  • Requisitos de rendimiento

  • Requisitos de integración del lado cliente

  • Requisitos sin conexión

La lista de factores no está completa; el departamento de TI de su organización puede agregar otros que resulten fundamentales para las aplicaciones específicas. En concreto, los expuestos aquí se centran en requisitos operativos o de funcionamiento; los factores de tiempo de diseño y de desarrollo se han omitido. A pesar de esto, estos factores pueden tener la importancia suficiente como para inclinar la balanza hacia un enfoque u otro. Decantarse por el enfoque correcto es una decisión que deben tomar de forma conjunta el personal de TI y los responsables de la organización. La alternativa adoptada debe conducir a una solución con la que ambos grupos se encuentren satisfechos: el personal de TI, desde la perspectiva de la administración, y los responsables de la organización, desde el punto de vista de la funcionalidad.

Plataforma del cliente

La flexibilidad de la plataforma del cliente puede ser importante para un cliente o socio que se encuentre frente a aplicaciones en las que los usuarios principales son externos a la organización y para las que no se pueda establecer una plataforma de cliente específica, o aplicaciones a las que se debe obtener acceso desde sistemas operativos que no sean Windows.

Los clientes ligeros permiten utilizar distintas plataformas de cliente, aunque esto suele requerir que la aplicación determine el tipo exacto de plataforma de destino para que pueda cambiar su funcionamiento o comportamiento de forma que se ajuste a las diferencias entre los distintos exploradores, en concreto cuando la plataforma de destino deba incluir dispositivos móviles. El propio marco de cliente ligero puede administrar muchas de estas diferencias. Por ejemplo, ASP.NET en el servidor puede determinar el tipo de explorador de destino y ofrecer el contenido de cada explorador en consecuencia. Sin embargo, el uso de algunas de las características de explorador más avanzadas probablemente obligará a desarrollar código específico para administrar las diferencias entre los tipos de explorador.

El enfoque de cliente inteligente no ofrece esta capacidad, aunque las aplicaciones destinadas exclusivamente a sistemas operativos Windows pueden emplear .NET Framework o .NET Compact Framework (para aplicaciones móviles) para ofrecer una solución de cliente inteligente en una amplia variedad de dispositivos cliente, incluso para usuarios externos.

Si la aplicación debe admitir usuarios o clientes externos que ejecuten sistemas operativos que no sean Windows, el enfoque de cliente ligero debe ser la alternativa a considerar.

Implementación y actualización

Tanto el enfoque de cliente ligero como el de cliente inteligente suponen implementar la interfaz de usuario, la lógica de la aplicación y los datos en el cliente. En ambos casos, estos elementos se ubican centralmente, y se administran e implementan en el cliente a petición. En el enfoque de cliente ligero, estos elementos no son persistentes en el cliente y se deben "implementar" cada vez que el usuaria ejecute la aplicación. En el enfoque de cliente inteligente, estos elementos pueden persistir en el cliente para permitir el uso sin conexión u optimizar el proceso de implementación y actualización.

Como los dos enfoques permiten a la organización ubicar centralmente los distintos elementos de la aplicación, ambos proporcionan administración centralizada en cuanto a la autorización de los usuarios, la implementación de la aplicación, la actualización, etc. Las organizaciones pueden utilizar el cliente ligero y el cliente inteligente para ofrecer soluciones que garantizan que los usuarios sólo ejecutan la última versión de la aplicación, si bien el inteligente permite flexibilidad adicional, por ejemplo, que distintos usuarios puedan ejecutar versiones diferentes de la aplicación (como grupos piloto) o que la aplicación se pueda ejecutar sin conexión. Sin embargo, para poder aprovechar todas estas ventajas, la solución puede requerir que se implementen en el cliente cambios adicionales en la directiva de seguridad o un componente administrador de actualizaciones.

Si el escenario en el que trabaja requiere que la aplicación se ejecute sin conexión, la alternativa que debe considerar es el enfoque de cliente inteligente. Por otra parte, si la existencia de elementos persistentes en el cliente no resulta beneficiosa para la aplicación, el enfoque por el que se debería decantar es el de cliente ligero. En este último caso, en las aplicaciones que principalmente presentan datos dinámicos o en las que se producen graves problemas de concurrencia (en cuanto a datos o lógica de la aplicación), la opción más recomendable sería el cliente ligero.

Experiencia del usuario

Las aplicaciones de cliente ligero e inteligente resultan adecuadas para estilos de interfaz de usuario distintos. Muchas aplicaciones de cliente ligero intentan ofrecer una buena experiencia al usuario pero, comparadas con la plataforma de cliente inteligente, tienden a quedarse cortas en ciertos aspectos importantes debido a las limitaciones del explorador. Por ejemplo, características de cliente enriquecido básicas como arrastrar y colocar o deshacer y rehacer resultan difíciles de desarrollar en soluciones de cliente ligero. La complejidad asociada con la provisión de estas características puede ser considerable y reducir las ventajas entre plataforma del enfoque de cliente ligero.

Asimismo, se debe tener en cuenta la forma en la que el usuario interactúa con la aplicación. Algunas aplicaciones resultan muy lineales porque el usuario normalmente interactúa con ellas de forma similar o predefinida. Otras aplicaciones son no lineales y el usuario puede iniciar una tarea, detenerla para completar otra y después volver a la tarea original. La administración de estados necesaria para ofrecer dicha funcionalidad puede suponer un reto en una solución de cliente ligero. Por ejemplo, estas soluciones se deben diseñar de forma que puedan controlar la situación cuando el usuario presione el botón Atrás en mitad de una transacción. Esta situación resulta más fácil de controlar en una aplicación de cliente inteligente.

Los clientes inteligentes también pueden aprovechar las ventajas de los recursos locales para ofrecer capacidades locales de búsqueda, ordenación, visualización y validación en el lado cliente de los datos con el fin de mejorar la capacidad de uso de una aplicación y la experiencia del usuario. Tales características pueden conducir a un incremento en la calidad de los datos y en la satisfacción y productividad del usuario.

Rendimiento

Una diferencia significativa entre los dos enfoques es que las aplicaciones de cliente inteligente ofrecen un rendimiento superior comparadas con las de cliente ligero.

En un nivel básico, un cliente ligero normalmente utiliza secuencias de comandos (que debe interpretar rápidamente) como medio para entregar y ejecutar la lógica de la aplicación del lado cliente. Por el contrario, una solución de cliente inteligente puede entregar código compilado específico al cliente. Asimismo, y lo que quizás es más importante, la lógica del lado cliente en una aplicación de cliente inteligente presenta menos restricciones en la forma en la que puede interactuar con la interfaz de usuario, el almacenamiento de datos local o con los servicios ubicados en la red. Por estas razones, una buena arquitectura de cliente inteligente permite al desarrollador ofrecer más fácilmente una solución de alto rendimiento.

La percepción del rendimiento por parte del usuario depende de la forma en la que utilice la aplicación y cómo espera que ésta se comporte. Las aplicaciones que el usuario usa rara vez o con las que no puede interactuar demasiado, por ejemplo, aquellas que simplemente obtienen y muestran datos, no se beneficiarán de un rendimiento superior en el lado cliente. Por el contrario, las aplicaciones que se utilizan mucho parecerán mostrar un rendimiento pobre incluso si hubiera un pequeño retraso en las características utilizadas frecuentemente. En una aplicación de centro de llamadas, por ejemplo, un retraso de cuatro o cinco segundos en recuperar los detalles del pedido de un cliente puede resultar muy fácilmente en la insatisfacción del usuario (y suponer costes adicionales).

Por supuesto, en el caso de la funcionalidad que envía o recupera datos a través de la red, ambos enfoques muestran el mismo rendimiento básico. No obstante, una solución de cliente inteligente bien diseñada puede realizar la comunicación de red en un subproceso independiente, lo que permitiría que la aplicación permaneciera receptiva mientras enviara y recibiera los datos a través de la red. Tal trabajo de fondo se puede realizar de forma proactiva, es decir, en respuesta a una llamada de cliente entrante. Asimismo, resulta más sencillo para las soluciones de cliente inteligente almacenar localmente los datos en caché, ya que esto reduce el número de llamadas de red o el ancho de banda necesario para realizar la misma operación. Estas características pueden tener un enorme impacto en el rendimiento de la aplicación que percibe el usuario.

Las soluciones de cliente inteligente pueden proporcionar una validación de datos en el lado cliente mucho más rigurosa. Por ejemplo, puesto que una solución de cliente inteligente puede almacenar localmente en caché los datos y la lógica, es posible almacenar en caché datos de referencia de sólo lectura que la aplicación puede emplear para ofrecer la validación de campos y entre campos. Con las aplicaciones que utilizan este tipo de validación se pueden ofrecer comentarios al usuario mucho antes, lo que mejora el rendimiento que éste percibe de la aplicación, se reduce el número de veces que los datos se transfieren a través de la red y se garantiza la mayor calidad de los datos. Es probable que las soluciones de cliente ligero deban utilizar secuencias de comandos complejas para ofrecer el mismo nivel de funcionalidad y que no puedan validar localmente los datos con respecto a otros datos que no se muestran en la página actual.

Una solución de cliente inteligente también puede aprovechar al máximo las ventajas de las capacidades de procesamiento, almacenamiento y visualización locales que permiten al usuario consultar, ordenar y visualizar datos en el cliente sin necesidad de realizar una llamada de red. Esta habilidad se hace especialmente evidente cuando se emplea una aplicación de Office como Excel como el entorno que aloja el cliente inteligente. Todo esto puede contribuir a reducir significativamente las llamadas de red para realizar la misma operación en una aplicación de cliente ligero.

Como la interfaz de usuario de la solución de cliente inteligente generalmente la proporciona código específico que se ejecuta en el cliente, el usuario disfruta de una interfaz con un mayor nivel de respuesta. Características de la interfaz de usuario del cliente enriquecido, como arrastrar y colocar, deshacer y rehacer, la ayuda sensible al contexto y los métodos abreviados de teclado, entre otras, contribuyen a mejorar la experiencia del usuario y con ello el rendimiento de la aplicación que percibe.

Si el rendimiento es una cuestión importante, se debe considerar la elección de la solución de cliente inteligente. En ocasiones, el rendimiento de la aplicación percibido por el usuario es casi más importante que el rendimiento real de las operaciones individuales. El objetivo último de una buena aplicación es garantizar que el usuario puede realizar su trabajo de forma eficaz de manera que se mantenga su satisfacción.

Integración del lado cliente

Con frecuencia, una aplicación necesita obtener acceso a los recursos del lado cliente para que se puedan integrar en la solución global. En ocasiones, entre los recursos del lado cliente se incluye hardware (impresora, teléfono, lector de código de barras, etc.) o software (integración de otras aplicaciones de escritorio o de unidad de negocio).

Tanto el enfoque de cliente ligero como el de cliente inteligente funcionan dentro de un recinto. En el caso del cliente ligero, el explorador proporciona el recinto, mientras que en el caso del cliente inteligente, lo proporciona el tiempo de ejecución de .NET Framework. La integración de recursos del lado cliente en una aplicación de cliente ligero normalmente requiere que se utilice una arquitectura de aplicación híbrida para alojar un componente dentro de una página (por ejemplo, un control ActiveX) para que se extienda fuera del recinto del explorador. Este enfoque no resulta muy flexible y en ocasiones depende del usuario tomar las decisiones de seguridad en cuanto a la descarga de componentes para que se ejecuten en el cliente desde su cuenta de inicio de sesión.

El tiempo de ejecución de .NET Framework emplea un enfoque más flexible y concede permisos de código administrado basándose en las evidencias que presenta y en la directiva de seguridad local. De forma predeterminada, el código descargado desde un servidor Web no puede interactuar con los recursos locales excepto de formas muy limitadas y específicas. Sin embargo, la lógica de la aplicación puede conceder al código permisos adicionales para obtener acceso a recursos específicos como directorios concretos en el disco, otras aplicaciones, bases de datos locales, etc.

Este enfoque administrado representa un mecanismo más granular y flexible para controlar los aspectos de seguridad de una aplicación, lo que permite que el cliente inteligente integre otros recursos del lado cliente sin introducir ningún riesgo para la seguridad. Lo que es más importante, el administrador de red emplea directivas de seguridad para tomar las decisiones de seguridad, en lugar de usuarios individuales, por lo que el código de la aplicación no puede realizar acciones u obtener acceso a recursos para los que no se le haya concedido permiso.

Las aplicaciones de cliente inteligente a menudo emplean seguridad de acceso al código para controlar el almacenamiento en la caché del cliente de los datos y la lógica. Este comportamiento resulta esencial para proporcionar capacidades sin conexión, por lo que este tipo de aplicaciones normalmente requieren cambios en la directiva de seguridad para conceder permisos específicos. Generalmente, esto implica conceder a la aplicación permiso para almacenar en caché en el disco local el código y los datos. Si la solución requiere acceso a los recursos del lado cliente como el hardware local u otras aplicaciones instaladas localmente, el enfoque de cliente inteligente constituye una solución segura y flexible.

Capacidades sin conexión

A medida que las organizaciones dependen más de sus sistemas de TI y de los datos y los servicios que facilitan, resulta más importante para los usuarios poder trabajar sin conexión. Ofrecer compatibilidad con el acceso sin conexión a los datos y los servicios, utilizando la misma aplicación ya estén en línea o sin conexión, permite al usuario mantener su nivel de productividad en todo momento y contribuye a garantizar la coherencia y la calidad de los datos.

Como la conectividad de red se está haciendo cada vez más omnipresente, es importante tener en cuenta que disponer de una conexión de red normalmente no es suficiente para garantizar el acceso a una aplicación y a los datos y servicios que representa. Las aplicaciones de unidad de negocio que se incluyen en el servidor de seguridad pueden no resultar accesibles para los usuarios cuando están fuera de la oficina, a menos que la organización invierta en una infraestructura de VPN. Incluso en este caso, crear una conexión puede resultar un proceso costoso en tiempo y dinero. El acceso breve o "ad hoc" a la aplicación en ocasiones no resulta adecuado o puede conducir a la pérdida de oportunidades o incoherencias de datos.

En ocasiones los usuarios pueden planear trabajar sin conexión, por ejemplo, un comercial que va a estar fuera de la oficina durante un período específico de tiempo o un usuario que trabaja desde casa. Otras veces, sin embargo, resulta complicado planear la situación en la que se va a precisar el acceso sin conexión. Por ejemplo, un usuario en un almacén con un Tablet PC podría disponer de una conexión inalámbrica que se interrumpiera periódicamente. Otro aspecto que hay que tener en cuenta es la calidad de la conexión del usuario. Como las organizaciones están cada vez más distribuidas globalmente, la conectividad de red puede sufrir problemas de alta latencia o de bajo ancho de banda.

En cada uno de estos casos, una solución de cliente inteligente puede ofrecer acceso robusto a la aplicación que permite minimizar o eliminar el efecto de los cambios en la conectividad. Al almacenar en la caché del cliente los datos y la lógica de forma inteligente, e implementar automáticamente las actualizaciones en ambos cuando es necesario, la aplicación puede ofrecer al usuario una experiencia mejorada independientemente de cuál sea su estado de conexión. Asimismo, un cliente inteligente puede garantizar que todas las llamadas de red se administran en un subproceso de fondo para que la aplicación no deba esperar en ningún momento a que la red responda, lo que de nuevo permite al usuario continuar trabajando independientemente del estado de la red.

Lograr estos objetivos con una solución de cliente ligero es muy difícil. Algunas soluciones intentan resolver este problema proporcionando la aplicación Web, o un subconjunto de la misma, en el cliente con un servidor Web local, pero tales soluciones resultan difíciles de mantener y requieren una infraestructura compleja para asegurarse de que las actualizaciones de la aplicación y los datos se administran adecuadamente. Estas soluciones reducen las ventajas de la administración centralizada, que con frecuencia se menciona como la principal razón para adoptar una solución de cliente ligero, y presentan todos los demás inconvenientes inherentes a este tipo de clientes.

Conclusión

La elección de la arquitectura de capa de presentación correcta puede resultar fundamental para el éxito general de una aplicación. La arquitectura adecuada proporcionará el correcto equilibrio entre la experiencia del usuario, la facilidad de desarrollo y realización de pruebas y los requisitos operativos de la aplicación. Los usuarios demandan cada vez más que la parte de la ecuación que está relacionada con ellos se tenga en consideración.

Ambos enfoques, de cliente ligero e inteligente, se adecuan a estilos de aplicaciones concretos. Recientes avances en la tecnología han reparado parte del desequilibrio entre ellos de manera que no se puedan aplicar de forma incorrecta a las situaciones para las que no son las alternativas más adecuadas. Es importante aplicar el enfoque correcto desde el principio para evitar complejidad y costos innecesarios, falta de flexibilidad y una experiencia del usuario poco satisfactoria.

Las directivas corporativas globales que favorecen un enfoque sobre otro son más propensas a sufrir estos problemas. Una organización debe considerar cuidadosamente las necesidades generales de la aplicación y compararlas con las capacidades de cada enfoque. Los factores que pueden influir en esta decisión son muchos y variados; en este artículo sólo se han contemplado algunos de los más comunes. Invariablemente, la decisión llegará a un compromiso entre los distintos factores. La correcta comprensión de todos ellos y de sus prioridades relativas puede ayudar a garantizar que la organización opta por la arquitectura de capa de presentación más adecuada.

Recursos

  • Smart Client Architecture and Design Guide, Microsoft Patterns and Practices.

  • Overview of Office 2003 Developer Technologies, MSDN.

  • Overview of Office 2003 Developer Tools and Programs, MSDN.

Acerca del autor

David Hill

Microsoft Corporation

davidhil@microsoft.com

David Hill es arquitecto de soluciones en el equipo Microsoft Architecture Strategy. En los últimos dos años, David se ha dedicado a ayudar a clientes y socios en la generación y la creación de la arquitectura de soluciones de cliente inteligente en la plataforma .NET. Su contribución a "Smart Client Architecture and Design Guide" y "Offline Application Block" de Patterns and Practices ha sido clave.

¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.