Arquitecturas y
posicionamientos
tecnológicos
SEATTLE
1511 Third Avenue
Suite 512
WA 98101
(+1) 206 708 1285

MADRID

BILBAO

General Rodrigo 6
Cuerpo alto, 1ª planta
2...
Introducción
 ¿Quíen soy?
 Unai Zorrilla Castro
 Development Lead en Plain Concepts
 Microsoft MVP ASP.NET
 Microsoft...
Arquitectura

?
Arquitectura y tecnología por
necesidades
Arquitectura y tecnología por
necesidades
Small/medium
Business-Applications
Productividad | Fácil empezar

Large Mission ...
Categorizar aplicaciones o subsistemas???
Large
composite
application

Small-med size Application

VS.

Subsistema
colater...
¿Data Driven?
What is a Data-Driven Application?

 Basicamente, CRUD application (CREATE, READ, UPDATE,
DELETE).
 El niv...
UI alternativas
para desktop applications (small/medium size)
WPF (Windows Presentation Foundation)
• La preferida para Wi...
LightSwitch y cliente HTML 5
LARGE APPLICATION
Web/app
Tier

Unified UI—Visual aggregation
UI
DAL
Legacy
system

Background
Server
Tier
Database
Tier

...
Martin Fowler.

Greg Young, Martin Fowler, etc.

Dan North, Chris Matts, etc.
Frameworks: SpecFlow, Nspec,
Cuke4Nuke, Nbeh...
Modern Times!

Application
Modernization
¿Quiénes somos?
Adrián Fernández García

Gorka Madariaga Núñez

@tracker086

@Gk_8

agarci@plainconcepts.com

gmadariaga@p...
¿Qué es una aplicación?
80’s y 90’s

2000
.exe

.exe

Hoy
Evolución

+
Dispositivos

+
Servicios
¿Qué es una app moderna?
Características
Centradas en el usuario

Presencia y accesibilidad en distintos dispositivos
Experiencia de usuario unific...
Modelo de desarrollo

Planificación

Desarrollo

Entrega

Feedback

CONTINUO
En apps tradicionales…
En apps modernas…
Planificación

REQUISITOS

Feedback

Agile Portfolio Management
Scrum, CMMI, Kanban…
Sistema de etiqueta...
Escenarios
Apps modernas empresariales
Núcleo compartido
Networking
Proximity
In-App Purchase
Sensors
Location
File System
Core app model
Threading
Patrón MVVM

View

XAML

ViewModel
Model

Lógica de presentación
Lógica de negocio
Patrón MVVM (definición gráfica)
VIEW

VIEWMODEL

MODEL
Portable Class Libraries
Un código
Un proyecto
Una librería

Múltiples plataformas!
Estructura básica
Windows Phone

Windows 8

Arranque de la app / Ciclo de vida

Arranque de la app / Ciclo de vida

Vistas...
Y si juntamos todo…

Cloud Services

Storage

W8

Mobile Services

Active Directory

Desktop

Biz

Dev

ITPro

Team
Visual...
¿One ASP.NET?
 ¿Os acordáis?
 La evolución hasta hoy en
dia
 ¿Diferentes
productos?¿Cual
selecciono?
 Web Forms
 Web ...
One ASP.NET
 ¿Porqué elegir?
 No son imcompatibles
 Podemos seleccionar
diversas piezas para un
mismo proyecto o soluci...
OWIN?????
 OWIN = Open Web Interface for .NET
 Interfaz para comunicar servidores con
aplicaciones .net
 Especificación...
OWIN – KATANA ?????
 ¿Qué propone?
 Eliminar el acoplamiento actual del stack web.
 No solo en codigo de framework y AS...
Owin-Katana
Key Name
"owin.RequestBody"

A Stream with the request body, if
any. Stream.Null MAY be used as a
placeholder ...
Katana???
 Katana = Implementación de Owin
 http://katanaproject.codeplex.com/documentati
on
 Modelo OSS
 Soporte para...
SEATTLE
1511 Third Avenue
Suite 512
WA 98101
(+1) 206 708 1285

MADRID

BILBAO

