arquitectura aplicacion net

11
Arquitectura de aplicaciones de .NET: Diseño de aplicaciones y servicios Introducción En este capítulo se describe la arquitectura de alto nivel de una aplicación o servicio .NET distribuido. Arquitectura de aplicaciones de .NET: Diseño de aplicaciones y servicios proporciona instrucciones sobre el nivel de arquitectura y diseño para arquitectos y desarrolladores de aplicaciones que necesitan generar soluciones distribuidas con Microsoft® .NET Framework. Debe leer esta guía si: Diseña arquitectura de alto nivel para aplicaciones o servicios. Recomienda tecnologías apropiadas para aspectos específicos de su aplicación o servicio. Toma decisiones de diseño que cumplen requisitos funcionales y no funcionales (operativos). Elige los mecanismos de comunicaciones adecuados para su aplicación o servicio. Esta guía identifica las decisiones de diseño clave que necesita tomar durante las primeras fases del desarrollo y proporciona instrucciones a nivel de diseño que le ayudarán a elegir entre distintas opciones de diseño. Asimismo, le ayuda a desarrollar un diseño global mediante la presentación de una arquitectura coherente construida con distintos tipos de componentes que le ayudarán a lograr un buen diseño y beneficiarse de la plataforma Microsoft. Aunque esta guía no pretende proporcionar instrucciones a nivel de implementación para cada aspecto de la aplicación, ofrece referencias a determinadas guías Microsoft Patterns & Practices, artículos de MSDN y sitios de comunidad que debaten con detalle varios aspectos del diseño de aplicaciones distribuidas. Puede considerar este documento como una guía básica de los aspectos más importantes relativos al diseño de aplicaciones distribuidas con los que se encontrará al utilizar la plataforma Microsoft. Esta guía se centra en aplicaciones distribuidas y servicios Web que puede que sean necesarios para proporcionar capacidades de integración para varios orígenes de datos y servicios, así como que requieran una interfaz de usuario para uno o varios dispositivos. El artículo asume que está familiarizado con el desarrollo de componentes .NET y los principios básicos del diseño de aplicaciones distribuidas con capas. Contenido de la guía básica

Upload: martin-huamani-mendoza

Post on 24-Sep-2015

1 views

Category:

Documents


0 download

DESCRIPTION

Arquitectura

TRANSCRIPT

Arquitectura de aplicaciones de

Arquitectura de aplicaciones de .NET: Diseo de aplicaciones y servicios

Introduccin

En este captulo se describe la arquitectura de alto nivel de una aplicacin o servicio .NET distribuido. Arquitectura de aplicaciones de .NET: Diseo de aplicaciones y servicios proporciona instrucciones sobre el nivel de arquitectura y diseo para arquitectos y desarrolladores de aplicaciones que necesitan generar soluciones distribuidas con Microsoft .NET Framework.

Debe leer esta gua si:

Disea arquitectura de alto nivel para aplicaciones o servicios.

Recomienda tecnologas apropiadas para aspectos especficos de su aplicacin o servicio.

Toma decisiones de diseo que cumplen requisitos funcionales y no funcionales (operativos).

Elige los mecanismos de comunicaciones adecuados para su aplicacin o servicio.

Esta gua identifica las decisiones de diseo clave que necesita tomar durante las primeras fases del desarrollo y proporciona instrucciones a nivel de diseo que le ayudarn a elegir entre distintas opciones de diseo. Asimismo, le ayuda a desarrollar un diseo global mediante la presentacin de una arquitectura coherente construida con distintos tipos de componentes que le ayudarn a lograr un buen diseo y beneficiarse de la plataforma Microsoft. Aunque esta gua no pretende proporcionar instrucciones a nivel de implementacin para cada aspecto de la aplicacin, ofrece referencias a determinadas guas Microsoft Patterns & Practices, artculos de MSDN y sitios de comunidad que debaten con detalle varios aspectos del diseo de aplicaciones distribuidas. Puede considerar este documento como una gua bsica de los aspectos ms importantes relativos al diseo de aplicaciones distribuidas con los que se encontrar al utilizar la plataforma Microsoft.

Esta gua se centra en aplicaciones distribuidas y servicios Web que puede que sean necesarios para proporcionar capacidades de integracin para varios orgenes de datos y servicios, as como que requieran una interfaz de usuario para uno o varios dispositivos.

