Вы находитесь на странице: 1из 64

Agenda

S.O.L.I.D

SOLID

SOLID

SOLID
Escribir cdigo que entienda la computadora es una
tcnica; escribir cdigo que entienda un ser humano es
un Arte --Robert Uncle Bob Martin

Single Responsibility

Open Closed

Liskov Substitution

Interface Segregation

Dependency Inversion

SOLID

Single Responsibility

Una clase jams debera tener ms de una razn por la


cual cambiar.

Responsabilidad == Razn para cambiar


Si una clase asume ms de una responsabilidad, entonces
tendr ms de una razn para cambiar.
Acoplamiento de responsabilidades.

SOLID

SOLID

SOLID

Open Closed

Entidades de software (clases, mdulos, funciones,


etc.) deberan estar abiertas para extensin pero
cerradas para modificacin.

Si un cambio impacta a varios mdulos, entonces la


aplicacin no est bien diseada.
Debemos disear mdulos que sirvan como base para otros
mdulos.

SOLID

SOLID

SOLID

Liskov Substitution
Las funciones que usan punteros o referencias a
clases base, deben ser capaces de usar objetos de
clases derivadas sin saberlo

Es parte fundamental del Open Closed Principle.

SOLID

SOLID

SOLID

SOLID

SOLID
Los clientes no deberan estar forzados a
depender de interfaces que no utilizan.

Las interfaces gordas o contaminadas deben


dividirse en varios grupos de funciones.
Cada grupo ser implementado por distintos tipos de
clientes.

SOLID

SOLID

SOLID

Negocio
Acceso a Datos

DB

Componentes

WS

Dependencia

UI

Conceptos MVC

Tipos Aplicaciones WEB

Orientado a presentacin
AXIS
SEED- N aplicacin

Orientado a servicios
RSS
Transmisin de comprobantes electrnicos

Tipos MVC

SERVER-SIDE
Modelo, vista y controlador el ciclo de vida de estos
componentes es administrado por el servidor, la
mayora de framework lo implementan .NET JEE RUBY
DJANGO.
CLIENT-SIDE
Modelo, vista y controlador es administrado por el
cliente (Navegador), por lo general se implementa con
Javascript.

Servicios WEB

SOAP

Simple Object Access Protocol, es un protocolo ue permite


que dos objetos en diferentes procesos se comuniquen por
medio de intercambio de datos XML.
XSD-Describe la estructura y las restricciones de los
contenidos de los documentos XML.
WSDL-Web Services Description Language, describe la
interfaz pblica a los servicios Web

REST

Interfaz que permite a los sistema comunicarse usando el


protocolo HTTP.
JSON-JavaScript Object Notation, es un formato ligero para el
intercambio de datos
HTTP-protocolo usado en cada transaccin.

Componentes - Contenedores

Siguiendo el flujo de crecimiento y evolucin de los


sistemas, tenemos dos conceptos:

Contenedores.

Componentes.

Componentes - Contenedores

Tecnologas JEE

JEE
Es
un
conjunto
de
especificaciones,
pila
tecnolgica,
que
nos
permite la construccin de
aplicaciones
empresariales.
Componente/Contenedor
Escalabilidad (Horizontal),
Portabilidad,
Seguridad

Aplicaciones Empresariales
App. Web Orientada Presentacin
Hibernate
EclipseLink

Capa
Visual
(JSF)

Capa
Servicios
(EJB)

Usuario

Capa
Datos

Usuario

J
P JDBC
A

TopLink
DML

Usuario
DML

Tecnologas

JPA

EJB

Tecnologa que implementa ORM, realiza la


representacin de la base de datos en clases java.
Tecnologa que oculta los servicios subyacentes de
control transaccional, seguridad, concurrencia e
integracin.

JSF

Tecnologa que implementa el patrn MVC del lado del


servidor.

Tecnologas

Tecnologas
Controller

Display

Maneja la ruta de peticion


hacia las paginas
Mapea paginas contra
modelo

Submit
page

Data and
transactions

Model

View

Dibuja la interfaz de usuario


Solicita datos del modelo
Envia eventos al modelo
Permite que el controlador
seleccione la siguiente vista

Reques
t data

Almacena del estado de la


aplicacin
Responde a solicitudes de
datos
Encapsula la logica de
negocio.

Servidores JEE

Spring Framework

Spring Framework
Spring es un framework
alternativo al stack de
tecnologas estndar en
aplicaciones
JavaEE.

Las ideas que populariz


Spring se han incorporado a
las
tecnologas
y
herramientas
estndares
EJB JPA - CDI.

Spring Framework

Aportes
Las ms novedosas de Spring se centran en los siguientes campos:

Data/NoSQL
HTML5/mviles
Aplicaciones sociales
Cloud

Diferencia principal JEE y Spring