General Rodrigo 6
Cuerpo alto, 1ª planta
2...
Q&A
Arquitecturas y posicionamientos tecnológicos
Arquitecturas y posicionamientos tecnológicos
Arquitecturas y posicionamientos tecnológicos
Arquitecturas y posicionamientos tecnológicos
Arquitecturas y posicionamientos tecnológicos
Upcoming SlideShare
Loading in...5
×

Arquitecturas y posicionamientos tecnológicos

524
-1

Published on

Sesión de #ArchitectureDay de Plain Concepts sobre arquitectura

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
524
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
11
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Microsoft Technologies possibilities and combinations are endless, so, what Technologies should I use for each application approach?Let’s dig into each of the approaches and their Preferred Technologies..
  • Create a Hello World LS HTML5 sample, from Scratch.New Project HTML5 C#New Table in Sever (Rename the table/entity to “Conference”)Add Screen BrowseConferences related to that tableAdd Screen AddNewConference related to that tableEdit the Scree BrowseConferences and add 2 buttons, one for Add/Edit, another button for EditSelected (both related to current Screens)SHOW EXTENSIBILITY POINTSHTML-JAVASCRIPT extensibility point.NET extensibility pointRUN the App and add a few records and aditShow/execute the other Complex CONFERENCE LS application we have for the conferences…Say we’ll extend it in order to integrate this BOUNDED-CONTEXT to the other, through the EVENT-BUS
  • Create a Hello World LS HTML5 sample, from Scratch.New Project HTML5 C#New Table in Sever (Rename the table/entity to “Conference”)Add Screen BrowseConferences related to that tableAdd Screen AddNewConference related to that tableEdit the Scree BrowseConferences and add 2 buttons, one for Add/Edit, another button for EditSelected (both related to current Screens)SHOW EXTENSIBILITY POINTSHTML-JAVASCRIPT extensibility point.NET extensibility pointRUN the App and add a few records and aditShow/execute the other Complex CONFERENCE LS application we have for the conferences…Say we’ll extend it in order to integrate this BOUNDED-CONTEXT to the other, through the EVENT-BUS
  • Create a Hello World LS HTML5 sample, from Scratch.New Project HTML5 C#New Table in Sever (Rename the table/entity to “Conference”)Add Screen BrowseConferences related to that tableAdd Screen AddNewConference related to that tableEdit the Scree BrowseConferences and add 2 buttons, one for Add/Edit, another button for EditSelected (both related to current Screens)SHOW EXTENSIBILITY POINTSHTML-JAVASCRIPT extensibility point.NET extensibility pointRUN the App and add a few records and aditShow/execute the other Complex CONFERENCE LS application we have for the conferences…Say we’ll extend it in order to integrate this BOUNDED-CONTEXT to the other, through the EVENT-BUS
  • Create a Hello World LS HTML5 sample, from Scratch.New Project HTML5 C#New Table in Sever (Rename the table/entity to “Conference”)Add Screen BrowseConferences related to that tableAdd Screen AddNewConference related to that tableEdit the Scree BrowseConferences and add 2 buttons, one for Add/Edit, another button for EditSelected (both related to current Screens)SHOW EXTENSIBILITY POINTSHTML-JAVASCRIPT extensibility point.NET extensibility pointRUN the App and add a few records and aditShow/execute the other Complex CONFERENCE LS application we have for the conferences…Say we’ll extend it in order to integrate this BOUNDED-CONTEXT to the other, through the EVENT-BUS
  • Arquitecturas y posicionamientos tecnológicos

    1. 1. Arquitecturas y posicionamientos tecnológicos
    2. 2. SEATTLE 1511 Third Avenue Suite 512 WA 98101 (+1) 206 708 1285 MADRID BILBAO General Rodrigo 6 Cuerpo alto, 1ª planta 28003 (+34) 915 346 836 Nervión 3 6ª planta 48001 (+34) 946 008 168 www.plainconcepts.com
    3. 3. Introducción  ¿Quíen soy?  Unai Zorrilla Castro  Development Lead en Plain Concepts  Microsoft MVP ASP.NET  Microsoft Data Insider  ¿Expectativas?  Hablar de “arquitectura” y posicionamiento tecnológico.  Estado del arte en stack webs. unai@plainconcepts.com http://geeks.ms/blogs/unai
    4. 4. Arquitectura ?
    5. 5. Arquitectura y tecnología por necesidades
    6. 6. Arquitectura y tecnología por necesidades Small/medium Business-Applications Productividad | Fácil empezar Large Mission critical Business-Applications Long-term | Core business. Aproximaciones Aproximaciones Data-driven development. Domain-driven design o similar. Simple approaches Arquitecturas desacopladas. Rapid development (RAD). Long-term, mantenimiento evolutivo.
    7. 7. Categorizar aplicaciones o subsistemas??? Large composite application Small-med size Application VS. Subsistema colateral Mission-Critical Core-Business Sub-system Mission-Critical Application Subsistema colateral Subsistema colateral
    8. 8. ¿Data Driven? What is a Data-Driven Application?  Basicamente, CRUD application (CREATE, READ, UPDATE, DELETE).  El nivel de lógica de negocio es bajo  ISSUES cuando evolucionamos a lógicas más complejas Application Conocimiento de los usuarios Data-Driven Applications Manual de procedimientos CREATE READ UPDATE DELETE
    9. 9. UI alternativas para desktop applications (small/medium size) WPF (Windows Presentation Foundation) • La preferida para Windows-based desktop con complejidad de UI, customización de estilos. • Mismas Skills que otros muchos productos conocidos, Store Apps, Silvelight, LakeView... • Capacidades de asincronía simplificadas .NET 4.5 (async/await). Windows Forms • • • • No necesitamos tantas necesidades de UI Solución madura Limita el camino de aprendizaje hacia Store apps, no está en el mismo path Capacidades de asincronía simplificadas .NET 4.5 (async/await). Cliente Desktop para LightSwitch projects • Solamente para data driven LOB applications. • Usa el mismo engine que el usado para LightSwitch HTML5 client.
    10. 10. LightSwitch y cliente HTML 5
    11. 11. LARGE APPLICATION Web/app Tier Unified UI—Visual aggregation UI DAL Legacy system Background Server Tier Database Tier Integration Events Integration Events Integration Events Integration Events
    12. 12. Martin Fowler. Greg Young, Martin Fowler, etc. Dan North, Chris Matts, etc. Frameworks: SpecFlow, Nspec, Cuke4Nuke, Nbehave, and MSpec. Eric Evans, Jimmy Nilsson, Vaughn Vernon, etc. Use of Dependency Injection and IoC containers Microsoft P&P Unity, MEF, Ninject, Castle Windsor, etc. Microsoft P&P „CQRS Journey,‟ Greg Yound, Udi Dahan. • • • • • Single Responsibility principle. Open/close principle. Liskov substitution principle. Interface segregation principle. Dependency Inversion principle.
    13. 13. Modern Times! Application Modernization
    14. 14. ¿Quiénes somos? Adrián Fernández García Gorka Madariaga Núñez @tracker086 @Gk_8 agarci@plainconcepts.com gmadariaga@plainconcepts.com Xbox Developer & Full Time Geek & NFL Addict Xbox Developer & Ironman & NBA Freak
    15. 15. ¿Qué es una aplicación? 80’s y 90’s 2000 .exe .exe Hoy
    16. 16. Evolución + Dispositivos + Servicios
    17. 17. ¿Qué es una app moderna?
    18. 18. Características Centradas en el usuario Presencia y accesibilidad en distintos dispositivos Experiencia de usuario unificada Sociales Permitir interacción con compañero de equipo, amigos, familiares, etc. Centradas en los datos Datos, momento y formato adecuados Datos compartidos en todo el ecosistema
    19. 19. Modelo de desarrollo Planificación Desarrollo Entrega Feedback CONTINUO
    20. 20. En apps tradicionales…
    21. 21. En apps modernas… Planificación REQUISITOS Feedback Agile Portfolio Management Scrum, CMMI, Kanban… Sistema de etiquetas (tags) Team Room Storyboarding, wireframes, pruebas de concepto… Herramienta de feedback (VS+TFS) Desarrollo Feedback Entrega Desarrollo Visual Studio TFS, Git, TFS+Git, Github, Bitbucket… .NET 4.5, WinRT/WinJS, WinPRT, Windows Azure SDK… Planes de pruebas, pruebas de carga en la nube como servicio… VERSION FUNCIONAL Builds automatizadas Despliegues automatizados
    22. 22. Escenarios
    23. 23. Apps modernas empresariales
    24. 24. Núcleo compartido Networking Proximity In-App Purchase Sensors Location File System Core app model Threading
    25. 25. Patrón MVVM View XAML ViewModel Model Lógica de presentación Lógica de negocio
    26. 26. Patrón MVVM (definición gráfica) VIEW VIEWMODEL MODEL
    27. 27. Portable Class Libraries Un código Un proyecto Una librería Múltiples plataformas!
    28. 28. Estructura básica Windows Phone Windows 8 Arranque de la app / Ciclo de vida Arranque de la app / Ciclo de vida Vistas Vistas Converters Converters ViewModels ViewModels Portable Class Library CoreViewModels Servicios Modelos
    29. 29. Y si juntamos todo… Cloud Services Storage W8 Mobile Services Active Directory Desktop Biz Dev ITPro Team Visual Studio TFS Storyboarding Feedback Clientes WP Web
    30. 30. ¿One ASP.NET?  ¿Os acordáis?  La evolución hasta hoy en dia  ¿Diferentes productos?¿Cual selecciono?  Web Forms  Web Pages  MVC  Web API  SignalR
    31. 31. One ASP.NET  ¿Porqué elegir?  No son imcompatibles  Podemos seleccionar diversas piezas para un mismo proyecto o solución.
    32. 32. OWIN?????  OWIN = Open Web Interface for .NET  Interfaz para comunicar servidores con aplicaciones .net  Especificación en http://owin.org/  ¿Qué intenta?  Eliminar el acoplamiento actual del stack web.  No solo en codigo de framework y ASP.NET sino también entre ASP.Net y la infraestructuraIIS.  Similar a Rack, para el mundo Ruby!
    33. 33. OWIN – KATANA ?????  ¿Qué propone?  Eliminar el acoplamiento actual del stack web.  No solo en codigo de framework y ASP.NET sino también entre ASP.Net y la infraestructuraIIS. IDictionary<string, object>
    34. 34. Owin-Katana Key Name "owin.RequestBody" A Stream with the request body, if any. Stream.Null MAY be used as a placeholder if there is no request body. See Request Body. "owin.RequestHeaders" An IDictionary<string, string[]> of request headers. See Headers. "owin.RequestMethod" Func<IDictionary<string, object>, Task> Value Description A string containing the HTTP request method of the request (e.g., "GET", "POST"). "owin.RequestPath" A string containing the request path. The path MUST be relative to the "root" of the application delegate; see Paths. "owin.RequestPathBase" A string containing the portion of the request path corresponding to the "root" of the application delegate; see Paths. "owin.RequestProtocol" A string containing the protocol name and version (e.g. "HTTP/1.0" or "HTTP/1.1"). "owin.RequestQueryString" A string containing the query string component of the HTTP request URI, without the leading “?” (e.g., "foo=bar&baz=quux"). The value may be an empty string. "owin.RequestScheme" A string containing the URI scheme used for the request (e.g., "http", "https"); see URI Scheme.
    35. 35. Katana???  Katana = Implementación de Owin  http://katanaproject.codeplex.com/documentati on  Modelo OSS  Soporte para frameworks como MVC, SignalR, Web API
    36. 36. SEATTLE 1511 Third Avenue Suite 512 WA 98101 (+1) 206 708 1285 MADRID BILBAO General Rodrigo 6 Cuerpo alto, 1ª planta 28003 (+34) 915 346 836 Nervión 3 6ª planta 48001 (+34) 946 008 168 www.plainconcepts.com
    37. 37. Q&A
    1. Gostou de algum slide específico?

      Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

    ×