El artculo asume que est familiarizado con el desarrollo de componentes .NET y los principios bsicos del diseo de aplicaciones distribuidas con capas.

Contenido de la gua bsica

Esta gua incluye cinco captulos:

Captulo 1, " Introduccin": describe la interrelacin entre las aplicaciones y los servicios.

Captulo 2, "Diseo de los componentes de una aplicacin o servicio": examina la arquitectura y describe las funciones y criterios de diseo de cada capa de componentes.

Captulo 3, "Directivas de seguridad, administracin operativa y comunicaciones": detalla los aspectos del diseo que afectan a toda la aplicacin, como la administracin de excepciones y la autorizacin.

Captulo 4, "Implementacin fsica y requisitos operativos": explica la forma en que el diseo de la aplicacin afecta a la implementacin y administracin de cambios. Asimismo, trata los patrones de implementacin frecuentes utilizados en soluciones bien construidas.

Captulo 5, "Apndices" (en ingls): contiene figuras de referencia y un glosario de trminos utilizados en esta gua.

Para beneficiarse al mximo de estos captulos, se recomienda su lectura en orden secuencial; no obstante, cada captulo ofrece informacin que puede resultar til independientemente de los dems captulos.

Contenido del captulo

Este captulo incluye las siguientes secciones:

Objetivos del diseo de aplicaciones distribuidas Servicios e integracin de servicios Componentes y niveles en aplicaciones y servicios Escenario de ejemploObjetivos del diseo de aplicaciones distribuidas

El diseo de una aplicacin distribuida implica la toma de decisiones sobre su arquitectura lgica y fsica, as como sobre la tecnologa e infraestructura que se emplearn para implementar su funcionalidad. Para tomar estas decisiones, debe tener un conocimiento claro de los procesos empresariales que realizar la aplicacin (sus requisitos funcionales), as como los niveles de escalabilidad, disponibilidad, seguridad y mantenimiento necesarios (sus requisitos no funcionales, funcionales u operativos).

El objetivo consiste en disear una aplicacin que:

Solucione el problema empresarial para el que se disea.

Tenga en consideracin la seguridad desde el principio, teniendo en cuenta los mecanismos adecuados de autenticacin, la lgica de autorizacin y la comunicacin segura.

Proporcione un alto rendimiento y est optimizada para operaciones frecuentes entre patrones de implementacin.

Est disponible y sea resistente, capaz de implementarse en centros de datos de alta disponibilidad y redundantes.

Permita la escalabilidad para cumplir las expectativas de la demanda y admita un gran nmero de actividades y usuarios con el mnimo uso de recursos.

Se pueda administrar, permitiendo a los operadores implementar, supervisar y resolver los problemas de la aplicacin en funcin del escenario.

Se pueda mantener. Cada parte de funcionalidad debera tener una ubicacin y diseo predecibles teniendo en cuenta distintos tamaos de aplicaciones, equipos con conjuntos de habilidades variadas y requisitos tcnicos y cambios empresariales.

Funcione en los distintos escenarios de aplicaciones y patrones de implementacin.

Las instrucciones de diseo que se ofrecen en los siguientes captulos persiguen estos objetivos y explican los motivos para las decisiones de un diseo en particular siempre que sea importante para entender su fondo.

Servicios e integracin de servicios

A medida que crece Internet y las tecnologas relacionadas, y las organizaciones buscan integrar sus sistemas entre lmites de departamentos y de organizacin, ha evolucionado un enfoque de generacin de soluciones basado en servicios. Desde el punto de vista del consumidor, los servicios son conceptualmente similares a los componentes tradicionales, salvo que los servicios encapsulan sus propios datos y no forman parte, estrictamente hablando, de la aplicacin sino que son utilizados por sta. Aplicaciones y servicios que necesitan integrarse se pueden generar en distintas plataformas, por distintos equipos, en diferentes programas y se pueden mantener y actualizar de forma independiente. Por tanto, es esencial que implemente la comunicacin entre ellos con el mnimo acoplamiento.

