Professional Documents
Culture Documents
Arquitectura de Web
Web 2.0 en la empresa Entrega de software eficaz a travs de plataformas de distribucin de servicios Comunicacin segura entre dominios en el explorador Modelo orientado a aplicaciones para datos relacionales Perfil del Architecture Journal: Pat Helland Confianza en los datos a travs de la Web Complementos administrados: control avanzado de versiones y hosting confiable
Contenido
Prlogo
Por Simon Guest
1 2
Descubra los elementos para las personas, datos y tecnologas de una arquitectura de Web 2.0 y el modo en el que se pueden utilizar dentro y fuera de la empresa.
14
Los exploradores en la actualidad no funcionan de forma eficaz a travs de mltiples dominios. Aprenda una nueva tcnica para desarrollar sitios de Web que pueden compartir informacin.
19
26
Pat Helland es arquitecto en el grupo de Visual Studio de Microsoft. Actualcese sobre su carrera y sobre sus pensamientos respecto de llegar a ser arquitecto.
28
33
Entrese sobre algunos de los conceptos avanzados de arquitectura con los que cuenta la prxima versin de .NET Framework que admite un modelo de complementos confiable y flexible.
Recursos
Fundador Arvindra Sehmi Microsoft Corporation Jefe Editor Simon Guest Microsoft Corporation Consejo Editorial de Microsoft Gianpaolo Carraro John deVadoss Neil Hutson Eugenio Pace Javed Sikander Philip Teale Jon Tobey Editor Comercial Lisa Slouffman Microsoft Corporation Diseo, Impresin y Distribucin: CMP Technology Contract Publishing Chris Harding, Director Gerente Angela Duarte, Gerente de Publicacin Lisa Broscritto, Gerente de Proyecto Kellie Ferris, Directora Corporativa de Servicios Creativos Jimmy Pizzo, Director de Produccin
Prlogo
Estimado arquitecto:
Bienvenidos a la edicin 12 del Journal. El tema esta vez es Arquitectura de Web. Estoy seguro que no es necesario explicarles la importancia que ha adquirido la Web en los ltimos aos para los arquitectos de casi todas las organizaciones. Sin embargo, despus de haber hablado con varias personas sobre el diseo para la Web, he descubierto que un tema comn es la necesidad de adaptar, de tomar los principios de arquitectura que se han aplicado en el pasado y refactorizarlos para la Web. Como consecuencia, trat de tener esto presente cuando seleccion los artculos para esta edicin. Comenzamos esta edicin con el tema de Web 2.0 en la empresa, con un autor habitual, Michael Platt. Michael analiza algunos de los principios de las personas, datos y tecnologas de la Web 2.0 y a continuacin los clasifica de acuerdo al modo en el que se pueden utilizar dentro y fuera de la empresa. Sigue un artculo de Michael, Gianpaolo Carrazo, Fred Chong y Eugenio Pace en el que presentan el concepto de una Plataforma de Distribucin de Servicios. Basados en su trabajo en el rea de Software como Servicio, tratan lo que es necesario para posibilitar la entrega de software eficaz a travs de la Web de hoy en da. Danny Thorpe del equipo de Windows Live contina con un artculo que explora algunas de las complejidades de la comunicacin entre dominios en el explorador. Mediante el uso de una analoga novedosa, Danny analiza una serie de tcnicas que se pueden utilizar para superar este desafo. Tambin contamos con un artculo excelente de Michael Pizzo sobre un modelo orientado a aplicaciones para datos relacionales. Siendo los datos una enorme parte de varias aplicaciones en la Web, Michael nos lleva a travs de algunos desafos que presentan los esquemas de aplicaciones y bases de datos de la actualidad e introduce un marco para integrarlos de un mejor modo. En la introduccin de la ltima edicin, mencion un colega mo del pasado, Pat Helland. Para esta edicin, me puse al da con Pat, quien recientemente ha regresado a Microsoft como arquitecto en el equipo de Visual Studio. Le pregunt a Pat el rol que va a desempear y algunos de sus originales pensamientos sobre la forma de llegar a ser arquitecto. A continuacin de la entrevista de Pat, contamos con un artculo de Peter Hammond. Peter nos transporta en un viaje a travs de los ltimos 10 aos mediante un anlisis de algunos problemas de datos con los cuales se relacionarn varias personas y presenta una tcnica para el intercambio confiable de datos a travs de la Web actual. Para concluir esta edicin, tenemos la fortuna de contar con un artculo de Jesse Kaplan. Jesse nos lleva a travs de algunas consideraciones de arquitectura de la prxima versin de .NET Framework y presenta un modelo para la creacin de complementos confiables y flexibles. Bien, esto finaliza otra edicin. Hablando de adaptacin, en The Architecture Journal siempre probamos cosas nuevas, mucho en funcin de sus opiniones. Si tienen algn comentario o ideas para los prximos temas y artculos, esperamos con mucho gusto sus noticias para brindarles una mejor publicacin. Pueden contactarnos en editors@architecturejournal.net.
La informacin contenida en The Arquitecture Journal (Journal) se brinda slo con fines informativos. El material publicado en el Journal no constituye la opinin o asesoramiento de Microsoft Corporation (Microsoft) o de CMP Media LLC (CMP) y no debe basarse en ningn tipo de material publicado en este Journal sin antes buscar asesoramiento independiente. Microsoft y CMP no proveen garanta o representacin alguna respecto de la precisin o aptitud de los fines de cualquier material del Journal y en ningn caso Microsoft o CMP aceptan responsabilidad de ningn tipo, incluyendo responsabilidad por culpa (excepto por dao contra los derechos personales del individuo o fallecimiento), por cualquier tipo de daos o perjuicios o prdidas (incluyendo, sin limitacin, prdida del negocio, rdito, ganancias o prdida consiguiente) de cualquier ndole o naturaleza que resultare del uso del presente Journal. El Journal puede contener imprecisiones tcnicas y errores de tipografa. El Journal se actualizar de vez en cuando y podr otras veces estar desactualizado. Microsoft y CMP no aceptan responsabilidad alguna por mantener la informacin de este Journal actualizada ni por el incumplimiento del hecho. Este Journal contiene material propuesto y creado por terceros. Hasta el alcance mximo permitido por la ley aplicable, Microsoft y CMP excluyen toda responsabilidad por cualquier acto ilegal que surgiera de un error, omisin o imprecisin en este Journal y Microsoft y CMP no se responsabilizan del material suministrado por terceros. Las siguientes marcas comerciales son marcas registradas de Microsoft Corporation: Access, Excel, Microsoft, Outlook, Power Point, SQL Server, Visual Studio, Windows, Windows Server y Xbox LIVE. Cualquier otra marca comercial es propiedad de sus respectivos propietarios. Todos los derechos del autor, marcas registradas y cualquier otro tipo de propiedad intelectual del material contenido en el Journal pertenecen y son licencia exclusiva de Microsoft Corporation. Queda totalmente prohibida la copia, reproduccin, transmisin, almacenamiento, adaptacin o modificacin de la forma o contenido del presente Journal sin previo consentimiento por escrito por parte de Microsoft Corporation y los autores individuales. 2007 Microsoft Corporation. Todos los derechos reservados.
Simon Guest
Sntesis Los modelos tradicionales sobre cmo las personas publicaban y consuman informacin en la Web han trascendido radicalmente en los ltimos tiempos. En vez de simplemente visualizar informacin en pginas de Web estticas, en la actualidad, los usuarios publican su propio contenido mediante blogs, wikis y sitios para compartir videos y fotos. Las personas colaboran, intercambian opiniones y forman comunidades en lnea y tambin combinan datos, contenido y servicios desde mltiples fuentes para crear aplicaciones y experiencias personalizadas. Comn y colectivamente denominados Web 2.0, estos nuevos sitios para compartir contenido, reas de colaboracin e intercambio de opiniones y mashups o patrones de diseo de aplicaciones estn transformando la Web del consumidor. Tambin representan una oportunidad significativa para que las organizaciones diseen nuevos sistemas de negocios, productividad y colaboracin social y basada en la Web y para que mejoren el rendimiento de los ingresos y los gastos. Este artculo analizar cmo la tecnologa, los datos y las personas se unen para formar la Web 2.0; la manera en la que se utiliza en la actualidad la Web 2.0 en el espacio del consumidor y la forma en la que estas tcnicas y conceptos se pueden utilizar dentro y fuera de la empresa para brindar nuevas oportunidades de negocios y productividad.
comprensin colectiva de que la capacidad de utilizar la Web para escribir y leer contenido enriquecido, junto con el soporte para redes sociales y la rpida difusin del acceso de banda ancha, permite a los usuarios interactuar con la Web, con el contenido en lnea, as como tambin, entre ellos. Esto representa un cambio fundamental en la forma en la que las personas interactan con el contenido, las aplicaciones y otros usuarios, la nueva Web es una plataforma para aprovechar y fomentar la inteligencia colectiva. Las personas ya no son simplemente consumidores de contenido y aplicaciones: son participantes, que crean contenido e interactan con diferentes servicios y personas. Cada vez ms, las personas crean sus blogs y a la vez aportan bases de conocimiento como Wikipedia y utilizan tecnologas punto a punto (P2P). Muchas veces, denominado el efecto de la red, este aumento de participacin y creacin de contenido presenta nuevas oportunidades para que el usuario participe ms intensamente, de formas ms significativas. Tim OReilly originalmente defini las caractersticas de Web 2.0: La Web como plataforma Aprovechamiento de la inteligencia colectiva Los datos son el prximo Intel inside Fin de los ciclos de versiones de software Modelos livianos de programacin Software no limitado a un solo dispositivo Experiencia de usuario enriquecida
Estas caractersticas se pueden agrupar en tres reas: uso de la Web como plataforma, la Web como un lugar para leer y escribir abundante contenido y el uso colaborativo y social de la Web. La Web como plataforma Los sistemas de Web 2.0 usan la Web como plataforma, como una gran variedad de dispositivos interconectados que pueden brindar un nuevo nivel de experiencia enriquecida e inmersiva para el usuario, un modelo de programacin liviano y fcil de utilizar para el desarrollador y un mecanismo de implementacin rpido y flexible para el proveedor. Web 2.0 vuelve a concebir Internet desde la perspectiva del usuario, el desarrollador y el proveedor, cada uno de los cuales permite nuevos y creativos usos de Internet. El concepto de servicio se aplica para todos los sistemas conectados, incluida, por supuesto, la Web 2.0. Un sistema basado en servicios se basa en el principio de separacin de incumbencias mediante el uso de paso de mensajes o acoplamiento escaso. El acoplamiento escaso permite que la funcionalidad se cree como un servicio y se entregue sobre una red, por ejemplo, en el mundo de Web 2.0, se puede brindar funcionalidad diaria mediante un motor de blog y se puede entregar como un servicio para el usuario final o los bloggers en Internet. Esta entrega de funcionalidad de software
Web 2.0 Las aplicaciones de Web han experimentado importantes cambios en la ltima dcada; diez aos atrs, no existan las aplicaciones o sitios de intercambio en la Web, simplemente, haba sitios compuestos de pginas estticas o aplicaciones de comercio electrnico. Las compaas que tenan sitios de Web orientados a clientes podan conectarse con consumidores expertos en Internet y utilizar sus sitios de Web como canales para ingresar al mercado y vender sus productos; las intranets corporativas se utilizaban principalmente para publicar noticias y polticas de la compaa. Ms recientemente, los sitios de Web se han convertido en destinos para que las comunidades de usuarios creen y compartan datos complejos y muy variados, como por ejemplo, msica, imgenes y videos y para que analicen y evalen ese contenido. Este fenmeno se denomin Web 2.0 en un documento de anlisis de gran influencia de Tim OReilly, en septiembre de 2005, y sigue expandindose en la actualidad. En resumen, Web 2.0 es la
Estos tres tipos de colaboracin son todos admitidos por los sistemas de Web 2.0. Web 2.0 en la empresa Las organizaciones de todo tipo y dimensin, desde nuevos emprendimientos hasta las 100 mejores empresas incluidas en Fortune y todos los sectores verticales de la industria han experimentado el crecimiento vertiginoso en la Web de sitios sociales y colectivos en el espacio del consumidor, como por ejemplo MySpace, YouTube y el diluvio de sitios Web 2.0. Las empresas han visto los avances que realizaron los protagonistas ms importantes como Amazon, eBay, Live, Google y Yahoo para incluir elementos sociales y colectivos, y el inters y la demanda que esto ha generado. En la actualidad, realizan una investigacin activa y en varios casos, crean nuevos negocios y portales que se basan en la comunidad, para sus propias organizaciones. Web 2.0 avanza hacia la empresa. Las organizaciones estn interesadas en el uso de tcnicas de Web 2.0, fundamentalmente en dos reas: dentro de la organizacin para mejorar la eficiencia y productividad y desde la organizacin hacia los clientes, para mejorar la satisfaccin de los clientes y los ingresos. El uso de Web 2.0 dentro de las organizaciones se denomina Empresa 2.0 y probablemente sea la primer rea en la que las organizaciones utilicen Web 2.0. El uso de la Web 2.0 en las empresas para enfrentarse a los clientes y consumidores es similar a la actividad de Empresa a Consumidor (B2C) pero con un objetivo social y colectivo, por lo tanto, se denomina Empresa a Comunidad, o B2C 2.0. El inters de este uso de comunidad como cliente crece rpidamente. Empresa 2.0 Empresa 2.0 Web 2.0 en la empresa es un trmino acuado por el Profesor MacAfee de la Hardvard Business School en el 2006 que describe el uso de las tcnicas de Web 2.0 dentro de la organizacin para mejorar la productividad y eficiencia. Mediante la adopcin de las tcnicas de Web 2.0, los trabajadores de informacin, al igual que sus homlogos consumidores, pueden controlar sus propias experiencias de usuario con menos orientacin por parte de la informtica, y por lo tanto, pueden crear para ellos mismos un entorno de trabajo ms intuitivo y eficaz. El resultado final es la satisfaccin, moral y productividad del trabajador mejorada. Si se comprenden y se implementan de forma adecuada, los patrones, mtodos y tecnologas de Web 2.0 se pueden utilizar en la empresa con muy buenos resultados, lo que mejora la eficiencia y productividad de
Existen cinco reas en las que se pueden utilizar las tcnicas de Web 2.0 en el trabajo con comunidades de clientes para proporcionar una Empresa a Comunidad:
EL FLUJO DESCENDENTE DE LAS CAPACIDADES HORIZONTALES DESDE EL PLUMBING DEL ISV HACIA ESTRUCTURAS Y HACIA PLATAFORMAS PRINCIPALES, PUEDE GENERALIZARSE AN MS PARA ABARCAR LOS ESCENARIOS DE SOFTWARE QUE SE DISTRIBUYE COMO SERVICIO. EN ESTE SENTIDO, UNA SDP SE VUELVE UN SISTEMA OPERATIVO PARA LA DISTRIBUCIN DEL SERVICIO.
El problema de crear estructuras enriquecidas es que con frecuencia no contribuyen directamente para el valor del software en s mismo. Son un mal necesario que facilitan el mantenimiento de la aplicacin a ms largo plazo y los ISVs y empresas prefieren que otro se encargue de ellos. Esto reafirma una situacin beneficiosa para ambas partes en la que plumbers pueden vender y concentrarse en funcionalidades horizontales para que los expertos de dominio se concentren en funcionalidades verticales en las que la propuesta de valor para el comprador es mayor. Seamos realistas, nadie compra una solucin porque tiene un mejor mecanismo de manejo de excepciones. Como muestra la Figura 1, existe un proceso continuo y natural de extraccin y generalizacin de funcionalidad desde aplicaciones hacia estructuras y desde estructuras hacia componentes de la plataforma principal. Al aumentar la cantidad de componentes compartidos, este flujo mejora las economas de escala. El flujo descendente de las capacidades horizontales desde el plumbing del ISV hacia estructuras y hacia plataformas principales, puede generalizarse an ms para abarcar los escenarios de software que se distribuye como servicio. En este sentido, una SDP se vuelve un sistema operativo para la distribucin del servicio, que se especializa en los requisitos y caractersticas horizontales de las aplicaciones que se distribuyen como SaaS. Las compaas de hosting tradicionales son candidatos naturales para implementar y ofrecer una SDP debido a su trayectoria, experiencia profesional, conjunto de habilidades y base instalada. Sin embargo, es posible que otros participantes consideren ingresar a este espacio emergente. Los ISVs que en la actualidad hostean ellos mismos sus soluciones de SaaS podran considerar la
Una Apl IU + BizLogic Una Apl IU + BizLogic + Infraestructura de la Apl Infraestructura de la Apl SO
Almacena miento
IU + BizLogic
IU + BizLogic
Almacena miento
Seguridad
..
Seguridad
...
Almacena miento
Seguridad
...
HW
HW
HW
monetizacin del entorno de hosting propio que crearon para ellos mismos si lo ofrecen como un entorno de distribucin de Saas de propsito general. Los integradores de sistemas que poseen excelencia operativa de nivel mundial obtenida a travs de sus ofertas de tercerizacin de procesos de negocio podran aprovechar este conocimiento en el espacio de SaaS de rpido crecimiento.
rampa, documentacin completa, SDKs e interfaces bien diseadas, cdigo de muestra, plantillas, asistentes y contenido para capacitacin. Cabe observar que los cuatro atributos mencionados previamente no estn hechos para representar un modelo de madurez. Las observaciones de las ofertas de SDP existentes parecen indicar que se ofrecen actualmente dos estrategias: una estrategia de amplitud, optimizada para brindar una plataforma integral, exhaustiva que abarca cada paso del ciclo de vida tpico de una aplicacin distribuida a travs de SaaS (Ver Figura 2), aunque con cobertura secundaria en algunas capacidades; una estrategia de profundidad, que trata slo ciertas etapas, pero ofrece caractersticas sofisticadas sobre stas. El mismo estudio tambin indica que el atributo de facilidad de uso an no est totalmente incorporado en las ofertas ya que varios de ellos dependen de procesos especficos e intensivos de humanos. Arquetipo de aplicacin: Puede una SDP aplicarse a todas las aplicaciones empresariales? Las aplicaciones empresariales se pueden clasificar en diferentes arquetipos segn sus caractersticas y requerimientos. Algunos ejemplos de estos arquetipos son los siguientes: Sistemas de procesamiento transaccional en lnea (OLTP): Se caracterizan por el corto tiempo de espera, alta sensibilidad, integridad de datos, flujos de trabajo predefinidos de IU. Ejemplos de estos arquetipos son: sitios de comercio electrnico, sistemas de banca electrnica y sistemas de CRM. Sistemas de anlisis o procesamiento analtico en lnea (OLAP): Se caracterizan por su capacidad para producir consultas analticas complejas y altamente adaptables a las necesidades del usuario sobre un conjunto de datos multidimensional, con tiempo de respuesta mnimo. Los sistemas BI forman parte de esta categora. Sistemas por lotes: Son capaces de realizar operaciones sobre grandes conjuntos de datos de un modo eficaz, lo que permite la coordinacin de trabajos para maximizar la utilizacin del CPU con polticas de recuperacin para las excepciones. Cada uno de estos grupos de aplicaciones posee sus propias limitaciones, caractersticas y patrones ptimos de diseo que se pueden aplicar para resolver los desafos que presentan. Con mucha
EL PUNTO CLAVE ES QUE LA EFICACIA DE SDP DEPENDE EN GRAN MEDIDA DEL ARQUETIPO QUE SE SIRVI. CUANTO MS CONOCIMIENTO DE LA APLICACIN POSEE UNA SDP, MAYOR ES SU CAPACIDAD PARA AUMENTAR LA EFICACIA AL EJECUTARLA Y OPERARLA Y MAYOR ES EL GRADO DE USO COMPARTIDO.
Factores de xito de una SDP El factor de xito de una SDP est determinado por los siguientes atributos: 1. Capacidades operativas bsicas: Capacidad para brindar Acuerdos de Nivel de Servicios (SLAs) slidos sobre requisitos no funcionales como disponibilidad (tiempo de funcionamiento y tolerancia a fallas), escalabilidad y recuperacin de desastres y sobre caractersticas de servicio genricas, como presencia geogrfica mltiple, atencin al cliente 24/7 y seguridad fsica en mltiples capas. 2. Profundidad de los servicios: Grado de sofisticacin de los servicios que se brindan, por ejemplo, soporte de facturacin para mltiples opciones de pago. 3. Amplitud de los servicios: Integridad de la plataforma, en otras palabras, el soporte para las diferentes etapas del ciclo de vida de una aplicacin distribuida a travs de SaaS, como servicio de facturacin, organizacin de la aplicacin, servicios para la planificacin de la capacidad y mtodos para la revisin y actualizacin de aplicaciones. 4. Facilidad de uso: Capacidad de uso desde la perspectiva del ISV; en otras palabras, el costo de aprender y utilizar los servicios que proporciona la SDP. Las SDPs de fcil uso poseen poco tiempo de
Especializacin de la abstraccin
IU + BizLogic
Servicios empresariales Medicin
ISV
Servicios empresariales
Facturacin Medicin Mercado Marca
Facturacin
Facturacin
Arquitectura de aplicacin
Registro Manejo de excepciones Vnculo de datos Vnculo de datos
Perfil
Perfil
Derivacin de incidentes
Servicios operativos
HOSTER
Servicios de red
Almacenamiento
Ejecucin
Seguridad
Almacenamiento
Ejecucin
Seguridad
Servicios operativos
Tolerancia a fallas
Base de datos
Herramientas de Infr.
Supervisin principal
Tolerancia a fallas
Base de datos
Herramientas de Infr.
Supervisin principal
Planificacin de capacidad
Planificacin de capacidad
Derivacin de incidentes
Infraestructura principal y SO
Infraestructura principal y SP
Hardware
Servidores Discos Red
Hardware
Servidores Discos Red
Centro de datos
Centro de datos
AN CON MUY POCO O SIN CONOCIMIENTO DE LO QUE REALIZA LA APLICACIN, LOS HOSTERS POR LO GENERAL PUEDEN PROPORCIONAR AL ISV INFORMACIN DETALLADA SOBRE EL RENDIMIENTO DE LA BASE DE DATOS. ESTO SE DEBE A QUE LOS ARTEFACTOS DE LAS BASES DE DATOS SON COMUNES PARA TODOS LOS ISVS Y LA PLATAFORMA EN LA QUE ESTOS ARTEFACTOS SE INSTANCIAN SE INSTRUMENTA EN ESE NIVEL DE ABSTRACCIN.
El punto principal aqu es que estos artefactos existen en todas las aplicaciones que se basan en bases de datos, sin importar el ISV que las haya creado. A modo comparativo, con el uso de una aplicacin de Web como ejemplo, el nico artefacto que se comparte entre los diferentes ISVs es la pgina Web que se identifica mediante un URL, un elemento de aplicacin demasiado general como para ser administrado de forma eficaz. Preguntas como Qu parte de la pgina demora ms en cargar?, Qu componentes se instancian a travs de una pgina particular? o Cul de estos componentes dependientes causa problemas de contencin o en tiempo de ejecucin?, requieren inspeccin de cdigo, uso de herramientas avanzadas y/o un profundo conocimiento del modo en el que se creo la aplicacin, procedimientos que por naturaleza no se extienden a miles de aplicaciones. Actualizar todo (excepto sistemas operativos bsicos, equipos de red y otras infraestructuras bsicas) requiere procedimientos manuales as como tambin interacciones humanas (correos electrnicos, llamadas telefnicas) entre los hosters y los expertos de ISV.
Las aplicaciones de SaaS que operan en este entorno bsico, por lo general, se implementan mediante el uso de una gran variedad de bibliotecas y pilas de tecnologas no necesariamente compatibles. Por ejemplo, se puede encontrar una aplicacin de VB6 entregada y almacenada mediante Servicios de Terminal, una aplicacin de Web que utiliza diversos componentes en tiempo de ejecucin y estructuras disponibles. En otras palabras, la excepcin es la regla. Este escenario se caracteriza principalmente por el uso compartido de infraestructura operativa. En resumen, las economas de escala en este escenario estn limitadas a componentes de un nivel bastante bajo. Escenario B: Mejora de la eficacia a travs de un conocimiento ms profundo de la arquitectura de aplicaciones. Una cantidad mejorada de componentes compartidos produce niveles ms altos de eficacia, por lo tanto, la pregunta es Cules son los candidatos ms naturales para ser extrados desde aplicaciones hacia la SDP? Los candidatos evidentes son aquellos que hacen referencia a servicios de infraestructura de aplicaciones como por ejemplo: configuracin de aplicaciones, informe y manejo de excepciones en tiempo de ejecucin, registro y auditora, seguimiento, almacenamiento en cach. Cada aplicacin los necesita, incluso, con frecuencia, los ISVs los confeccionan una y otra vez. Un ejemplo de una estructura comn, estndar y ampliamente adoptada de infraestructura de aplicaciones es Enterprise Library de Microsoft. Al exponer pblicamente estos servicios bsicos, la SDP posee una capacidad mucho mayor para automatizar procedimientos comunes y brindar capacidades de gestin operativa ms avanzadas. Por lo tanto, dispone de ajustes ms detallados, personalizacin y resolucin de problemas. Cabe observar que el hoster no necesita comprender en detalle lo que hace la aplicacin, sino ms bien, el
10
Supervisin de SLA
HOSTER
ISV
ISVs
Infraestructura de aplicacin
Registro Configuracin Manejo de excepciones Validacin
Infraestructura principal y SO
HOSTER
Herramientas de Infr.
Usuarios
Base de datos
Administracin de usuarios
Ejecucin
Seguridad
Hardware
Servidores Discos Redes
Centro de datos
modo en el que lo hace (por ejemplo, Dnde se encuentran las capacidades de SDP con mnima dependencia sobre cualquier cadenas de conexin para la base de datos almacenada? Cmo se implementacin concreta. Esto tambin evita la exposicin innecesaria al pblico de la propiedad intelectual y componentes internos de SDP. notifican y registran las excepciones en tiempo de ejecucin?). Debido a que posiblemente los ISVs desarrollen desde estos APIs, Para confirmar este escenario, se requiere una interaccin e integracin el hoster debe publicar un SDP SDK que incluya documentacin, mucho ms profunda entre el ciclo de vida de desarrollo de software muestras e incluso, algunas herramientas bsicas para que Figura 5: Ejemplo de productos diferenciados para la misma funcin descarguen y utilicen los ISVs. En este escenario, los hosters pueden Una Apl Una Apl claramente ampliar procedimientos operativos bsicos ya que todos ellos son comunes y los casos IU + BizLogic IU + BizLogic excepcionales se convierten en excepciones. Las aplicaciones que no cumplen con los estndares, por supuesto, pueden llegar a ser productos premium para aumentar la fuente de ingresos. Adems, los hosters pueden ofrecer una mayor variedad de servicios SDP Registro Registro diferenciados con diferentes esquemas de monetizacin. Por ejemplo, los hosters saben que todas las aplicaciones registrarn excepciones en tiempo de ejecucin mediante el uso de las mismas polticas y procedimientos, por lo tanto, podran ofrecer en el paquete de hosting bsico, un informe y registro de excepciones en tiempo de ejecucin Visor de registros bsicos, y la escalacin, notificacin y registro de excepciones en tiempo de ejecucin avanzados podran llegar a Panel de ser productos premium. (Ver Figura control 5). Es importante observar que con Producto bsico Producto premium este enfoque la aplicacin del ISV no cambia, ya que toda esta lgica (plumbing) reside en el lado de SDP.
Anlisis y notificacin
11
IU + BizLogic
Promocin
IU + BizLogic
Registro
Infraestructura de apl.
Manejo de excepciones
Registro
Infraestructura de apl.
Manejo de excepciones
Infraestructura principal y SO
Supervisin principal Servicios de red Almacenamiento Herram. de Infr. Ejecucin Usuarios Base de datos Adm. de usuarios
Infraestructura principal y SO
Supervisin principal Servicios de red Almacenamiento Herram. de Infr. Ejecucin Usuarios Base de datos Adm. de usuarios
Seguridad
Seguridad
Hardware
Servidores Discos Red
Hardware
Servidores Discos Red
Pre-produccin
EL CONTROL DE VERSIN, GESTIN INTEGRADA DE INCIDENTE, PROMOCIN DE LA VERSIN Y PRUEBA SE OFRECEN A TRAVS DE LA SDP. ESTA INFRAESTRUCTURA POSIBILITA QUE PROGRAMAS COMO BETA TESTERS SE EJECUTEN EN REGIONES CONTROLADAS DE LA SDP Y DE ESTE MODO SE PUEDEN RECOPILAR COMENTARIOS, PATRONES DE USO Y RESOLUCIN DE FALLAS, ANTES DE QUE LAS CARACTERSTICAS SE INCORPOREN A LA VERSIN FINAL.
(SDLC) propio del hoster y del ISV. Tambin en este escenario, la implementacin de soluciones dentro de SDP se realiza mediante procedimientos altamente automatizados y con mnima intervencin manual. Estos procedimientos incluyen caractersticas avanzadas para la configuracin y validacin automtica de los requisitos de la aplicacin (por ejemplo, prerrequisitos, ubicacin de servidores, cadenas de conexin). La implementacin en SDP va ms all de secuencias de configuracin y cdigo para incluir los SLAs negociados, requisitos operativos, como por ejemplo administracin de capacidad automtica y derivacin de incidentes, parametrizacin de la facturacin. La SDP tambin puede proporcionar entornos de prueba en los que se puede ejecutar y verificar la aplicacin antes de promoverla a produccin. Los entornos de prueba permiten simular la facturacin, creacin de clientes, fallas, etc., para permitir el modelado ms complejo de escenarios del mundo real. Esto puede considerarse como pruebas de unidad para los SLAs entre el hoster y el ISV. (Ver Figura 6). De un modo interesante, esto produce una nueva clase de servicios que se pueden ofrecer ms all del tiempo de ejecucin: por ejemplo, la simulacin de fallas, prueba de carga, anlisis de rendimiento, y
Produccin
optimizacin pueden ponerse a disposicin de los ISVs. Los ISVs ms pequeos podran tener acceso a recursos temporarios que seran demasiado costosos como para que los tengan. En la produccin, debido al profundo conocimiento del modo en el que funciona la aplicacin, la SDP puede ofrecer ajustes y capacidades de administracin de recursos automticos. Las SDPs ms avanzadas pueden asignar de forma dinmica nuevos equipos, incorporar CPUs a un clster, asignar mayor ancho de banda para la comunicacin, y cualquier otra infraestructura que sea necesaria para mantener la aplicacin conforme a los SLAs acordados. Ya que las aplicaciones se instrumentan completamente, los hosters pueden ofrecer inteligencia sobre los patrones de uso y un anlisis ms detallado del modo en que funciona y se desempea la aplicacin, lo que posibilita devolver esta informacin (probablemente como un servicio Premium) para el proceso de planificacin del producto de los ISVs. Debido a los procedimientos de implementacin y el aseguramiento de calidad altamente automatizado, los ISVs tienen la oportunidad de ofrecer mejoras para los productos casi en tiempo real sobre la base de la inteligencia recopilada y de mejorar sus productos de forma constante basndose en opiniones de usuarios ms precisas. La venta, marca, empaquetado y agregacin son posibles mediante reglas de composicin bien definidas, por lo tanto, el hoster puede crear productos empaquetados con servicios comunes a travs de diferentes soluciones (como inicio de sesin nico o administracin de roles comunes). Tambin, se permite el uso de etiquetas blancas para que los intermediarios y terceros creen productos personalizados, especializados a partir de la misma base de cdigo. Escenario D: La SDP perfecta La SDP perfecta an no existe. Esta seccin es un poco de extrapolacin y un poco de especulacin. En el escenario ms avanzado, adems de todas las caractersticas descriptas anteriormente, la SDP incluye servicios para la administracin completa del ciclo de vida de la aplicacin, lo que permite una integracin
12
Recursos MSDN Architecture Development Center http://msdn.microsoft.com/architecture SaaS Section on MSDN Dev Center http://msdn.microsoft.com/architecture/saas LitwareHR A sample SaaS-delivered application developed, por Equipo de Estrategia de Arquitectura de Microsoft http://www.codeplex.com/litwarehr
Sobre los autores Gianpaolo Carraro es director de Entrega de Servicios, en el Equipo de Estrategia de Arquitectura de Microsoft. En su funcin, lidera el pensamiento SaaS y las mejores prcticas en arquitectura para Microsoft. Antes de desempearse en Microsoft, Gianpaolo fue cofundador y arquitecto jefe de un nuevo emprendimiento especializado en SaaS y ms atrs en el tiempo fue miembro del equipo tcnico de los Laboratorios Bell. Gianpaolo ha publicado varios trabajos y es orador frecuente en las conferencias de TI internacionales ms importantes. Descubra ms sobre su persona visitando su blog en http://blogs.msdn.com/gianpaolo Fred Chong es arquitecto en el Equipo de Estrategia de Arquitectura de Microsoft, es reconocido en la industria como un experto en el tema sobre arquitectura SaaS. Anteriormente, ha diseado e implementado protocolos de seguridad y componentes de red para soluciones cliente y productos de Microsoft. Fred ha realizado una investigacin en el Centro de Investigacin T.J. Watson de IBM y en la Universidad de California en San Diego. Consulte su blog en http://blogs.msdn.com/fred_chong Eugenio Pace es arquitecto en el Equipo de Estrategia de Arquitectura de Microsoft, responsable del desarrollo de guas de arquitectura para SaaS. Antes de desempearse en el Equipo de Estrategia de Arquitectura, fue gerente de productos para el Equipo de Patrones y Prcticas de Microsoft, responsable de la distribucin de guas de arquitectura para el cliente, incluidos clientes de Web, clientes inteligentes y clientes mviles. Durante ese tiempo, su equipo lanz al mercado el Bloque de Aplicacin de IU mixta y tres fbricas de software para clientes inteligentes de escritorio y mviles y para el desarrollo de Web. Antes de unirse al equipo de patrones y prcticas, fue arquitecto de Servicios de Consultora de Microsoft donde lider el desarrollo de varias soluciones empresariales en todo el mundo. Consulte su blog en http://blogs.msdn.com/eugeniop
Figura 7: Integracin del ciclo de vida operativo del hoster y SDLC de los ISVs en la SDP Perfecta
13
Desarrollar aplicaciones activas dentro del explorador de Web se parece mucho a mirar vidrieras en Main Street: muchas tiendas para elegir cosas, muchas cosas maravillosas para mirar en las vidrieras de cada tienda, pero se no puede llegar a ninguna de ellas. Su madrastra malvada, Frau Browser, tira de la correa cada vez que usted se inclina demasiado hacia la vidriera. Ella dice que es por su bien, pero usted comienza a cuestionarse si la correa corta se debe ms a la conveniencia de ella o a su seguridad. Los exploradores de Web aslan pginas activas en diferentes dominios para prevenir que unos miren las notas de otros sobre el usuario final. En los comienzos de Internet, el modelo de aislamiento era adecuado porque pocos sitios colocaban lgica de aplicacin significativa en el cliente del explorador, e incluso aquellos que lo hacan, slo accedan a los datos desde su propio servidor. Cada servidor de Web era su propio silo, que tena vnculos slo de HTML hacia contenido externo. Internet en la actualidad no es as. La experiencia de Internet ha evolucionado hacia la agregacin de datos desde mltiples dominios. Esta agregacin se lleva a cabo mediante la personalizacin de sitios que realiza el usuario as como tambin sitios que agregan valor a travs de la agrupacin de combinaciones de diversas fuentes de datos. En este mundo, el modelo de aislamiento de dominio del explorador de Web se ha vuelto un enorme obstculo que dificulta el desarrollo de la aplicacin de Web del lado del cliente. Para evitar este obstculo, los diseadores de aplicaciones de Web han trasladado ms y ms lgica de aplicacin hacia sus servidores de Web, lo que sacrifica la escalabilidad del servidor slo para obtener resultados. Mientras tanto, la terminal sin procesamiento de 2GHz, 2GB del usuario final, permanece inactiva. Si las computadoras personales se construyeran como un explorador de Web, se podran guardar los datos en el disco, pero no se podran utilizar esos archivos con ninguna otra aplicacin de su equipo ni el equipo de otras personas. Si decidiera cambiar a una marca diferente de editor de fotos, no podra editar ninguna de sus fotos anteriores. Si se quejara con quienes crearon su editor de fotos
anterior, ellos menospreciaran la queja y diran: No sabemos lo que ese otro editor de fotos puede hacer con sus datos, puesto que no sabemos o confiamos en ese otro editor de fotos, por lo tanto, tampoco usted debera! Y no, no le permitiramos que use sus fotos con ellos, porque ya que proporcionamos el espacio de almacenamiento para esas fotos, realmente, en parte, son nuestras fotos. No podra ni siquiera encontrar sus archivos, a menos que conociera primero la aplicacin con la cual los creo. Qu editor de fotos us para las fotos del cumpleaos de Stevie? No puedo encontrarlas!. Y qu sucede cuando ese editor de fotos vanguardista y moderno desdichadamente quiebra y desaparece? Se lleva todas las fotos con l! Le suena familiar? Esto es algo cotidiano que nos sucede a todos cuando usamos aplicaciones de Web o sitios de Web en Internet. El aislamiento de dominios impide que utilice su lista de reproduccin de msica para comprar melodas similares en una tienda en lnea independiente (no relacionada con el fabricante de su reproductor de msica) o en un quisco que se encuentra dentro de una tienda minorista. El aislamiento de dominios tambin dificulta en gran medida la creacin de aplicaciones de Web livianas, de infraestructura limitada que segmenta y separa datos extrados desde diversos servidores de datos de una red corporativa. Un subdominio foo.bar.com de su red corporativa interna bar.com est aislado de bar.com y bee.bar.com del mismo modo que est aislado de direcciones externas como xyz.com. Sin embargo, uno no quiere vencer todos los obstculos y luego repartir flores. Las amenazas para la seguridad personal y de los datos contra las cuales protege la poltica estricta de aislamiento de dominio del explorador son reales y desagradables. Con infraestructura y consideracin detallada, se puede lograr una solucin intermedia que brinde al usuario mayores beneficios al mismo tiempo que mantiene las prcticas de seguridad necesarias. Los usuarios deben controlar la cantidad, tipo y momento en el que su informacin se pone a disposicin de un determinado sitio de Web. El objetivo aqu no es el libre flujo de informacin en todos los sentidos, sino la libertad de los usuarios para que utilicen sus datos en la situacin y momento en los que cumplen con sus objetivos, sin tener en cuenta el lugar en el que se encuentran estos datos. Se necesita una forma en la que el explorador admita el acceso vlido a datos entre dominios sin poner en riesgo la seguridad del usuario final y el control de sus datos. Un paso importante en este sentido es la propuesta de estndares de desarrollo que organiz Ian Hickson para ampliar xmlHttpRequest y de este modo admitir conexiones entre dominios con el uso de inclusiones/exclusiones voluntarias (opt-in/opt-out) basadas en el dominio por parte del servidor solicitado. (Ver Recursos). Si esto se aprueba despus de que lo evalen los expertos de la industria y si se implementa a travs de los exploradores ms importantes, ofrece la posibilidad de disminuir la barrera entre dominios para usos
14
legtimos, mientras que an se protege contra usos ilegtimos. Aunque, en realidad, pasaran varios aos antes de que esta propuesta se implemente con los exploradores ms importantes y en todas partes del campo. Qu se puede hacer ahora? Existen patrones de comportamiento admitidos por todos los exploradores que permiten que el cdigo JavaScript que reside en el contexto del dominio de un explorador observe los cambios que se realizan a travs del JavaScript que reside en otro contexto de dominio dentro de la misma instancia del explorador. Por ejemplo, los cambios que se realizan en las propiedades de alto y ancho de un iframe se pueden observar dentro, y fuera del iframe. Otro ejemplo es la propiedad iframe.src. El cdigo que se encuentra fuera de un iframe no puede leer el URL del atributo src del iframe, pero puede escribir para el URL del src del iframe. Por lo tanto, el cdigo que se encuentra fuera del iframe puede enviar datos dentro del iframe a travs del URL del iframe. Esta tcnica de URL ha sido utilizada por diseadores de Web desde que los iframes se introdujeron por primera vez en HTML, pero los usos son por lo general primitivos, especficos y se improvisan de forma precipitada. Lo que es peor, el paso de datos a travs del URL src iframe puede crear un vector de explotacin y de este modo permitir que el cdigo malintencionado dae el estado de la aplicacin de Web al tirar basura en el iframe. En el explorador, cualquier cdigo en cualquier contexto puede escribir para el atributo .src del iframe y el iframe receptor no tiene conocimiento del lugar del cual vienen los datos del URL. En la mayora de las situaciones, no se debe confiar en los datos de origen desconocido. Este artculo analizar los problemas y tcnicas de solucin del canal de datos entre dominios seguro del lado del cliente que desarroll el grupo Windows Live Developer Platform. Tcnica del URL para el Iframe Un iframe es un elemento de HTML que encapsula y muestra un documento HTML completo dentro de s mismo, lo que permite insertar un documento HTML dentro de otro. Llamaremos elemento primario del iframe a la pgina exterior o pgina host y contenido del iframe a la pgina interior. La pgina interior del iframe se especifica mediante la asignacin de un URL para el atributo src del iframe. Cuando el URL fuente del iframe posee el mismo nombre de dominio que la pgina host/exterior, el JavaScript de la pgina host puede navegar a travs del DOM interior del iframe y ver todos los contenidos. En cambio, el iframe puede explorar hacia arriba a travs de su cadena principal y ver todos sus DOM relacionados en la pgina
EL AISLAMIENTO DE DOMINIOS TAMBIN DIFICULTA EN GRAN MEDIDA LA CREACIN DE APLICACIONES DE WEB LIVIANAS, DE INFRAESTRUCTURA LIMITADA QUE SEGMENTA Y SEPARA DATOS EXTRADOS DESDE DIVERSOS SERVIDORES DE DATOS DE UNA RED CORPORATIVA. SIN EMBARGO, UNO NO QUIERE VENCER TODOS LOS OBSTCULOS Y LUEGO REPARTIR FLORES.
La pgina host asigna este url al atributo src del iframe. El iframe carga la pgina y activa el controlador de eventos onLoad de la pgina. El controlador de eventos onLoad de la pgina puede examinar su propio URL, encontrar el paquete de datos incrustado y decodificarlo para decidir lo que realizar a continuacin. En pocas palabras, sta es la tcnica de paso de datos del URL del iframe. El host crea una cadena de direccin URL desde un documento url desconocido + carga de datos, lo asigna el atributo src del iframe, el iframe se reactiva en el controlador de eventos onLoad y recibe la carga de datos. Qu ms se podra pedir? En realidad, mucho ms. Existen algunas advertencias para esta tcnica simple: Sin acuse de recibo. La pgina host no sabe si el iframe recibi los datos con xito. Sobrescritura de mensajes. El host no conoce el momento en el que el iframe finaliza el procesamiento del mensaje anterior, por lo tanto, no sabe el momento seguro en el que debe enviar el prximo mensaje. Lmites de capacidad. Una direccin de URL slo puede tener una extensin limitada y el lmite de la extensin vara de acuerdo al grupo del explorador. Firefox admite URLs con un lmite aproximado de 40k pero IE establece un lmite de menos de 4k. Cualquier
15
SE DEBE UTILIZAR ? O # PARA AADIR DATOS EN EL FINAL DEL URL DEL IFRAME? AUNQUE BASTANTE INOFENSIVAS EN APARIENCIA, EXISTEN EN REALIDAD ALGUNAS DIFERENCIAS IMPORTANTES EN EL MODO EN EL QUE LOS EXPLORADORES MANEJAN URLS CON PARMETROS DE CONSULTA EN OPOSICIN A URLS CON MARCADORES.
El explorador considera que las URLs http://bar.com/page.html#one, http://bar.com/page.html#two y http://bar.com/page.html#three son cachs equivalentes a http://bar.com/page.html. Si se utilizaran parmetros de consulta, el explorador considerara tres URLs diferentes y tres recorridos diferentes a travs de la conexin de red. Sin embargo, con el uso de marcadores se tiene como mucho un recorrido a travs de la conexin de red, las solicitudes subsiguientes se respondern desde la cach local del explorador (Ver Figura 2). Para los casos en los que es necesario enviar una gran cantidad de mensajes a travs del URL del iframe con el uso de la misma direccin URL base, los marcadores son ideales. Las cargas de datos que se encuentran en la porcin del marcador del URL no aparecern en el historial o la cach de pginas del explorador. Incluso, las cargas de datos nunca pasarn por la conexin de red despus de que la carga inicial de la pgina se almacena en cach. Los datos que se pasan entre la pgina host y el iframe no pueden ser vistos por ningn otro elemento DOM en la pgina host ya que el iframe
Explorador
Servidor de Web
Llenado de cach
Internet
Aciertos en la cach
16
17
indispensable requerido para transportar los datos recibidos hacia el iframe bar.com con estado. Un iframe no puede enumerar los secundarios de sus primarios para encontrar otros relacionado bar.com, pero puede buscar un iframe relacionado con el uso de windows.parent.frames[] si conoce el nombre del iframe relacionado. Cada vez que vuelve a cargarse para recibir datos nuevos en el URL, el mensajero del iframe puede buscar su iframe relacionado bar.com con estado mediante el uso de window.parent.frames[] y llamar a una funcin en el iframe con estado para pasar los nuevos datos del mensaje dentro del iframe con estado. De este modo, el contexto de dominio de bar.com en la memoria del explorador puede acumular fragmentos de mensajes a Agradecimientos travs de mltiples mensajes para reconstruir una carga mayor que la Gracias a Scott Issacs por el concepto original de paso de datos del extensin mxima del URL del explorador. URL de iframe. Muchas gracias a Yaron Goland y Bill Zissimopoulos por su gran colaboracin en las primeras implementaciones y depuracin Aplicacin de ideas del cdigo de canal y a Gabriel Corverra y Koji Kato por su trabajo en El equipo Window Live Developer Platform ha desarrollado estas ideas las etapas ms recientes. Es una locura total, pero puede funcionar! en una biblioteca canal de JavaScript. Estos canales entre dominios se utilizan en la implementacin de controles de Web de Windows Live Spaces y contratos de Windows Live (http://dev.live.com), con la Recursos intencin de que residan en pginas de Web de terceros pero que se XMLHttpRequest 2, Ian Hickson ejecuten en un iframe seguro en el contexto de dominio de live.com. http://www.mail-archive.com/public-webapi@w3.org/msg00341.html Los controles brindan a los sitios de terceros un acceso controlado del http://lists.w3.org/Archives/Public/public-webapi/2006Jun/0012.html usuario para sus datos de Windows Live, como por ejemplo, lista de contratos de usuarios o el lbum de fotos de Spaces. El objeto del Anne van Kesterens weblog canal admite el envo arbitrario de grandes cantidades de datos a http://annevankesteren.nl/2007/02/xxx travs de los lmites de dominio del iframe con acuse de recibo, control y segmentacin de mensajes e identificacin del remitente, y todos ocurren sin ser percibido. Nuestro objetivo es formar este cdigo de canal en una biblioteca Sobre el autor reutilizable, disponible para los colaboradores internos de Microsoft Danny Thorpe es desarrollador en el equipo de Windows Live as como tambin para terceros que sean desarrolladores de Web. Si Developer Platform. Su credencial dice SDE principal, pero prefiere bien el cdigo se ejecuta bien en sus contextos actuales, an Windows Live Quantum Mechanic ya que dedica la mayor parte de su debemos realizar algunas tareas en el rea de autodiagnstico y tiempo a coaccionar pequeos bits obstinados para que migren a resolucin de problemas, si se logran configurar los puntos finales del travs de barreras impenetrables. En el pasado trabaj sobre canal de forma correcta, funciona muy bien, pero puede ser una undisclosed browser technology en Google y antes fue Cientfico Jefe pesadilla real averiguar lo que no es correcto cuando se lo trata de en Borland y Arquitecto Jefe del compilador Delphi. En Borland tuvo la configurar por primera vez. El obstculo principal es el explorador gran suerte de trabajar bajo la tutora de Anders Hejlsberg, Chuck mismo, tratar de ver lo que sucede, o no, en diferentes contextos de Jazdzewski, Eli Boling y otros tantos legendarios de Borland. Antes de dominio es un cierto desafo cuando el explorador no muestra lo que unirse a Borland, era demasiado joven como para recordar algo. Visite hay del otro lado del muro. su blog en: http://blogs.msdn.com/dthorpe
18
aplicacin se desarrolla, o para aplicaciones que se crean desde el comienzo como parte de una estructura empresarial ms grande, la lgica de acceso a datos, con frecuencia, se divide en una capa de abstraccin de datos separada, o DAL. Ya sea parte de la aplicacin o un componente separado, supuestos implcitos codificados de forma rgida sobre el esquema de base de datos, relaciones, normas de uso y patrones de acceso hacen que el mantenimiento o extensin de este cdigo de acceso a datos sea cada vez ms difcil con el paso del tiempo, en especial, desde la perspectiva de cambios en el esquema subyacente. Analicemos algunos de estos problemas con ms detalle. Normalizacin de esquemas de bases de datos Los datos en una base de datos, por lo general, se distribuyen en una vista normalizada, como lo describi el Dr. Codd, con tablas de disposicin rectangular, homogneas, separadas que contienen columnas de valores escalares nicos. Reduce la redundancia para mejorar la integridad de los datos a travs del movimiento de valores especficos que no sean fila dentro de una tabla separada. Los datos de estas tablas individuales se combinan mediante uniones que se basan en el conocimiento de aplicacin implcito sobre los diferentes valores que representan dentro de las columnas. Se pueden utilizar o no claves externas entre tablas de informacin relacionada como una forma de forzar an ms la integridad de datos, pero no definen en s mismas rutas de navegacin o condiciones de unin.
Modelos de aplicacin versus esquemas de almacenamiento Las aplicaciones modernas, en particular las aplicaciones de Web, tratan fundamentalmente la exposicin y manipulacin de datos de un tipo u otro. Los datos pueden tener la forma de resultados de bsqueda, catlogo de bienes, perfil de usuarios, informacin de cuentas, informacin financiera, informacin personal, coordenadas de mapas, meteorologa, etc., pero son todos datos y por lo general se almacenan en algn lugar en una base de datos. No obstante, los datos que se almacenan en bases de datos, con frecuencia, no tienen la forma ms adecuada como para que la aplicacin los manipule o exponga al usuario. El modelo de datos relacionales del esquema de bases de datos, por lo general y de forma correcta, se optimiza segn incumbencias de almacenamiento e integridad, no para el uso de la aplicacin. Como explica el Dr. Peter Chen en su artculo vanguardista en el que introdujo el Modelo Entidad-Relacin: El modelo relacional...puede lograr un alto grado de independencia de datos, pero puede perder cierta informacin semntica importante sobre el mundo real. Esta ponencia continua con la descripcin de un Modelo Entidad-Relacin alternativo que ...adopta la percepcin ms natural del mundo real que consiste en entidades y relaciones. (Ver Recursos). En pocas palabras, las aplicaciones orientadas a objetos en la actualidad, sin olvidar a los usuarios finales, tienden a razonar sobre los datos en trminos ms ricos que las filas y columnas planas de una base de datos relacional. El mundo real incluye una nocin fuerte del tipo del objeto, su identidad y sus relaciones con otros objetos. Si dejamos de lado por un momento los asuntos de expresividad, incluso si todos los conceptos de aplicaciones pudieran representarse mediante un modelo relacional, quien crea aplicaciones, por lo general, no posee control sobre el esquema de base de datos. An peor, el esquema podra cambiar con el tiempo para optimizar diferentes patrones de uso, lo que invalida supuestos implcitos, asignaciones y rutas de acceso no modificables. Las aplicaciones pequeas, habitualmente, comienzan directamente con la incrustacin de la lgica para asignar el esquema relacional a los objetos de datos de la aplicacin. A medida que la
LAS APLICACIONES ORIENTADAS A OBJETOS EN LA ACTUALIDAD, SIN OLVIDAR A LOS USUARIOS FINALES, TIENDEN A RAZONAR SOBRE LOS DATOS EN TRMINOS MS RICOS QUE LAS FILAS Y COLUMNAS PLANAS DE UNA BASE DE DATOS RELACIONAL.
Analicemos un ejemplo. Imaginemos la direccin de un muelle deportivo que vende embarcaciones usadas y desea registrar el inventario en una base de datos que expondr a los clientes a travs de una aplicacin de Web. La informacin que se debe almacenar para cada boat es: registration, make, year, length y width. Para las embarcaciones con engines se desea almacenar: make, model, year, horsepower, type of fuel y SerialNumber of the engine. Un esquema totalmente normalizado dividira la informacin del motor en tres tablas separadas, una tabla contendra la informacin de un tipo de motor particular (make, model, horsepower y type of fuel; make y model constaran de una clave compuesta); otra para cada motor en s (SerialNumber, year, make y model) y otra para asociar embarcaciones y motores. El esquema resultante podra ser similar al de la Figura 1. Para poder mostrar una pgina de inventario relativamente simple que contenga boat registration number, year, y make, adems de
19
Boat Engines EngineSerialNum C1075 M30099 M3060 T5090 R8596 H31096A H31096B BoatID WN123AB WN234CD WN345EF WN456GH WN567IJ WN678KL WN678KL
informacin relacionada con el engine, para todas las motor boats, la aplicacin de Web podra utilizar la siguiente consulta:
SELECT Boats.RegNum, Boats.Year AS Boat_Year, Boats.Make AS Boat_Make, BoatEngine.SerialNumber, BoatEngine.Year AS Engine_Year, BoatEngine.Make AS Engine_Make, BoatEngine.Model AS Engine_Model, BoatEngine.HP FROM Boats INNER JOIN ( SELECT EngineType.Make, BoatEngines.BoatID, EngineTypes.HP FROM EngineTypes INNER JOIN (Engines INNER JOIN BoatEngines ON Engines.SerialNumber = BoatEngines.EngineSerialNum) ON EngineTypes.Model = Engines.Model AND EngineTypes.Make = Engines.Make ) AS BoatEngine ON Boats.RegNum = BoatEngine.BoatID
Esta consulta no slo es demasiado compleja, sino que tambin requiere (e incluye) una comprensin implcita del modo en el que se relacionan las tablas; que las columnas Make y Model de la tabla Engines se relacionan con las columnas Make y Model de la tabla EngineTypes y que las columnas EngineSerialNum y BoatID de la tabla BoatEngines se relacionan con las columnas SerialNum y
RegNum de las tablas Engines y Boats, respectivamente. Tambin, la consulta intenta devolver slo datos sobre motorboats, y no sobre sailboats al realizar una unin interna entre embarcaciones y motores. Por supuesto, esta consulta omitira todas las embarcaciones a motor que se vendieron sin el motor y si bien la consulta excluira las embarcaciones a vela pequeas, las embarcaciones ms grandes, incluida la embarcacin a vela Hunter de 25, por lo general tienen motor. Por lo tanto, si bien el supuesto puede ser vlido cuando se crea la aplicacin, segn el esquema y datos en ese momento, incrustar este tipo de lgica implcita en consultas dentro de la aplicacin introduce dependencias sutiles en los datos y el esquema que son difciles de registrar y mantener. Claramente, a pesar de que el esquema est muy bien normalizado desde la perspectiva de una base de datos, no es una forma muy conveniente para la aplicacin. Lo que es peor, para poder recuperar la informacin deseada, sin mencionar posibles actualizaciones como mover un motor a una embarcacin diferente, se debe incrustar en la aplicacin el conocimiento implcito sobre las relaciones entre las tablas. Los cambios en el esquema, por ejemplo combinacin de las tablas Engines y BoatEngines (un grado razonable de desnormalizacin que un DBA puede considerara para mejorar el rendimiento), causan que la aplicacin se divida de formas difciles de anticipar y resolver. Representacin de herencia Ahora supongamos que se desea incluir informacin adicional en el esquema. Primero, se hace explcita la diferencia entre embarcaciones a vela y diferentes tipos de embarcaciones a motor a travs de la inclusin de una columna Style en la tabla. A continuacin, para salivotas se incluye type of Keel (Fixed, Swing o Dagger) y number of sails. Para skiboats, se incluye si posee ski pylon y/o tower, y para MotorYachts se desea incluir si posee o no flybridge.
20
Boats RegNum WN123AB WN234CD WN345EF WN456GH WN567IJ WN678KL Year 1977 1999 1962 1957 1997 1996 Make Hunter Calabria Del Mar Harvey Seadoo Bayliner Style Sail Ski Motor Motor PWC Yacht Length
25 23 16 13.5 9 47
Beam
8
NumSails
3
Esto se vuelve un desafo con el modelo de datos relacionales porque cada pieza adicional de informacin slo aplica para un subconjunto de filas dentro de la tabla Boats. Una forma de representar esto es mediante la extensin de la tabla de base Boats con miembros para cada tipo derivado, mediante el uso de valores nulls para las filas en las que no se aplican. Por ejemplo, esta informacin podra expresarse en una tabla dispersa simple Boats como muestra la Figura 2. Como se puede observar, cuantas ms propiedades se incluyen para cada tipo derivado, ms aumenta el esquema de la tabla total y ms se completan campos no relevantes con valores nulos. Una forma alternativa para representar esta misma informacin sera dividir la informacin adicional de Sailboats, Ski Boats y Motor Yachts en tablas separadas como se muestra en la Figura 3. Esta distribucin evita la necesidad de incluir columnas dispersas en la tabla de base para cada propiedad del tipo derivado, pero realizar una consulta se vuelve an ms complejo ya que cada consulta debe unir las tablas adicionales para incluir la informacin completa de cada tipo derivado. Por ejemplo, para que devuelva boat registration, year, make e informacin relacionada con el engine para todos los motor boats sin tower, se puede escribir una consulta parecida a la que se muestra a continuacin:
FROM (Boats LEFT OUTER JOIN ( SELECT EngineTypes.Make, BoatEngines.BoatID, EngineTypes.HP FROM EngineTypes INNER JOIN (Engines INNER JOIN BoatEngines ON Engines.SerialNumber = BoatEngines.EngineSerialNum) ON EngineTypes.Model = Engines.Model AND EngineTypes.Make = Engines.Make ) AS BoatEngine ON Boats.RegNum = BoatEngine.BoatID ) LEFT JOIN SkiBoats ON Boats.RegNum = SkiBoats.RegNum WHERE Boats.Style In (Ski,Motor,PWC,Yacht) AND (SkiBoats.Tower=False OR SkiBoats.Tower IS NULL)
Cabe observar que la tabla Boats debe unirse con la tabla Skiboats para poder obtener la informacin de Tower, y se debe justificar el valor NULL en el predicado para las filas que no estn en Ski boats. Cambios en el esquema A medida que la tabla aumenta, el DBA puede decidir refactorizar el
SELECT Boats.RegNum, Boats.Year AS Boat_Year, Boats.Make AS Boat_Make, BoatEngine.SerialNumber, BoatEngine.Year AS Engine_Year, BoatEngine.Make AS Engine_Make, BoatEngine.Model AS Engine_Model, BoatEngine.HP
Figura 3: Almacenamiento de informacin extendida en tablas separadas Boats RegNum WN123AB WN234CD WN345EF Year 1977 1999 1962 Make Hunter Style Sail Length 25 23 16 13.5 9 47 Beam 8 87 6 510 310 1411 RegNum SkiBoats SkiPylon Tower No MotorYachts RegNum WN678KL Flybridge Yes RegNum WN123AB SailBoats KeelType Fixed NumSails 3
Calabria Ski Del Mar Harvey Seadoo Bayliner Motor Motor PWC Yacht
WN234CD Yes
21
Figura 4: Tablas completamente separadas para cada Boat Type MotorBoats RegNum WN345EF WN456GH Year 1962 1957 Make Del Mar Harvey Length 16 13.5 Beam 6 510 RegNum WN678KL Year 1996 MotorYachts Make Bayliner Length 47 Beam 1411 Flybridge Yes
PWC RegNum WN567IJ Year 1997 Make Seadoo Length 9 Beam 310 RegNum WN234CD SailBoats RegNum WN123AB Year 1977 Make Hunter Length 25 Beam 8 KeelType Fixed Year 1999 Make Calabria
NumSails 3
esquema como por ejemplo que toda la informacin para un tipo particular de boat est en una tabla, como se muestra en la Figura 4. Este esquema se optimiza para consultas con un type of boat simple a expensas de consultas entre types of boats. Y, por supuesto, esto significa que las consultas en la aplicacin deben cambiar. La consulta para informacin sobre engine y boat sera:
Cabe observar que para consultar a travs de todos los types of boats, incluida la columna tower especfica para SkiBoats, se debe proyectar de forma explcita un valor null para ese campo de otras tablas dentro de UNION ALL. Entidades de ADO.NET Cada uno de estos ejemplos pone de manifiesto algunos de los desafos que enfrentan los desarrolladores de aplicaciones en la actualidad cuando tratan de exponer, manipular y almacenar modelos interesantes del mundo real en un esquema relacional plano. El hecho de que el esquema puede no ser propiedad del desarrollador de la aplicacin y puede cambiar con el tiempo, ayuda a comprender el motivo por el cual el acceso a datos goo puede ocupar esa parte desproporcionada de una aplicacin o marco en lo que respecta a cdigo, desarrollo y costo de mantenimiento. Llegada del Marco de Entidades de ADO.NET El Marco de Entidades de ADO.NET se lanzar al mercado en la primera mitad del 2008 como una extensin del Marco .NET que es parte del Visual Studio code name Orcas de Microsoft y representa el primer producto en una Plataforma de Datos de Entidad de Microsoft para trabajar con datos segn un Modelo de Datos de Entidad comn, enriquecido. El Marco de Entidades de ADO.NET es una implementacin del Modelo Entidad-Relacin del Dr. Chen adems de datos relacionales. En vez de permitir que la representacin de almacenamiento imponga el modelo de aplicaciones, la escritura para un modelo conceptual comn permite a las aplicaciones mayor expresividad en el modelado de datos mediante el uso de conceptos del mundo real que se pueden asignar de forma flexible a una variedad de representaciones de almacenamiento. (Para ms informacin sobre el Marco de Entidades ADO.NET, consulte la seccin Recursos) El Marco de Entidad utiliza un mecanismo de Vistas Cliente para ampliar las consultas y actualizaciones que se escriben contra el modelo conceptual en consultas contra el esquema de almacenamiento. Las consultas ampliadas se evalan completamente en la base de datos; no existe el procesamiento de consultas del lado del cliente. Estas Vistas Cliente se pueden compilar dentro de la aplicacin para el rendimiento, o se pueden generar en tiempo de ejecucin a partir del mapeo de metadatos que se proporcionaron segn archivos de XML, lo que permite que las aplicaciones que se implementan funcionen contra esquemas de almacenamiento diferentes o en desarrollo sin volver a compilarlas.
SELECT Boats.RegNum, Boats.Year AS Boat_Year, Boats.Make AS Boat_Make, BoatEngine.SerialNumber, BoatEngine.Year AS Engine_Year, BoatEngine.Make AS Engine_Make,BoatEngine.Model AS Engine_Model, BoatEngine.HP FROM ( (SELECT RegNum, Year, Make, Tower FROM SkiBoats UNION ALL SELECT RegNum, Year, Make, NULL As Tower FROM MotorBoats UNION ALL SELECT RegNum, Year, Make, Null AS Tower FROM PWC UNION ALL SELECT RegNum, Year, Make, Null AS Tower FROM MotorYachts ) AS Boats LEFT OUTER JOIN ( SELECT EngineTypes.Make, BoatEngines.BoatID, EngineTypes.HP FROM EngineTypes INNER JOIN (Engines INNER JOIN BoatEngines ON Engines.SerialNumber = BoatEngines.EngineSerialNum) ON EngineTypes.Model = Engines.Model AND EngineTypes.Make = Engines.Make ) AS BoatEngine ON Boats.RegNum = BoatEngine.BoatID ) WHERE (Boats.Tower=False OR Boats.Tower IS NULL)
22
El Marco de Entidades permite exponer este modelo conceptual a la aplicacin mediante el uso de conceptos de aplicacin como por ejemplo, establecimiento inflexible de tipos, herencia y relaciones sobre cualquier esquema de bases de datos descripto anteriormente. El hecho de que la asignacin se realiza de forma declarativa, fuera de la aplicacin, significa que si el esquema de la base de datos evoluciona con el tiempo para optimizar diferentes patrones de acceso, slo debe cambiar la asignacin; la aplicacin puede continuar con el uso de las mismas consultas y recuperar los mismos resultados en el mismo modelo conceptual. Veamos el modo en el que el uso de este modelo conceptual simplifica los patrones de aplicacin. Realizar consultas al modelo conceptual Dado este modelo conceptual, realizar consultas sobre un nico conjunto de boats polimrfico se vuelve ms simple. Por ejemplo, el cdigo que se muestra a continuacin utiliza este esquema conceptual para consultar informacin sobre registration year, make y engine de todos los motorboats sin tower.
SELECT boat.RegNum, boat.Year, boat.Make, boat.Engines FROM Boats AS boat WHERE boat IS OF (Motorboat) AND (Boat IS NOT OF (SkiBoat) OR TREAT(boat AS SkiBoat).Tower = False)
Cabe observar que no se requieren uniones en la consulta; las entidades poseen establecimiento inflexible de tipos, las relaciones se recorren a travs de propiedades y las recopilaciones se pueden filtrar de acuerdo a los tipos de la jerarqua. Resultados anidados En cada una de las tres primeras consultas escritas directamente contra el esquema de bases de datos, los resultados seran algo parecido a la Figura 6. Se debe tener en cuenta que el ltimo boat (1996 BayLiner) aparece dos veces. Si se observan los datos, se puede ver que el 1996 Bayliner es un MotorYacht con dos Hino 310 engines. Debido a que los datos relacionales son planos, no hay una buena forma de representar mltiples engines en una nica fila del resultado, por lo tanto, se devuelven dos filas para el mismo boat; una para cada engine. La consulta en el modelo conceptual devuelve una columna Engines con una nica fila para cada boat que contiene la recopilacin de engines como muestra la Figura 7. Por otro lado, si slo se desea un subconjunto de datos para cada engine (Por ejemplo, Make y HP), esa informacin se puede proyectar de la siguiente manera:
Modelo de aplicacin La Figura 5 muestra un modelo de datos orientado a aplicaciones ms apropiado para la aplicacin de Web descripta. Cabe observar que, si bien se utiliz un diagrama de clase para representar el modelo, los objetos son slo de una forma para exponer el modelo conceptual a la aplicacin en el Marco de Entidades. El mismo modelo conceptual podra destinarse directamente mediante el uso de gramtica SQL extendida y podra devolverse como registros jerrquicos, polimrficos. Lo primero que notamos en este modelo es que no se parece en nada con ninguno de los esquemas de almacenamiento anteriores. Por ejemplo: 1. La clase Engine contiene informacin de la tabla EngineTypes (Make, Horsepower y Fuel) y de la tabla Engines (Year y SerialNumber). 2. En vez de una propiedad BoatID, la clase Engine contiene referencia para Boat. 3. Boats contienen un grupo variado de cero o ms engines. 4. Ms que exponer una propiedad de Style sobre Boat, o de tener tablas diferentes para cada uno, se utiliz un concepto de herencia ms natural para distinguir los distintos tipos de boats.
23
Figura 7: Devolucin de resultados como una tabla anidada RegNum WN234CD Year 1999 Make Calabria Engines SerialNum M30099 SerialNum M3060 SerialNum T5090 SerialNum R8596 SerialNum H31096A H31096B Year 1999 Year 1962 Year 1990 Year 1997 Year 1996 1996 Make Mercruiser Make Mercury Make Tohatsu Make Rotax Make Hino Hino objetos en vez de manipular valores de claves externas escalares. Los objetos de negocio, opcionalmente, pueden estar resueltos por identidad y registrados por cambios. A continuacin se ilustra un ejemplo de cdigo para el uso del modelo conceptual a travs de objetos de negocio. Este ejemplo muestra la forma de realizar consultas en el modelo conceptual para que devuelva boats como objetos, explore a travs de propiedades hacia la recopilacin de engines y para que elimine todos los engines que no poseen el mismo year que boat. Los cambios se guardan en la base de datos mediante la llamada a SaveChanges(). Model 350MagMPI Model Mark30 Model M50CEPTS Model 720CC Model W06DTA W06DTA HP 300 HP 30 HP 50 HP 85 HP 310 310
WN345EF
1962
Del Mar
WN456GH
1957
Harvey
WN567IJ
1997
Seadoo
WN678KL
1996
Bayliner
SELECT boat.RegNum, boat.Year, boat.Make, SELECT engine.Make, engine.HP FROM boat.Engines AS engine FROM Boats AS boat WHERE boat IS OF (Motorboat) AND (Boat IS NOT OF (SkiBoat) OR TREAT(boat AS SkiBoat).Tower = False)
Cabe observar que esa consulta no requiere que el desarrollador escriba uniones; los campos relevantes del engine se proyectan como una columna anidada que utiliza boat.Engines como el origen de la subconsulta. Distintas vistas para diferentes aplicaciones Las estructuras de las aplicaciones de Web en particular, por lo general, exponen distintas vistas de los mismos datos mediante aplicaciones de Web diferentes. Por ejemplo, los datos que se exponen a clientes de Web no autenticados podran ser un subconjunto de datos expuestos a miembros preferenciales, que pueden estar modelados de forma diferente a los datos que se exponen para aplicaciones de emisin de informes y administracin interna. De igual modo, el esquema de los datos con el que se trabaja dentro de la estructura de la aplicacin puede ser muy diferente al esquema de datos que se intercambia en transacciones interempresariales. El marco de entidades ADO.NET facilita este tipo de escenarios, de modo tal que permite que mltiples modelos conceptuales se asignen al mismo esquema de bases de datos. Modelado de resultados como objetos El ejemplo anterior muestra la devolucin de resultados como registros. En el caso del marco de entidades ADO.NET esto implica la devolucin de resultados como un DataReader que se ha extendido para admitir informacin de tipo, polimorfismo, anidamiento y valores complejos. Con entidades, tambin es posible escribir consultas en el mismo modelo conceptual y obtener una devolucin de resultados como objetos de negocio no modificables. Si se modelan los resultados como objetos de negocio, las relaciones se pueden explorar y actualizar mediante la insercin de propiedades sobre los
// Specify query as an eSQL string string eSql = SELECT VALUE boat FROM Boats AS boat + WHERE EXISTS( + SELECT engine from boat.Engines AS engine + WHERE engine.Year != boat.Year);
BoatInventory inventory = new BoatInventory(); ObjectQuery<Boat> motorizedBoats = inventory.CreateQuery<Boat>(eSql); // Include Engines in results motorizedBoats.Span.Include(Engines); // Loop through Engines for each Boat foreach(Boat boat in motorizedBoats) { foreach(Engine engine in boat.Engines) { if(engine.Year!= boat.Year) boat.Engines.Remove(engine); // alternatively // engine.Boat = null; } } inventory.SaveChanges();
24
Recursos Next-Generation Data Access: Making the Conceptual Level Real, J. Blakeley, D. Campbell, J. Gray, S. Muralidhar y A. Nori (MSDN, Junio de 2006) http://msdn2.microsoft.com/en-us/library/aa730866(VS.80).aspx The ADO.NET Entity Framework Overview (MSDN, Junio de 2006) http://msdn2.microsoft.com/en-us/library/aa697427(VS.80).aspx The LINQ Project (MSDN, Enero de 2007) http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx
BoatInventory inventory = new BoatInventory(); // Include Engines in queries for Boats inventory.Boats.Span.Include(Engines);
// Specify query through LINQ var motorizedBoats = from boat in inventory.Boats where boat.Engines.Any(e => e.Year != boat.Year) select boat;
Visual Studio Future Versions (MSDN, Enero de 2007) http://msdn2.microsoft.com/en-us/vstudio/aa700830.aspx Dr. Peter Chen: Entity Relationship Model - Past, Present and Future, Abril de 2007 http://channel9.msdn.com/Showpost.aspx?postid=298587 The Entity-Relationship Model Toward a Unified View of Data, P.P.S. Chen. ACM Transactions on Database Systems (TODS), 1976. A Relational Model of Data for Large Shared Data Banks, E. Codd. Communications of the ACM, 1970.
// Loop through Engines for each Boat foreach(Boat boat in motorizedBoats) { foreach(Engine engine in boat.Engines) { if(engine.Year != boat.Year) boat.Engines.Remove(engine); // alternatively // engine.Boat = null; } } inventory.SaveChanges();
Conclusin En resumen, existen al menos seis motivos por los cuales escribir aplicaciones directamente en el esquema de almacenamiento de bases de datos puede ser problemtico: 1. Es posible que no se tenga control sobre el esquema de almacenamiento o modelo del objeto de la aplicacin. 2. El grado de normalizacin del esquema de la base de datos puede dificultar el consumo directo desde una aplicacin. 3. Ciertos conceptos de modelado del mundo real no se pueden representar directamente en un esquema relacional. 4. Es posible que la aplicacin sea forzada a incrustar conocimiento implcito sobre el modo en el que se utilizan los campos en el esquema de bases de datos, lo que dificulta la realizacin de un seguimiento y es difcil de mantener. 5. Las diferentes aplicaciones pueden querer exponer distintas vistas de los mismos datos.
Sobre el autor Michael Pizzo ha trabajado ms de 17 aos en el diseo y entrega de APIs y soluciones de acceso a datos en Microsoft. Michael se inici en el acceso a datos como gerente de programacin para Microsoft Excel en 1989 y particip en el diseo y entrega de ODBC junto con la Herramienta de Consulta de Microsoft basada en ODBC que se lanz al mercado con Microsoft Office. Ha sido parte activa de las organizaciones de desarrollo de normas, como presidente del grupo SQL Access, y trabaj con X/Open sobre la especificacin CAE para Data Management: ASL-Call Level Interface (CLI), donde se desempe como representante de Microsoft para el Comit de Bases de Datos X3H2 de ANSI y tambin fue elegido representante de ANSI para las reuniones del Comit ISO que defini y adopt la Parte 3 de la norma ANSI/ISO SQL para Call-Level Interface (SQL/CLI). Michael fue lder y diseador clave de las API OLE DB de Microsoft y posteriormente estuvo a cargo del diseo y entrega de la versin 1.0 de ADO.NET. En la actualidad es arquitecto de software en el equipo Data Programmability en Microsoft y contribuye en la arquitectura y diseo de la prxima versin de ADO.NET y bloques de construccin fundamentales para la nueva plataforma de datos de entidad de Microsoft, el Marco de Entidades de ADO.NET.
25
Hace muy poco, el Architecture Journal se detuvo en la oficina del arquitecto de Microsoft, Pat Helland, para ponerse al da con l y peguntarle acerca de sus pensamientos sobre arquitectura y el modo en el que se puede llegar a ser arquitecto.
aire. Pero debe tener el suficiente conocimiento en estas reas para interactuar con los expertos e integrar esto en un todo cohesivo. De igual modo, un arquitecto de software debe conocer bastante sobre los diferentes aspectos del sistema ms general que se organiza para poder interactuar con los especialistas respectivos. AJ: Mucho de esto puede resultar conocido para las personas que han odo sobre la Metrpolis, verdad? (Ver Recursos) PH: S y an estoy muy interesado en el tema de la Metrpolis. Analicemos brevemente la historia del desarrollo urbano y la forma en la que han cambiado las ciudades cuando a mediados del siglo diecinueve lleg el ferrocarril. El rpido traslado de mercaderas y personas permiti, y ocasion, que ocurrieran en las ciudades los mismos cambios que en la actualidad vemos en las oficinas comerciales de informtica a medida que las diferentes computadoras y servicios se interconectan con Internet. La capacidad de comunicar y transportar datos y solicitudes de forma remota para lograr una mejor funcionalidad comercial, provoca presin en la estandarizacin. Hace que el trabajo se divida en partes y despus se conecte con estndares. Estos estndares no slo tratan la forma de transportar datos de un sitio a otro, sino que tambin responden preguntas sobre lo que es un servicio y el modo en el que se puede pensar en la operacin que se desea proporcionar. Nuevamente, esto tiene mucho que ver con lo que veamos en las ciudades cuando un fabricante se desvinculaba de un minorista que reparta mercaderas. Esto no se puede lograr a menos que se estandaricen las SKUs (Unidades Especficas de Inventario). Cuando se habla de dividir la fabricacin y hacer que los fabricantes construyan partes de cosas ms grandes, se habla de estandarizacin. Se ven muchas similitudes cuando se observan las ciudades y el desarrollo de centros de informtica ampliamente distribuidos. AJ: Estoy totalmente de acuerdo. Al trabajar en la divisin de desarrolladores, estoy seguro que debe tener que mantenerse actualizado con las ltimas tecnologas. Cmo lo logra? PH: Para m, soy una persona relativamente social y encuentro el momento para hablar con las personas que son expertas en el rea, consultarles sus perspectivas y comparar sus puntos de vista con otros expertos con los que hablo. A fin de cuentas, slo hay que leer. Se debe pensar. Es realmente un enorme desafo tratar de equilibrar el tiempo en el que se habla e interacta con las personas y uno se beneficia y ayuda de tantas formas diferentes y encontrar el tiempo para retirarse a pensar. Una vez ms, hay que leer, integrarse, permitirse reflexionar sobre las cosas y tratar de averiguar el tipo de cambios importantes, extensos que se pueden realizar y despus hay que tratar de popularizarlos. Es asombroso cunto del trabajo de un arquitecto est en evangelizar, socializar, lograr que las personas compartan el sueo. A veces, las personas me preguntan cul es mi trabajo y yo les respondo: Componer cosas y convencer a las personas para que las construyan Ese es el trabajo de un arquitecto!
AJ: Quin es y dnde trabaja? PH: Mi nombre es Pat Helland y trabajo en el equipo de Visual Studio en la Divisin de Desarrolladores. Llegu a Microsoft en 1994 y ayud a fundar el equipo que construy el Servidor de Transaccin de Microsoft y el Coordinador de Transacciones Distribuidas. En 1998, comenc a comprender que la informtica de n niveles no trataba todos los problemas que tenan nuestros clientes y particip de forma activa en lo que hoy se denomina arquitectura orientada al servicio, que sola denominarse informtica autnoma. Esto nos incentiv a trabajar sobre la conexin de servicios con mensajera confiable y colabor en el inicio de un proyecto que se lanz al mercado en SQL Server 2005 denominado SQL Service Broker. A partir del ao 2003, dediqu ms tiempo a trabajar en DPE en la evangelizacin de clientes de nuestra empresa. (Consulte la nota del recuadro para obtener ms informacin sobre la larga carrera de Pat y sus proyectos variados). AJ: Como arquitecto con varios aos de experiencia Qu consejo le dara a alguien que desea ser arquitecto? PH: La arquitectura es un rea muy interesante. Comparemos esto con la arquitectura de edificios. Si uno se detiene a reflexionar y piensa en lo que debe realizar un arquitecto de edificios, antes que nada deben pensar en una necesidad comercial y comprender el modo de crear un edificio que cumpla con esa necesidad comercial. An ms, el edificio debe transmitir cierta sensacin. Cuando alguien se detiene y mira el edificio, se transmite cierta emocin. Al mismo tiempo, se debe tratar un sin fin de pragmtica: el modo en el que circular el aire por todo el edificio; la forma en la que las personas se desplazarn por los ascensores; la manera de lograr que esto sea seguro y que cumpla con las consideraciones restantes del entorno. Se tiene a cargo el funcionamiento del edificio, el objeto utilitario, junto con el cumplimiento de las necesidades comerciales y con el efecto que esta estructura particular tendr sobre los seres humanos. Si analizamos esto desde el punto de vista del software, vemos similitudes exactas. El objetivo principal de un arquitecto de software es comprender y resolver el modo de satisfacer la necesidad comercial. A la vez, el arquitecto quiere que el software se relacione con las personas y con sus sentimientos respecto de su uso. Mientras eso se lleva a cabo, se debe tratar con todos los aspectos trascendentes necesarios para que esa cosa funcione de forma correcta y pragmtica. Un arquitecto de edificios que se ocupa de la construccin de un gran edificio puede no ser un experto en ascensores o circulacin de
26
Pat Helland posee casi 30 aos de experiencia en sistemas de bases de datos y transacciones escalables. En 1978, Pat trabaj en BTI Computer Systems donde cre un lenguaje de implementacin, generador de analizadores, sistema de rbol binario, recuperacin de transaccin y el mtodo de acceso secuencial indexado (ISAM, Indexed Sequential Access Method). A partir de 1982, Pat fue arquitecto principal e implementador senior del diseo de instalacin de supervisin de transacciones (TMF, Transaction Monitoring Facility) que implement la recuperacin/registro de bases de datos y transacciones distribuidas para el NonStop Guardian System de Tandem. Esto brind un acceso escalable y altamente disponible para datos que posean un sistema basado en mensajes tolerantes a fallas, incluida la replicacin y transacciones distribuidas para fallas de centros de datos. En 1991, Pat se traslad a HaL Computer Systems, donde descubri que poda trabajar en la arquitectura del hardware. Impuls el diseo e implementacin de un multiprocesador CC-NUMA (Cache Coherent NonUniform Memory Architecture) y una interfaz 64-MMU (Memory Management Unit). Hacia 1994, Microsoft convoc a Pat y le pidi que trabajara en la creacin de un middleware para la empresa. l se uni y dirigi la arquitectura de MS-DTC (Distributed Transaction Coordinator) y MTS (Microsoft Transaction Server). Posteriormente, Pat se interes en lo que hoy se denomina SOA (Service Oriented Architecture) e inici un proyecto que proporcion mensajera con garanta de entrega exactamente una vez y en orden, de alto rendimiento muy integrada con la base de datos de SQL. Esto se lanz con SQL Server 2005 como SQL Service Broker. Despus, Pat trabaj en WinFS y pas un tiempo evangelizando DPE para nuestros clientes corporativos ms importantes. En los ltimos dos aos, Pat ha trabajado para Amazon en las reas de exploracin, bsqueda, probabilidad de compra y catlogo. Tambin inici y dirigi una serie semanal de seminarios internos. Est muy entusiasmado en volver a su hogar, Microsoft, y trabajar en el equipo de Visual Studio. A la vez, me gustara dedicar de forma gradual ms tiempo a presentaciones, a participar en blogs, a escribir documentos que ayuden a las personas a comprender las diversas cosas sobre las que he pensado. Tambin, simplemente trabajar con personas dentro y fuera de Microsoft para ayudarlas a resolver sus problemas es lo que me hace feliz, realmente hacer una diferencia. Creo que para esto Microsoft es especial en el sentido de que se puede tener gran influencia. Aunque a decir verdad, es un lugar interesante en el que suceden muchas cosas y hay mucho caos aqu y all. A veces, las cosas en las que se trabaja no se logran y no todos son conscientes de las increbles emociones que implica la ingeniera. Las personas invierten sus esfuerzos en cosas que pueden o no tener xito. Estoy interesado en el modo de ayudar a evitar el problema que esto causa y la forma en la que puedo potenciar la alegra. Tambin me interesa ayudar a que las ideas de las personas sean conocidas. Esto es lo que me esfuerzo por lograr. Recursos Metropolis http://www.pathelland.com/presentation_overview/index.htm
27
los cortaba y pegaba en el SPAS. Lograba realizar mi trabajo de forma ms rpida ya que no tena que volver a escribir todo lo que haba ingresado, incluso, si surga un error de ndice daado, rpidamente me daba cuenta que tena tiempo para solucionarlo. Comprend que el valor de contar con tecnologa funcionaba a mi favor y no en mi contra. Dediqu mi tiempo libre a aprender ms sobre los productos Office de Microsoft. Afortunadamente, tuve la oportunidad de comenzar a realizar desarrollo ligero y creaba programas de capacitacin basados en la informtica en Microsoft PowerPoint para el curso sobre Operaciones en la Base Area (ABO). Creaba presentaciones que incluan grficos, sonido y videos, lo que haca que la capacitacin sea un gran xito. Si necesitbamos realizar un seguimiento de las personas que haban finalizado la capacitacin, en vez de utilizar una planilla de firmas en papel, yo escriba un programa de pruebas que poda realizar un seguimiento de las personas que haban asistido a la capacitacin. La primera opcin que eleg fue Microsoft Excel porque pareca ser la aplicacin con la que todos registraban datos, desde vacunas antigripales hasta registros de capacitacin o resultados de la evaluacin, etc. Al usar Excel, poda especificar las preguntas en una hoja y las respuestas en otra, podra crear rpidamente un formulario de pruebas y demostrar esto con xito a mi supervisor. Todo pareca funcionar bien hasta que surgieron algunos problemas obvios. Publicamos la evaluacin de Excel en una red compartida para permitir que varias personas realicen el examen y descubrimos que slo lo poda abrir una persona por vez para el modo de edicin y todos los dems podan abrir el modo de slo lectura. Utilizaba hojas ocultas para solucionar el problema de seguridad y almacenaba las preguntas y las respuestas en el mismo archivo. Estas medidas no tuvieron xito ya que las personas consideraban que era ms rpido utilizar los formularios de evaluacin impresos que esperar a que un nico archivo est disponible y algunos usuarios descubrieron el modo de ver las hojas con respuestas que estaban ocultas. S, sufrieron ms rboles. Ni me imaginaba que mi bautismo de fuego con las dificultades de utilizar el acceso a red para tenencia de multiusuario y garantizar la seguridad real de los datos era slo la punta del iceberg. Descubr Microsoft Access que prometa resolver estos problemas y ms, ya que contaba con soporte para mltiples usuarios simultneos, seguridad basada en el usuario, as como tambin la facilidad de Excel al definir tablas, la capacidad de tener esquemas de datos complejos y el diseador de formularios avanzados. La nueva base de datos para evaluaciones de Access fue un gran xito y se me otorg espacio en el servidor torre CD de la base en el centro de redes para que toda la base pudiera completar las evaluaciones y capacitacin obligatoria de forma remota. Rpidamente se obtuvieron gran cantidad de resultados exitosos y la capacitacin pareca funcionar muy bien, desafortunadamente, demasiado bien. Resulta que me di cuenta que todos obtenan el 100 por ciento sobre las evaluaciones la primera vez. Durante el diseo, haba incluido en la respuesta de cada usuario una fecha de registro de creacin y modificacin. Saba que algo andaba mal cuando ejecutaba un informe y usaba la diferencia entre la fecha de registro de creacin y modificacin en las respuestas. La mayora de los usuarios terminaban la evaluacin de 30 preguntas en menos de 27 segundos. Se imaginarn mi asombro, cuando descubr que se
28
29
30
A MEDIDA QUE AUMENTABA LA CONFIANZA DEL USUARIO EN LA INTEGRIDAD DE LOS DATOS, TAMBIN AUMENTABAN SUS DEMANDAS SOBRE NUESTRA ARQUITECTURA. PARA NUESTRO GRAN ALIVIO, SQL SUPERO CADA SITUACIN E HIZO FRENTE A TODOS LOS NUEVOS DESAFOS COMPLETAMENTE.
Por casi un ao, asum la responsabilidad de reparar los errores y hacer que EBT funcionara, desde crear copias de seguridad de las bases de datos asncronas hasta identificar varios errores de ADO.NET insignificantes con DiffGrams de gran escala as como tambin construir diagnsticos de registros avanzados para casi todos los pasos del servicio de Web. Comenzamos a explorar mapas de memoria y conjuntos de datos binarios. Confeccionamos una utilidad administrativa que poda volver a cargar los distintos DiffGrams individuales desde sus archivos de XML y volver a crear el grupo de cambios completo en memoria. A continuacin, probbamos y analizbamos los cambios del conjunto de datos, fila por fila y los envibamos uno por uno al servicio de Web para descubrir el que realmente haba infringido una restriccin, provocado error en algn asunto de seguridad o simplemente no funcionaba por algn motivo indeterminado. Una vez que se identificaban los cambios se podan eliminar y se intentaba volver a enviar el resto del DiffGram. Esto con frecuencia fallaba ya que los cambios eran independientes debido a la estructura compleja de los datos y la seguridad. Al final, la mayora de los intentos eran en vano, la naturaleza jerrquica de los errores combinada con el aspecto sin conexin de los cambios haca que sea casi imposible diagnosticar la causa original de los problemas sin capturar el estado del cliente y el servidor al mismo tiempo. Posteriormente, descubrimos que los mismos problemas de hecho ocurran tambin con nuestras aplicaciones anteriores, como EPR. Pero como utilizaban datos de slo lectura, cuando ocurra un problema de concurrencia, se aplicaba automticamente un nuevo conjunto de datos sobre el errneo y el usuario no saba que algo haba ocurrido. Con EBT, la experiencia del usuario era catastrfica ya que el nuevo conjunto de datos poda eliminar cualquier cambio pendiente que tuvieran. Los incidentes de soporte ascendieron vertiginosamente y la mayora de las veces el problema haba avanzado demasiado y era muy tarde para tratar de repararlo. Los usuarios literalmente nos maldecan, y lo peor de todo, comenzaron a guardar capturas de pantallas de sus modificaciones de datos y despus las usaban para volver a ingresar los cambios cuando
31
ClickOnce & AutoUpdate Publishing Point Acceso a travs de Dataplace DataProvider o directamente para la instancia SQLExpress mediante el uso de SNAC, OLEDB, etc.
DataPlace DataProvider
V1.0 V1.5 V2.0 V2.5
Aplicacin personalizada
SQL Express
Confianza en los datos Continuaban los beneficios con el nuevo diseo. Por ejemplo, el reemplazo de los conjuntos de datos de ADO.NET en memoria con un motor de consulta verdadero nos permiti eliminar todo el cdigo de procesamiento de datos extremadamente complicado que era necesario para representar las distintas vistas de datos que el cliente deseaba con el SQL estndar. De este modo, pudimos aprovechar el DBA para la funcionalidad del cliente y eliminar mucho cdigo personalizado que era difcil de mantener. En algunos casos, la dimensin del cdigo se redujo a ms de un tercio. A medida que se avanzaba con la duplicacin de SQL, la transferencia segura de datos por intranet e Internet era una inquietud. Una de las promesas de los servicios de Web era la idea de que el diseo poda usarse para comunicar datos a travs de la Web. Una vez ms, la duplicacin de SQL brind la respuesta, ya que vena con una implementacin lista para usar del componente de duplicacin de Web. El uso del componente REPLISAPI, esquemas, datos y actualizaciones para ambos, permita retransmitir de forma segura y confiable a travs de los https. Habamos tenido un xito tan grande con la duplicacin de SQL que ahora proporcionamos una lnea de productos de Software como Servicio (SaaS) que se denomina DataPlace (Ver Figura 2). DataPlace expone el tremendo potencial de la duplicacin y Servidor de SQL para los usuarios finales, desarrolladores principiantes, consultores profesionales y equipos de desarrollo sin la complejidad de tener que configurarlo para ellos mismos. Proporciona una fbrica de bases de datos para disear, desarrollar, implementar y utilizar de forma dinmica el potencial de las bases de datos de SQL en un entorno completamente alojado. Es la solucin que utilizamos para crear todas nuestras ltimas aplicaciones de cliente inteligente. Este artculo relata nuestras experiencias durante el transcurso de varios aos y el modo en el que dedicamos una cantidad considerable de tiempo y esfuerzo a tratar de resolver los problemas complejos relativos al trabajo con datos a travs de la Web de forma repetible, confiable, escalable, segura y para mltiples usuarios. Estas experiencias no son poco comunes entre los desarrolladores e ilustran la necesidad de productos fiables as como tambin del conocimiento para utilizarlos. La duplicacin del Servidor de SQL 2005 de Microsoft ha brindado una respuesta importante para estos problemas tcnicos complejos. Ahora, mi equipo y yo, finalmente podemos enfocarnos en lo que comenzamos a resolver, Los problemas comerciales de nuestros clientes! 32
Recursos Aviano Air Base, Italia http://www.aviano.af.mil/ Fairchild AirForce Base http://www.wafair.ang.af.mil/ Configuring and Maintaining Replication http://msdn2.microsoft.com/en-us/library/ms151247.aspx Microsoft.NET http://msdn2.microsoft.com/en-us/netframework/aa663309.aspx Smart Client Community http://msdn.microsoft.com/smartclient/community/scfaq/default.aspx Microsoft Case Study Smart Client Sales Application Saves Time and Cuts Deployment Costs http://www.microsoft.com/casestudies/casestudy.aspx?casestudyid=49078 CyberSavvy.NET DataPlace (informacin y prueba gratuita) http://www.cybersavvy.net/dataplace
Sobre el autor Peter Hammond es presidente de CyberSavvy, proveedor preferido de Microsoft. Cumpli dos reclutamientos en la Fuerza Area de EE.UU., perodo durante el cual se interes en la programacin. Despus de su servicio, adquiri experiencia del mundo real a travs de su desempeo en varios roles, desde soporte de red hasta consultora de desarrollo en diversas compaas, incluida Microsoft. En 2002, Peter reclut un equipo de profesionales excepcionales que se dedic a crear soluciones de implementacin modelo con las ltmas tecnologas de Microsoft. CyberSavvy ha creado ms de una docena de aplicaciones empresariales, en especial Enterprise Product Roadmap, que utilizaron ms de 10.000 empleados de Microsoft por ms de cinco aos. Puede contactar a Peter en peter@cybersavvy.biz.
33
Host
Contrato
Complemento
Dependencia esttica
muy importantes de esta arquitectura. Lo primero y principal es el hecho de que el host/complemento slo depende de su vista; la vista no tiene dependencias sobre otros componentes de la comunicacin. Esto proporciona una barrera de abstraccin que permite que el host permanezca completamente agnstico al modo en el que el complemento, y el mecanismo de comunicacin entre ellos, se implementa realmente y viceversa. De hecho, si se observan las dependencias estticas se puede ver que toda la parte del centro, de adaptador a adaptador, se puede reemplazar completamente sin que el host o el complemento ni siquiera tengan conocimiento de esto. Otro aspecto importante de esta arquitectura es que este modelo es en realidad completamente simtrico en todo el lmite de aislamiento, como se muestra en la Figura 2. Esto significa que desde el punto de vista arquitectnico no existe diferencia entre el modo en el que se comunican los hosts y los complementos y se versionan con el transcurso del tiempo. En realidad, en nuestro modelo, la nica diferencia real entre un host y un complemento es que el host resulta ser que es el que activa a los otros: Una vez que ocurre la activacin, llegan a tener casi la misma importancia en el sistema. Ahora que ya hemos descripto la arquitectura global, podemos profundizar los detalles concretos de cada tipo de componente del proceso y su funcin en el sistema. Componente de Vista. El componente de vista representa, de forma bastante literal, las vistas de cada uno de los otros hosts y complementos y los tipos que intercambian entre ellos. Estos componentes contienen las interfaces y clases de base abstractas contra las cuales programar cada lado y son bsicamente el SDK de cada lado para el otro. Los hosts y los complementos estn sujetos de forma esttica a una versin particular de estos ensamblajes de la vista y por lo tanto, se garantiza que podrn codificar contra esta vista esttica sin importar el modo en el que se haya implementado el otro lado. En V1 de una aplicacin, estos ensamblajes de la vista pueden ser muy similares, de hecho, pueden ser el mismo ensamblaje, pero con el paso del tiempo pueden cambiar, en realidad, incluso en algunas aplicaciones de V1 puede ser muy til tener una vista radicalmente diferente para Figura 2: Simetra del proceso de comunicacin
Lmite de aislamiento
cada lado. Es tarea de los componentes asegurar que an los ensamblajes de vistas radicalmente diferentes se puedan comunicar entre ellos. Componente del contrato. El componente del contrato es el nico componente cuyos tipos cruzan de hecho el lmite de aislamiento. Su tarea es bastante extraa en el sentido de que realmente no es un contrato entre el host y el complemento: No podra serlo, ya que los hosts y el complemento nunca saben que componente del contrato realmente se utiliza. En cambio, el componente del contrato en realidad representa un contrato entre los dos adaptadores y facilita la comunicacin entre ellos a travs de lmite de aislamiento. Debido a que ste es el nico ensamblaje que se carga en ambos lados del lmite, es importante que el ensamblaje del contrato en s mismo nunca cree versiones: Si el adaptador de un lado esperara una versin de un contrato y el adaptador del otro lado esperara una versin diferente, se interrumpira el contrato y la comunicacin fallara. Si bien decimos que un contrato nunca puede crear versiones, no estamos diciendo que el host y el complemento siempre deben utilizar el mismo. Debido a que el contrato es un contrato entre los adaptadores y no entre el host/complemento, se puede cambiar el contrato siempre que se desee; simplemente es necesario crear nuevos adaptadores que puedan tratar ese nuevo contrato. La funcin especial del contrato en nuestro sistema requiere restricciones sobre los tipos que se permiten contener en el interior. En un alto nivel, todos los tipos que se definen en el ensamblaje del contrato deben ser interfaces que implementen la propiedad System.AddIn.Contract.IContract o deben ser tipos de valor serializables mediante la implementacin de una serializacin tolerante a versiones. Adems, los miembros de estos tipos, ms especficamente valores devueltos y parmetros sobre sus mtodos, deben tambin ser tipos que obedezcan las mismas reglas. Estas restricciones garantizan que todos los tipos de referencia que cruzan el lmite implementen al menos el conjunto de funcionalidad base que requiere el sistema y que los tipos de valor sean serializables y se puedan serializar a travs de las versiones. Componente del adaptador. La funcin del componente del adaptador es realizar una adaptacin entre los tipos de vista y los tipos de contrato. En realidad, existen dos tipos de adaptadores en cada componente del adaptador: vista-para-contrato y contratopara-vista. En casi todos los casos, los adaptadores del host y del complemento contienen ambos tipos ya que, en la mayora de los modelos de objetos, los objetos se pasan tanto desde el host al complemento as como tambin del complemento al host. El adaptador cumple su funcin a travs de la implementacin del tipo de destino segn su tipo de origen. Los adaptadores de vista-para-contrato deben adaptar desde un tipo de vista y hacia un tipo de contrato y por lo tanto, tomarn el tipo de vista dentro de su constructor e implementarn la interfaz del contrato a travs de una llamada a esa vista. Si los valores devueltos o ingresos para los mtodos de las interfaces del contrato no son tipos bsicos que se puedan directamente pasar hacia la vista y devolver desde la vista, entonces ser tarea del adaptador realizar llamadas a otros adaptadores para que traten esos tipos. El adaptador de contrato-para-vista cumple exactamente la funcin opuesta a la del adaptador de vista-para-contrato, usa el contrato dentro de su constructor e implementa la vista a travs de una llamada a ese contrato. Tambin, asume la responsabilidad de llamar a otros adaptadores cuando los tipos de devolucin/ingreso lo justifiquen. Ahora que ya hemos definido las partes individuales del proceso y sus funciones, podemos agrupar todo y demostrar el modo en el que se transfiere un tipo de un lado al otro. Comienza con la instancia del tipo que se debe pasar: que se define a travs del host o el complemento.
Host/ complemento
Vista
Adaptador
Contrato
34
Figura 3: Va de activacin
Lmite de aislamiento
Host
ContratoI
Complemento
Herencia
Pasa la instancia al adaptador escrita como su vista. Construye un adaptador de vista-para-contrato con la instancia. Pasa el adaptador a travs del lmite de aislamiento escrito como el contrato. Construye un adaptador de contrato-para-vista mediante el uso del contrato. Pasa nuevamente el adaptador hacia el otro lado escrito como la vista.
Esto puede parecer mucha sobrecarga, pero en realidad slo comprende dos instancias de objetos. En el contexto de una llamada a travs de un lmite de aislamiento (AppDomain o Proceso) la sobrecarga del rendimiento es por lo general mucho menor que el margen de error de las mediciones. En el estado constante, todos los pasos mencionados anteriormente, se tratan a travs de la cadena de adaptadores activada previamente en las conexiones entre el host y el complemento. El sistema en s mismo slo interviene para activar el complemento, pasarlo de nuevo al host y de este modo crear la primera conexin. Este paso de activacin es slo un ejemplo de un objeto que se pasa desde el lado del complemento hacia el host (Figura 3). Observen que este diagrama en realidad tiene nombres un poco diferentes para algunos de los cuadros ya que se refiere a tipos especficos dentro de cada componente del proceso. Estos nombres slo se usan para los tipos que se utilizan en la va de activacin ya que son los nicos tipos en los ensamblajes de los cuales la infraestructura del sistema realmente se ocupa de forma directa.
Escenarios interesantes de creacin de versiones Habitualmente, la vista del host cambia con el tiempo a medida que se publican nuevas versiones de la aplicacin. Puede requerir informacin o funcionalidad adicional de sus complementos o los tipos de datos que pasa pueden tener mayor o menor cantidad de campos y funciones. Anteriormente, debido al acoplamiento estrecho entre el host y los complementos (y sus tipos de datos), esto por lo general significaba que los complementos que se creaban a partir de una versin de una aplicacin que no se podan utilizar en versiones posteriores y viceversa. Nuestra nueva arquitectura se dise desde cero para proporcionar las capas de abstraccin adecuadas que permitan que los hosts y complementos se relacionen con los modelos de objetos radicalmente diferentes para comunicarse y conectarse entre s. Host nuevo / Complemento existente. El primer escenario de creacin de versiones en el que piensa cualquier persona es un host nuevo, con un modelo de objeto revisado, que trata de ejecutar complementos que se crearon para versiones anteriores del host (Ver Figura 4). Con nuestro nuevo modelo, si la vista del host cambia de una versin a la prxima, el desarrollador slo debe crear un segundo AddinSideAdapter, que se hereda desde el nuevo contrato y convertirlo a la versin de AddInView. El beneficio de este enfoque es que los complementos existentes simplemente seguirn funcionando, an con los nuevos cambios. La aplicacin misma no debe mantener un registro de las diferentes versiones de los complementos y slo se ocupa de una nica vista de host; los diferentes componentes del proceso se conectan tanto a la vista anterior como a la nueva. En estos casos, el host est estrechamente acoplado a una vista diferente, pero la creacin de versiones an es posible ya que esas vistas no estn acopladas de forma estrecha entre s.
Contrato V2
Complemento V1
Contrato V2
Complemento V2
35
Contrato V1
Complemento V1
Contrato V1
Complemento V2
Si el rendimiento del inicio es crtico, la aplicacin puede decidir slo realizar una llamada a FindAddIns o requerir que los desarrolladores de complementos utilicen AddInUtil como parte de su instalacin o brinden a los usuarios la posibilidad de iniciar una actualizacin de la cach y de los complementos disponibles. Por otro lado, el desarrollador de aplicaciones puede decidir aceptar una disminucin del rendimiento que slo ocurra cuando se instalan nuevos complementos y realizar una llamada a AddInStore.Update al iniciar.
Aislamiento/Sandboxing Por supuesto, descubrir los complementos y decidir activarlos es slo una parte de la historia: Tambin es necesario garantizar que los complementos se activen en el entorno deseado. A continuacin se detallan varios tems que constituyen este entorno.
Nivel de aislamiento In-AppDomain Cross-AppDomain Cross-Process Agrupamiento En dominios con otros complementos que especifica el host token.Activate<AddInType>( En su propio dominio AddInSecurityLevel.Internet); Cross-process en un dominio con otros complementos que especifica } el host Cross-process en su propio dominio con otros dominios en el proceso En System.AddIn, se asegura que las aplicaciones puedan incluir externo que aloja otros complementos. el descubrimiento y la activacin de complementos en sus rutas de inicio e incluso que cuenten con una buena experiencia de usuario. El Cross-process en su propio dominio, sin ningn otro complemento que se ejecute en ese proceso. mtodo FindAddIns, por lo general, es seguro para realizar una llamada al iniciar ya que en realidad no carga ningn ensamblaje (ni Nivel de seguridad tampoco los lee desde el disco); en cambio, busca en un archivo de Una de las opciones predeterminadas del sistema: Internet, la cach el directorio especificado. Este archivo de la cach incluye Intranet, FullTrust informacin sobre todos los complementos disponibles en un PermissionSet personalizado que determina el host. directorio especfico as como tambin el AddInBase de cada complemento. De este modo, FindAddIns puede enumerar Si se analizan las sobrecargas disponibles en AddInToken.Activate, se rpidamente todos los complementos disponibles de un tipo puede observar lo fcil que es para el host determinar en entorno determinado en cada directorio provisto a travs del anlisis de un deseado. En el caso ms simple, el host slo debe pasar un valor de nico archivo de la cach en vez de analizar todos los ensamblajes enumeracin que especifique Internet, Intranet o FullTrust y deber de cada directorio y enumerar los tipos en cada ensamblaje que crear un AppDomain con ese nivel de confianza, activar el buscan complementos. complemento en l y a continuacin volverlo a pasar. El nivel de Por supuesto, ya que FindAddIns brinda la seguridad de que slo dificultad depende de la cantidad de control que desee el host: en el analiza un archivo de la cach, la pregunta es: Cundo se genera nivel ms alto de control, puede crear un AppDomain por s solo, este archivo de la cach? Aqu es cuando interviene la lnea que se ajustarlo con precisin conforme a sus necesidades y despus pasarlo omiti: para su activacin.
AddInStore.Update(addinPath);
AddInStore.Update, en primer lugar determinar si la cach de la ubicacin que se proporcion est actualizada. Si la cach est actualizada, entonces el mtodo realizar una devolucin muy rpida; de lo contrario, ser necesario volver a crear la cach. Tambin se proporciona una herramienta como parte del framework (AddInUtil.exe) que facilita la actualizacin de la cach como parte de un programa de instalacin. Al separar FindAddIns y Update, y proveer una herramienta de lnea de comandos que desempea la misma funcin, brindamos mucha flexibilidad a las aplicaciones del host. 36
Tcnicas de hosting confiable Hosting confiable Uno de los problemas de importancia fundamental para los desarrolladores de aplicaciones extensibles es la capacidad de mantener la confiabilidad del host al enfrentarse con complementos que poseen fallas. En algunos casos, esto es importante porque la aplicacin del
AddInProcess addInProcess = new AddInProcess(); AddInType addIn = token.Activate<AddIntype>(addInProcess, AddInSecurityLevel.FullTrust); Process tmpAddInProcess = Process.GetProcessById(addInProcess.ProcessId); //Lower the priority of the add-in process below that of the host tmpAddInProcess.PriorityClass = ProcessPriorityClass.BelowNormal; //Limit the add-in process to 50mb of physical memory tmpAddInProcess.MaxWorkingSet = (IntPtr)50000000;
Incluso, los hosts pueden dar ms de s y utilizar el sistema operativo para controlar todo, desde el tiempo total de CPU que consume el proceso hasta la cantidad de solicitudes de E/S a disco que se realizan por segundo, y a continuacin, tomar las medidas adecuadas.
Conclusin Con la incorporacin de ensamblajes de System.AddIn y la arquitectura que soportan, Microsoft .NET Framework 3.5 brinda un modelo completo de complementos administrados, ya antes prometido en PDC 2005. Se puede esperar ver algunas incorporaciones a nuestro conjunto de caractersticas en betas futuras y an ms, en futuras versiones, pero todo lo que se necesita para crear hosts totalmente extensibles, versionables y confiables est disponible ahora y listo para usar. Para obtener ms informacin sobre los temas que se tratan en este artculo o para consultar informacin general sobre este modelo de complementos, visite el blog del equipo de complementos en MSDN (Ver Recursos).
CLR InsideOut: .Net Application Extensibility, Jack Gudenkauf y Jesse Kaplan, MSDN Magazine, febrero y marzo, 2007 Parte 1, http://msdn.microsoft.com/msdnmag/issues/07/02/CLRInsideOut/ Parte 2, http://msdn.microsoft.com/msdnmag/issues/07/03/CLRInsideOut/ Visual Studio Code Name Orcas http://msdn.microsoft.com/vstudio/future
Sobre el autor Jesse Kaplan es gerente de programa para versionado en tiempo de ejecucin y extensibilidad de aplicaciones en el equipo de Tiempo de Ejecucin en Lenguaje Comn. Sus reas de responsabilidad anteriores incluyen compatibilidad, interoperabilidad (COM) navito-gestionado y metadatos.
37
098-108021
Suscrbase en www.architecturejournal.net