Las Plataformas de desarrollo y Frameworks

Para algunos la Arquitectura es la teoría y el Framework la implementación y esta teoría sirve, por ejemplo, para saber qué hacer cuando 500 usuarios se conectan simultáneamente en tu aplicación, donde son importantes temas como escalabilidad, fiabilidad, disponibilidad, o rendimiento.

Una definición que se ve mucho en los foros es la que utiliza la metáfora de la construcción de la casa en que necesitamos un diseño de la casa, la arquitectura y los materiales (ladrillos, cementos, tornillos, etc…) el framework.

Un framework o infraestructura digital, es una estructura conceptual y tecnológica de soporte definido, normalmente con artefactos o módulos de software concretos, que puede servir de base para la organización y desarrollo de software. Típicamente, puede incluir soporte de programas, bibliotecas, y un lenguaje interpretado, entre otras herramientas, para así ayudar a desarrollar y unir los diferentes componentes de un proyecto”

La arquitectura de software, tiene que ver con el diseño y la implementación de estructuras de software de alto nivel. Es el resultado de ensamblar un cierto número de elementos arquitectónicos de forma adecuada para satisfacer la mayor funcionalidad y requerimientos de desempeño de un sistema, así como requerimientos no funcionales, como la confiabilidad.”

O sea, si una Biblioteca es un conjunto de funciones reutilizables, que puedes usar en diferentes aplicaciones, un Framework sería un conjunto de bibliotecas para configurar las aplicaciones web, según unos principios básicos de la misma, la Arquitectura. Por lo tanto, conocer la arquitectura te permite conocer el framework.

Cuando tengas que escoger un framework no te olvides del objetivo de los mismos:

Esconder las secciones de código que deben ser incluidos en diferentes partes, que tendrán poco o ningún cambio, y también esconder el código de la infraestructura responsable por gestionar las peticiones y respuestas HTTP.

Para evitar problemas en el desarrollo de aplicaciones con algún de los frameworks más populares (ASP.NET, Ruby on Rails, Angular JS, o Symfony), es importante tener en cuenta, entre otras cosas el patrón según el cual este fue proyectado. El patrón MVC (Modelo-Vista-Controlador) es un ejemplo. MVC sería una forma de separar la lógica de las diferentes responsabilidades de la aplicación.

La mayoría de los frameworks nacieron de la necesidad de un determinado proyecto y posteriormente este código se puso a la disposición de los demás desarrolladores como código abierto.

01windowsDNA

El gráfico anterior intenta representar una instalación física real, donde de otro lado vemos las capas que deseamos desarrollar, a que están enfocadas.

Presentación (la parte front con el cliente)

Negocio (lógica de negocio)

Datos (Repositorios de información)

Para abordar esto y más cosas, existen diversos enfoques de arquitectura, vamos a ver un ejemplo de arquitectura, DDD (Driven Domain Development)

02DDD_NLAYER_ARCHITECTURE_SMALL

Este es el esquema conceptual, la arquitectura.

Para abordar dicha arquitectura con .NET el Framework planteado tendría el siguiente otro esquema

03image024

Este último gráfico, muestra los componentes en .NET para montar la arquitectura anterior.

Básicamente usa las siguientes bibliotecas.

  • Visual Studio 2013 y .NET 4.0
  • Entity Framework 4.0 / linq / NHibernate
  • UNITY 2.0 / Ninject
  • WCF
  • Silverlight 4.0
  • WPF 4.0
  • ASP.NET MVC
  • PEX&MOLES
  • Windows Server AppFabric Hosting & Cache (Optional)
  • Windows Azure (Optional)
  • SQL Server
  • SQL Azure (Optional)
  • Evidentemente, conocer todas y cada una de ellas lleva tiempo, vamos a ver lo que ahora intentamos hacer con todo esto, cuando montamos una arquitectura cara a un desarrollador.

04Arquitectura

Aunque parezca mentira, este gráfico y el anterior… son idénticos, conceptualmente hablando. Ahora que, para abordar un desarrollo, nos parece más sencillo de entender este último. Y un framework debe conseguir esto sea así, más sencillo.

 

 

Leave a Reply

Your email address will not be published. Required fields are marked

Translate »
Twitter
LinkedIn