Se recomienda que implemente la comunicacin entre los servicios empleando tcnicas basadas en mensajes para proporcionar altos niveles de solidez y escalabilidad. Puede implementar la comunicacin de mensajes de forma explcita (por ejemplo, escribiendo cdigo para enviar y recibir mensajes de Message Queue Server), o bien, puede utilizar componentes de infraestructuras que administran la comunicacin de forma implcita (por ejemplo, con un servidor proxy de servicios Web generado por Microsoft Visual Studio .NET).

NotaEl trmino servicio se utiliza en esta gua para hacer referencia a los componentes de software externos que proporcionan servicios empresariales. Esto incluye, aunque no exclusivamente, los servicios Web XML.

Los servicios exponen una interfaz de servicios a la que se envan todos los mensajes entrantes. La definicin del conjunto de mensajes que se deben intercambiar con un servicio para que ste realice una tarea empresarial especfica constituye un contrato. Puede imaginarse una interfaz de servicios como una fachada que expone la lgica empresarial implementada en el servicio para consumidores potenciales.

Por ejemplo, considere una aplicacin comercial de venta a travs de la cual los clientes solicitan productos. La aplicacin utiliza un servicio de autorizacin de tarjetas de crdito externas para validar los detalles de la tarjeta de crdito del cliente y autorizar la venta. Una vez comprobados los datos de la tarjeta de crdito, se utiliza un servicio de correo para organizar la entrega de los productos. El siguiente diagrama de secuencias (Figura 1.1) muestra este escenario.

Figura 1.1. Proceso empresarial implementado utilizando serviciosEn este escenario, el servicio de autorizacin de las tarjetas de crdito y el servicio de correo desempean cada uno una funcin en el proceso empresarial global de compra. A diferencia de los componentes ordinarios, los servicios existen en sus propios lmites de confianza y administran sus propios datos, fuera de la aplicacin. Por tanto, debe estar seguro de establecer una conexin segura y autenticada entre la aplicacin de llamada y el servicio cuando utilice un enfoque basado en servicios para el desarrollo de aplicaciones. Adems, podra implementar la comunicacin mediante el uso de un enfoque basado en mensajes, haciendo el diseo ms adecuado para describir procesos empresariales (a veces denominados transacciones empresariales o transacciones de ejecucin larga) y para el acoplamiento flexible de sistemas que son frecuentes en soluciones distribuidas de gran tamao, especialmente si el proceso empresarial implica varias organizaciones y distintas plataformas.

Por ejemplo, si las comunicaciones basadas en mensajes se utilizan en el proceso mostrado en la figura 1.1, el usuario puede recibir la confirmacin del pedido segundos u horas despus de que se proporcionara la informacin de venta, dependiendo de la capacidad de respuesta de los servicios de autorizacin y entrega. La comunicacin basada en mensajes permite tambin realizar el diseo de la lgica empresarial de forma independiente al protocolo de transporte subyacente utilizado entre los servicios.

Si la aplicacin utiliza un servicio externo, la implementacin interna del servicio le es indiferente al diseo; siempre que el servicio realice lo que se supone que debe realizar. Simplemente necesita saber la funcionalidad empresarial que ofrece el servicio y los detalles del contrato que debe respetar para comunicarse con el mismo (como el formato de comunicacin, esquema de datos, mecanismo de autenticacin, etc.). En el ejemplo de la aplicacin comercial, el servicio de autorizacin de tarjetas de crdito ofrece una interfaz a travs de la cual se pueden pasar al servicio los detalles sobre la venta y la tarjeta de crdito, as como la respuesta indicando si se aprueba o no la venta. Desde la perspectiva del diseador de la aplicacin comercial, lo que sucede dentro del servicio de autorizacin de tarjetas de crdito es irrelevante; lo nico que importa es determinar qu datos es necesario que se enven al servicio, qu respuestas se recibirn del servicio y cmo comunicarse con el servicio.

Internamente, los servicios contienen varios tipos de componentes comunes a las aplicaciones tradicionales. (El resto de esta gua se centra en los distintos componentes y su funcin en el diseo de la aplicacin.) Los servicios contienen componentes de lgica que organizan las tareas empresariales que realizan, los componentes empresariales que implementan la lgica empresarial real del servicio y los componentes de acceso a datos que tienen acceso al almacn de datos del servicio. Adems, los servicios exponen sus funcionalidad a travs de interfaces de servicio, que controlan la semntica utilizada para exponer la lgica empresarial subyacente. La aplicacin tambin llamar a otros servicios a travs de los agentes de servicios, que se comunican con el servicio de parte de la aplicacin cliente que realiza la llamada.