Las tecnologas requieren del uso de un servidor de aplicaciones,
mientras que Spring necesita su conjunto de libreras portables
entre servidores.
Spring proporciona tres elementos bsicos:
Servicios Enterprise
Estereotipos configurables
Inyeccin de dependencias

Spring Framework

Sin IoC

Con IoC

Spring Framework

Principales proyectos

Spring Framework

STS Spring Tool Suite


Es un entorno de desarrollo basado en Eclipse,
proporciona una lista de funcionalidades para
implementar,
depurar,
ejecutar
y
desplegar
aplicaciones en Spring, incluyendo integraciones con
herramientas como Git, Maven, Jenkins.

Spring Boot

Spring Boot

Bondades
Simplifica la construccin de los proyectos en Spring
aplicando Convencin sobre configuracin.
Flexible y pre-configurado, ofrece servicios listos para
ejecutarse.
Permite usar la potencia de los mdulos de spring con
el minimo conocimiento.
Reduce el uso de XML, aplica el desarrollo con
anotaciones (Programacin declarativa).

Spring Boot

Objetivos
Disponer de funcionalidad out-of-the-box en funcin
de la naturaleza del proyecto (web, jpa, jms, nosql,
batch, etc).

Dotar a las aplicaciones de herramientas que permitan


su monitorizacin y auditora (Log4j).

Ofrecer una serie de caractersticas no funcionales


comunes a los proyectos.

Reducir la curva de aprendizaje.

Spring Boot

Ejemplo Clases de consulta a una tabla

Spring Boot

Ejemplo Clases de consulta a una tabla

Spring Boot

Que ms nos ofrece


Servidores
embebidos, evita la dependencia de
servidores JEE, las aplicaciones se puede ejecutar
directamente sobre la JVM.
Seguridad, la aplicacin web contendr autenticacin
bsica.
Spring
Boot nos permite levantar un servidor de
base de datos embebido, H2, HSLQ o DERBI.
Spring Data, usa JPA como ORM y ofrece un conjunto
de interfaces para las operaciones CRUD.
JDBCTemplate,
nos permite trabajar usando el
framework JDBC

Spring Boot

Otras caractersticas
JMS, Integracin entre procesos no bloqueantes MOM
NoSQL, enfoque hacia la bigdata.

MongoDB
Redis
Cassandra

Spring Batch, procesamiento masivo y en lote


sincronizado.
Spring cloud, soporte para aplicaciones enfocadas
como servicios en la nube.
String State Machine, libreras para la implementacin
de componentes afectados por mltiples procesos.

Monoltico y Microservicios

Microservicios

Caractersticas arquitectura monolitica


Despliegues de aplicaciones como una nica unidad.
Entidades rgidas, sin posibilidad de dividirlas.
Almacn de datos compartido por toda la aplicacin.
Una aplicacin para todos los requisitos funcionales.
Completamente desarrollada en un nico lenguaje de
programacin.

Microservicios

Estructura
Se comparte la vista
Desarrollo
componentes
de negocio de modo
independiente, pero se
despliegan
como
un
nico ente.
Acoplado y dependiente
de los objetos ORM

Microservicios

Consecuencias
Desarrollos y despliegues nicos.
Aplicaciones con alta complejidad y tamao.
Largos ciclos de desarrollo.
Compilaciones y despliegues eternos.
Difcil de escalar y nicamente escalado horizontal.

Microservicios
Es una tcnica de diseo de sistemas
como una coleccin de pequeos
servicios, cada uno ejecutndose en
su propio proceso, comunicndose con
protocolos ligeros como HTTP/Json.

Cada programa hace una cosa, pero la hace bien


Divide y vencers

Microservicios

Caractersticas
Poliglotas:
cada
micro
servicio
puede
ser
implementado en un lenguaje de programacin.
Tolerancia a fallos: Un fallo de un micro servicio no
afectar al resto.
Independientes: Ciclos de vida independientes
Escalado: Escalado eficiente y elstico.
Autonoma:
Cada
servicio
es
desarrollado
y
desplegado de forma independiente.
Facilita la colaboracin entre desarrolladores.

Microservicios

Estructura

Microservicios

Estructura
Almacenes de datos independientes

Cada aplicacin implementa


necesidad funcional

la

Interfaces de usuario independientes

solucin

una

Microservicios
Un
cambio
requiere
que
toda la
aplicacin
se
despliegue

Un
cambio
solo requiere el
despliegue del
servicio
afectado

Microservicios

Microservicios

Acoplamiento
Difcil documentacin
Difcil sincronizacin
Interrupcin completa

Microservicios

Microservicios
Menos Acoplamiento
Comunicacin mediante APIs
HTTP
Pequeos e independientes

Microservicios

Comunicaciones
HTTP
Sin intermediario
Simple y natural
Peticiones y respuesta rpidas

Mensajes
Requiere un MOM
Aade complejidad
Las transacciones no son bloqueantes

Microservicios

Empresas que lo utilizan

Preguntas

Conozca ms

Agenda

Вам также может понравиться