Documentos de Académico
Documentos de Profesional
Documentos de Cultura
• Aplicaciones para dispositivos móviles: Se trata de aplicaciones web con una interfaz
adaptada para dispositivos móviles o aplicaciones de usuario desarrolladas para el terminal.
• Aplicaciones de escritorio: Son las aplicaciones clásicas que se instalan en el equipo del
usuario que la vaya a utilizar.
• RIA (Rich Internet Applications): Se trata de aplicaciones que se ejecutan dentro del
navegador gracias a un plug-in y que ofrecen una mejor respuesta que las aplicaciones web
y una interfaz de calidad similar a las aplicaciones de usuario con la ventaja de que no hay
que instalarlas.
• Despliegue distribuido
Permite separar las capas lógicas en distintos niveles físicos, Al mismo tiempo,
al separar las capas en distintos niveles aprovechamos mejor los recursos,
balanceando el número de equipos por nivel en función del consumo
• Despliegue no distribuido.
Tiene la ventaja de ser más simple y más eficiente en las comunicaciones ya que las
llamadas son locales
Es más difícil permitir que varias aplicaciones utilicen la misma lógica de negocio al
mismo tiempo.
Lo primero que tenemos que hacer es decidir qué tecnologías emplearemos. Por ejemplo, para
hacer una aplicación de escritorio escogeremos WPF, Windows Forms, o si nuestra aplicación
expone su funcionalidad como servicios web, usaremos WCF
La capa de dominio es muy compleja, es decir tiene un montón de métodos con lógica de negocio
podemos agregar la capa de servicio o aplicación, que es una capa delgada que sirve como
fachada y envuelve la capa de dominio, lo cual se encarga del flujo de operaciones, coordina
todas las transacciones.
Se encarga de almacenar u obtener datos desde un almacén de datos, como una base de datos, un
servicio externo o un archivo plano. Esta capa también es conocida como capa de persistencia o capa de
integración, en ella podemos utilizar patrones (Opcional) como
Bajo Acoplamiento
Desarrollo de Software I / Antecedentes
Arquitectura comportamiento (Presentación )
Patrones de
Arquitectura
Patrones de
Diseño
Desarrollo de Software I / Antecedentes
Arquitectura comportamiento (Negocio / Dominio)
Patrones de Diseño
Desarrollo de Software I / Antecedentes
Arquitectura comportamiento (Acceso a Datos)
Desarrollo de Software I / Antecedentes
Arquitectura comportamiento (Entidades)
Desarrollo de Software I / Antecedentes
Arquitectura comportamiento (Entidades)
● Arquitectura en el tiempo
Desarrollo de Software I / Antecedentes
Arquitectura Origen
Desarrollo de Software I / Antecedentes
Arquitectura Origen
Este principio es una técnica básica, y será el que más presente tengas en el día a día si quieremos
hacer que tu código sea testable y mantenible. Gracias al principio de inversión de dependencias,
podemos hacer que el código que es el núcleo de nuestra aplicación no dependa de los detalles de
implementación, como pueden ser el framework que utilices, la base de datos, cómo te conectes
a tu servidor… Todos estos aspectos se especificarán mediante interfaces, y el núcleo no tendrá que
conocer cuál es la implementación real para funcionar.
A. Las clases de alto nivel no deberían depender de las clases de bajo nivel. Ambas deberían
depender de las abstracciones.
B. Las abstracciones no deberían depender de los detalles. Los detalles deberían depender de
las abstracciones.
Desarrollo de Software I / Antecedentes
Principio de Inversión de Dependencia (DIP)
Desarrollo de Software I / Antecedentes
Arquitectura
http://aitorrm.github.io/t%C3%A9cnicas%20y%20metodolog%C3%ADas/arquitectura_software_limpia/
● Arquitecturas Modernas
Desarrollo de Software I / Arquitecturas
Arquitectura Onion
• La aplicación está construida en
torno a un modelo de objetos
independiente.
Es la parte central de la arquitectura. Contiene todos los objetos del dominio de la aplicación. Si una
aplicación se desarrolla con el marco de la entidad ORM, esta capa contiene clases POCO (Code
First) o Edmx (Database First) con entidades. Estas entidades de dominio no tienen dependencias.
Capa de repositorio
La capa está destinada a crear una capa de abstracción entre la capa de entidades de dominio y la
capa de lógica empresarial de una aplicación. Es un patrón de acceso a datos que solicita un
enfoque de acceso a datos más débilmente acoplado. Creamos un repositorio genérico, que
consulta la fuente de datos para los datos, mapea los datos de la fuente de datos a una entidad
comercial y persiste los cambios en la entidad comercial a la fuente de datos.
Desarrollo de Software I / Arquitecturas
Arquitectura Onion
Capa de servicio
La capa contiene interfaces que se utilizan para comunicarse entre la capa de interfaz de usuario y la capa
de repositorio. Contiene lógica empresarial para una entidad, por lo que también se denomina capa de
lógica empresarial.
Es la capa más externa. Podría ser la aplicación web, la API web o el proyecto de prueba unitaria. Esta
capa tiene una implementación del principio de inversión de dependencias para que la aplicación
construya una aplicación débilmente acoplada. Se comunica con la capa interna a través de interfaces.
Desarrollo de Software I / Arquitecturas
Arquitectura Onion (Cebolla)
Datos OA.- Es un proyecto de biblioteca de clases. Contiene clases de POCO junto con
clases de configuración. Representa la capa de entidades de dominio de la arquitectura de
cebolla. Estas clases se utilizan para crear tablas de bases de datos. Es una parte central y
central de la aplicación.
OA.Web.- Es una aplicación web ASP.NET Core en este ejemplo, pero podría ser un
proyecto de prueba unitaria o API web. Es la parte más externa de una aplicación mediante
la cual el usuario final puede interactuar con la aplicación. Compila aplicaciones poco
acopladas con inyección de dependencia incorporada en ASP.NET Core. Representa la capa
de interfaz de usuario de la arquitectura de cebolla.
Desarrollo de Software I / Arquitecturas
Arquitectura Clear (Limpia)
• No se debe depender de
frameworks específicos, legacy
systems, etc.
Desarrollo de Software I / Arquitecturas
Arquitectura Clear (Limpia)
• Entidades: Corresponden a los objetos de negocios. Aquí encontramos objetos que contienen, datos,
conducta y reglas de negocio. El modelado de esta capa normalmente se hace basado en los
principios de modelado de DDD.
• Casos de Uso: aquí se orquesta la funcionalidad de la aplicación, por ejemplo “Registrarse para un
curso”, esto implicará una serie de pasos que utilizarán las entidades para hacer las operaciones y
pasará información los adaptadores .
• Adaptadores: En el circulo preparamos los datos para que puedan ser utilizados por las capas mas
externas, por ejemplo podríamos enviar Json para un servicio web, aquí estarían los presentadores en
un patrón MVP, o vistas y controladores de un patrón MVC. También aquí prepararíamos los datos
para ser grabados en una fuente de datos.
• La capa externa: Aquí está la base de datos, el servicio al que alimentamos datos, el navegador, etc.
Desarrollo de Software I / Arquitecturas
Arquitectura Clear (Limpia)
Desarrollo de Software I / Arquitecturas
Desarrollo de Software I / Arquitecturas
Desarrollo de Software I / Arquitecturas
Arquitectura Proyecto
3. Infraestructura depende
* Dominio
UI.windows CrossCuting
Aplicación Modelos
Acceso Datos
Aplicación DTO Servicios
Servicios Email
Servicios Externo
1.- UserInterfaz : se encargará de la UI de usuario sea esta web / escritorio / móvil / servicios web
• Aplication: Capa intermedia que sirve como enlace de los servicios, utilizada en aplicaciones con
lógica de negocio complejas
Usamos los Servicios de dominio cuando poner la lógica en una entidad en particular rompería la
encapsulación y requeriría que la entidad sepa cosas que realmente no deberían preocuparle.
Desarrollo de Software I / Arquitecturas
Crear Arquitectura…
La capa de Infraestructura se creará tres proyectos:
• DataAcess
• EmailServices
• ExternalServices
• ExternalServices. Son objetos que manejan las semánticas específicas de la comunicación con
servicios externos (servicios web normalmente), de forma que aíslan a nuestra aplicación de las
idiosincrasias de llamar a diferentes servicios y proporcionar servicios adicionales como mapeos
básicos entre el formato expuesto por los tipos de datos esperados por los servicios externos y el
formato de datos que nosotros utilizamos en nuestra aplicación.
Gracias
NOTA: El deber será enviado en formato rar, especificando su nombre y número de semana.
Ejemplo: Semana1_Mario_Pérez.rar