Aunque los servicios basados en mensajes se pueden disear para que se llamen sincrnicamente, puede resultar ventajoso generar interfaces de servicios asincrnicos, que permiten un enfoque de acoplamiento flexible en el desarrollo de aplicaciones distribuidas. El acoplamiento flexible que ofrece la comunicacin asincrnica posibilita la generacin de soluciones de alta disponibilidad, escalabilidad y duracin formadas por servicios existentes. Sin embargo, un diseo asincrnico no proporciona estas ventajas de forma gratuita: el uso de la comunicacin asincrnica indica que el diseo puede necesitar tener en cuenta consideraciones especiales como la correlacin de mensajes, la administracin de concurrencia de datos optimista, la compensacin de procesos empresariales y la no disponibilidad de servicios externos.

NotaEl captulo 3, "Directivas de seguridad, administracin operativa y comunicaciones", trata con mayor detalle los problemas que surgen en la implementacin de la comunicacin del servicio.

Para obtener ms informacin sobre los servicios y los conceptos relacionados, consulte "Application Conceptual View" (en ingls) en MSDN (http://msdn.microsoft.com/library/en-us/dnea/html/eaappconland.asp).

Componentes y niveles en aplicaciones y servicios

Se ha convertido en un principio ampliamente aceptado en el diseo de aplicaciones distribuidas la divisin de la aplicacin en componentes que ofrezcan servicios de presentacin, empresariales y de datos. Los componentes que realizan tipos de funciones similares se pueden agrupar en capas, que en muchos casos estn organizados en forma de apilamiento para que los componentes que se encuentran por "encima" de una capa determinada utilicen los servicios proporcionados por sta, y un componente especifico utilizar la funcionalidad proporcionada por otros componentes de su propia capa, y otras capas "inferiores", para realizar su trabajo.

NotaEsta gua utiliza el trmino capa para hacer referencia a un tipo de componente y el trmino nivel para hacer referencia a los patrones de distribucin fsicos.

Esta visin dividida de una aplicacin tambin se puede aplicar a los servicios. Desde un punto de vista de alto nivel, se puede considerar que la solucin basada en servicios est formada por varios servicios, los cuales se comunican entre s pasando mensajes. Desde el punto de vista conceptual, los servicios se pueden considerar como componentes de la solucin global. Sin embargo, internamente el servicio est formado por componentes de software, al igual que cualquier otra aplicacin, los cuales se pueden agrupar de forma lgica en servicios de presentacin, empresariales y de datos, tal y como se muestra en la figura 1.2.

Figura 1.2. Solucin basada en serviciosLos aspectos importantes que se deben tener en cuenta de esta figura son los siguientes:

1. Los servicios se disean generalmente para comunicarse entre s con el mnimo grado de acoplamiento. El uso de la comunicacin basada en mensajes ayuda a desacoplar la disponibilidad y escalabilidad de los servicios, y basarse en los estndares de la industria, como los servicios Web XML, permite la integracin con las dems plataformas y tecnologas.

2. Cada servicio est formado por una aplicacin que dispone de sus propios orgenes de datos, lgica empresarial e interfaces de usuario. Un servicio puede presentar el mismo diseo interno que una aplicacin tradicional de tres niveles, por ejemplo, los servicios (2) y (4) de la figura anterior.

3. Puede generar y exponer un servicio que no disponga de una interfaz de usuario directamente asociada (un servicio diseado para que lo invoquen otras aplicaciones a travs de una interfaz de programacin). Esto se muestra en el servicio (3). Observe que los componentes que forman un servicio y los componentes que componen las capas empresariales de una aplicacin se pueden disear de forma similar.

4. Cada servicio encapsula sus propios datos y administra las transacciones atmicas con sus propios orgenes de datos.

Es importante tener en cuenta que las capas son simplemente agrupaciones lgicas de los componentes de software que conforman la aplicacin o servicio. Ayudan a diferenciar entre los distintos tipos de tareas que realizan los componentes, facilitando el diseo de la reutilizacin en la solucin. Cada capa lgica contiene un nmero de tipos de componentes discretos agrupados en subcapas, cada una de las cuales realiza el mismo tipo de tarea especfica. Al identificar los tipos genricos de componentes que existen en la mayora de las soluciones, puede construir un mapa coherente de una aplicacin o servicio y, a continuacin, utilizar este mapa como plano tcnico para el diseo.

En la figura 1.3 se muestra una visin simplificada de una aplicacin y sus capas.

Figura 1.3. Componentes separados en capas segn sus funcionesUna solucin distribuida puede que necesite abarcar varias organizaciones o niveles fsicos, en cuyo caso tendr sus propias directivas en relacin a la seguridad, administracin operativa y comunicaciones de la aplicacin. Estas unidades de confianza, o zonas, pueden ser un nivel fsico, un centro de datos o un departamento, seccin o empresa que tenga estas directivas definidas. Unidas, estas directivas definen reglas para el entorno en el que se implementa la aplicacin y la forma en que los niveles del servicio o aplicacin se comunican. Las directivas abarcan toda la aplicacin y la forma en que se implementan afecta a las decisiones sobre el diseo en cada nivel. Tambin tienen un impacto entre s (por ejemplo, la directiva de seguridad determina algunas de las reglas en la directiva de comunicacin y viceversa).

NotaPara obtener ms informacin sobre el diseo de directivas de seguridad, administracin operativa y comunicaciones, consulte el captulo 3, "Directivas de seguridad, administracin operativa y comunicaciones".

Escenario de ejemplo

Para ayudar a identificar los tipos frecuentes de componentes, esta gua describe una aplicacin de ejemplo que utiliza servicios externos. Aunque esta gua se centra en un ejemplo concreto, las recomendaciones de diseo indicadas se aplican a la mayor parte de las aplicaciones distribuidas, independientemente del escenario empresarial real.

El escenario descrito en esta gua es una extensin de la aplicacin comercial descrita anteriormente en este captulo. En este escenario, una empresa de venta al por menor ofrece a sus clientes la posibilidad de solicitar productos a travs de un sitio Web de comercio electrnico o por telfono. Los usuarios de Internet pueden visitar el sitio Web de la compaa y seleccionar productos de un catlogo en lnea. De forma alternativa, los clientes pueden solicitar productos de una catlogo de pedidos por correo mediante una llamada por telfono a un representante de ventas, que indica los detalles del pedido a travs de una aplicacin basada en Microsoft Windows. Una vez finalizado un pedido, los detalles de la tarjeta de crdito del cliente se autorizan mediante un servicio de tarjetas de crdito externo y la entrega se organiza a travs de un servicio de correo externo.

La solucin propuesta para este escenario es un diseo basado en componentes compuesto por una serie de componentes, tal y como se muestra en la figura 1.4.

Figura 1.4. La aplicacin comercial es un conjunto de componentes y servicios relacionadosEn la figura 1.4 se muestra la aplicacin comercial compuesta por varios componentes de software, que se agrupan en niveles lgicos segn el tipo de funcionalidad que proporcionan. Observe que desde el punto de vista de la aplicacin comercial, los servicios de autorizacin de tarjetas de crdito y de correo se pueden considerar componentes externos. Sin embargo, internamente los servicios se implementan ms como las aplicaciones normales y contienen los mismos tipos de componentes (aunque los servicios de este escenario no contienen un nivel de presentacin, sino que publican su funcionalidad a travs de una interfaz de servicios mediante programacin).

Prximamente

Este captulo ha ofrecido una presentacin de las soluciones basadas en servicios y ha explicado cmo un servicio, al igual que cualquier otra aplicacin, est formado por varios componentes de software que se pueden agrupar en niveles lgicos. Los componentes que forman una aplicacin o servicio se pueden describir en trminos genricos. El conocimiento de los distintos tipos de componentes que se utilizan con frecuencia en aplicaciones distribuidas le ayudarn a disear mejores soluciones.

El Captulo 2, "Diseo de los componentes de una aplicacin o servicio", describe los tipos de componentes comunes y ofrece recomendaciones sobre la mejor forma de disearlos.

Comentarios y soporte

Si desea formular alguna pregunta, o realizar algn comentario o sugerencia sobre esta gua, enve un mensaje de correo electrnico a la siguiente direccin: [email protected].

2003 Microsoft Corporation. Reservados todos los derechos. Condiciones de uso.

_1154361184.doc