4. EVENTUM – Requerimientos (Consultas)
1. Filtrar por cantidad mínima de invitados
2. Filtrar por eventos validos
3. Filtrar por eventos con fecha valida
• Debe de faltar mas de 2 días para el evento
4. Filtrar por eventos premium
• No importa si la fecha es valida
• No importa si el evento esta validado
9. “El patrón de especificación es un patrón que
nos permite encapsular parte del conocimiento
del dominio en una sola unidad (especificación)
y reutilizarlo en diferentes partes de la base del
código.”
10. ¿Por qué patrón Specification?
• Evita la duplicación de reglas de negocio
• Provee una sintaxis declarativa
http://bit.ly/spec-pattern
El componente solo puede conocer las capas del sistema en el que vive
Esto permite agregar caches,.
Proxys.
Balanceadores de carga
Entiende que los servidores estan en constante cambio
Entiende que la red no es segura por lo que limita los contextos.
Puede administrarse mejor dado que cada persona puede administrar su propio contexto.
Escalabilidad
Manajabilidad
Cliente > proovedor > empresa > base de datos
Hoy estoy acá con ustedes, no para enumerarles una lista de pros y contras de porque este patrón de diseño.
Tampoco para mostrarles un ejemplo de manual, como podemos estar acostumbrados a ver y escuchar ni mucho menos para venderles un patrón de diseño.
Hoy estoy acá con la intención de generales cucuriosidad.
con la intención de mostrarles una alternativa al código que habitualmente escribimos.
Hoy estoy acá con la ilusión de transmitirles una única necesidad: la necesidad de entender que nuestro código SIEMPRE puede ser cada mejor.
El componente solo puede conocer las capas del sistema en el que vive
Esto permite agregar caches,.
Proxys.
Balanceadores de carga
Entiende que los servidores estan en constante cambio
Entiende que la red no es segura por lo que limita los contextos.
Puede administrarse mejor dado que cada persona puede administrar su propio contexto.
Escalabilidad
Manajabilidad
Cliente > proovedor > empresa > base de datos
El componente solo puede conocer las capas del sistema en el que vive
Esto permite agregar caches,.
Proxys.
Balanceadores de carga
Entiende que los servidores estan en constante cambio
Entiende que la red no es segura por lo que limita los contextos.
Puede administrarse mejor dado que cada persona puede administrar su propio contexto.
Escalabilidad
Manajabilidad
Cliente > proovedor > empresa > base de datos
DRY Principle
Aumenta la mantenibilidad de nuestro código
Introducico por Eric Evan y Martin Fowler principios del año 2000
Encapsular conocimiento de negocio en una clase particular
No tienen mucho en comun
2. Es una expression no se ejecuta en memoria si no que se compilaFunc<int, bool> func = x => x == 1;
2. Hay dos tipos de métodos de extensión que trabajan sobre ellos
La matriz implementa Ienumerable
Es una versión de Iqueruable porque implementa la interface
En la segunda versión no es un delegado si no una expression
Una lambda expression puede ser compilado a delegado o a una expression
Lambda se compilara a un delegado
Tambien compilara a una expression
El componente solo puede conocer las capas del sistema en el que vive
Esto permite agregar caches,.
Proxys.
Balanceadores de carga
Entiende que los servidores estan en constante cambio
Entiende que la red no es segura por lo que limita los contextos.
Puede administrarse mejor dado que cada persona puede administrar su propio contexto.
Escalabilidad
Manajabilidad
Cliente > proovedor > empresa > base de datos
Define toda la comunicación entre servidores como la de un cliente con un servidor
Separacion de responsabilidades entre cliente y servidor
Evolucion independiente
Los clientes solo conocen a los SERVIDORES y no los servidores a los CLIENTES
Portabilidad de clientes
Evolucion independiente
No construimos una app sin estados
Todo estado del cliente se mantiene en el cliente y se envia en la solicitud
Evita sincronizacion entre servidores, y evita flujos complejos
Si la conexión se cae , no pierdo el estado ya que le estado viaja en el request
Pueden vivir app intermedias que sean capaz de aplica capas de seguridad
Visibilidad
Relaibility > si cae un servidor reinicio el workflow
Escalabilidad
Espero haberles generado esa curiosidad que les hable en un principio. Espero que hayan descubierto, espero haberles mostrado una forma diferente de hacer las cosas.
Como pueden ver pasamos la mayor parte de la presentación entendiendo el problema, entendiendo la evolución natural de nuestra aplicación.Como pueden ver comenzamos con un diseño sencillo que poco a poco se fue complejizando, y fue esta complejidad la que sugirió que nuestro código estaba evolucionando en la dirección equivocada.
Y esta evolución misma fue la que nos presento la necesidad de aplicar este patrón de diseño que acabo de presentarles.
Espero que hoy de aca se lleven lo que vine a contarles lo que vine a mostrarles.
Espero que hoy de aca se lleven principalmente una idea en sus cabezas, que pese a que nuestro código inicial estaba bien nada nos pr