arquitecturas y posicionamientos tecnológicos

Post on 26-May-2015

451 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Sesión de #ArchitectureDay de Plain Concepts sobre arquitectura

TRANSCRIPT

Arquitecturas y posicionamientos tecnológicos

MADRIDGeneral Rodrigo 6Cuerpo alto, 1ª planta28003(+34) 915 346 836

BILBAONervión 36ª planta48001(+34) 946 008 168

SEATTLE1511 Third AvenueSuite 512WA 98101(+1) 206 708 1285

www.plainconcepts.com

MADRIDGeneral Rodrigo 6Cuerpo alto, 1ª planta28003(+34) 915 346 836

BILBAONervión 36ª planta48001(+34) 946 008 168

SEATTLE1511 Third AvenueSuite 512WA 98101(+1) 206 708 1285

www.plainconcepts.com

Introducción

http://geeks.ms/blogs/unai

unai@plainconcepts.com

¿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.

Arquitectura

?

Arquitectura y tecnología por necesidadesTecnologías y estilos

Prioridades de negocio

¿RADs vs arquitecturas desacopladas ?.

¿Data-driven vs Domain-Driven?.

¿Modern-apps vs Desktop applications?.

Short Time-to-market vs long-term investment.

Departmental vs misión crítica.

Atraer clients vs Ejecutar el negocio

Infrastructure services

Application services

Client software

Deployment environment

On Premises Private Cloud Public Cloud

ALM

& d

evelo

pm

ent to

ols

Browser

LightSwitch HTML5

HTML5+JavaScript

JavaScript Libs

Native mobile (Windows 8 and Windows Phone 8)

.NET/XAMLHTML5/WinJS

C++

Desktop

.NET WPF/

WinForms

Apps for Office

C++

Web presentation/UI services

LightSwitch server

ASP.NETWebForms

ASP.NETMVC & SPA

Services

LightSwitch OData

services

ASP.NET Web API (REST)

WCF Workflow services

Collaboration and portals

Apps for SharePoint

Full-trust SharePoint

Sites

SharePointServices

Custom application platform

Custom component

s

Entity models

CacheSecurity,

authorizationApp.

workflows

Messaging

Service-Bus Queues

Business products and platforms

Dynamics CRMDynamics AX/

NAV/GP/SL

Storage

FilesSQL

ServerNo SQL Big-Data

App/Web server

IIS (Web Server)

AppFabric

Identity & access

Authentication

Federation

Instrumentalization & monitor

System Center

Arquitectura y tecnología por necesidades

Small/medium Business-Applications

Large Mission criticalBusiness-Applications

Productividad | Fácil empezar Long-term | Core business.

AproximacionesData-driven development.

Simple approaches

Rapid development (RAD).

AproximacionesDomain-driven design o similar.

Arquitecturas desacopladas.

Long-term, mantenimiento evolutivo.

Categorizar aplicaciones o sub-sistemas???

Mission-Critical Application

Small-med size Application

Mission-Critical Core-BusinessSub-system

Subsistema colateral

Subsistema colateral

Subsistema colateral

Large compositeapplication

VS.

¿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

CREATEREADUPDATEDELETE

Application

Conocimientode

los usuarios

Manual de procedimientosData-DrivenApplications

Cliente Desktop para LightSwitch projects• Solamente para data driven LOB applications.• Usa el mismo engine que el usado para LightSwitch HTML5 client.

LightSwitch

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).

UI alternativaspara desktop applications (small/medium size)

WPF

Windows Forms

HTML5JavaScript

ASP.NET MVC con soporte HTML 5• Best-of-breed para Web apps. También con Mobile Features.• MVC ofrece un full HTML rendering control, y mucho majorers practices de desarrollo.• Motor de optimizaciones de búsqueda y RESTFul URLs son partes integrals de MVC.ASP.NET

MVC

Services

LightSwitch OData

Services

ASP.NET Web API (REST)

WCF (SOAP and Binary)

Workflow services

HTML5JavaScript

ASP.NET Web Forms y Web Pages con soporte HTML5• Úsalo si ya conoces web forms y quieres ir hacia nuevos caminos de desarrollo• HTML5: Junto a librerías como Modernizr y otras .• Usa CSS3.

ASP.NETWeb FormsWeb Pages

LightSwitch

LightSwitch y cliente HTML 5• Lo más sencillo para crear Web data-driven apps.• Acoplado end-to-end LightSwitch Web app. • Tenemos puntos de extensibilidad, pero es menos flexible que ASP.NETLightSwitch

LightSwitchHTML5 client

HTML5JavaScript

ASP.NET SPA (Single Page Application)• Úsala para la mayoria de las aplicaciones web modernas, altamente interactivas y con un

mínimo de recargas de servidor, generalmente HTML 5, CSS3.• SPA uso de mucho javascript como Angular JS, KnockoutJS y otrosASP.NET

SPA

(*) Best fit for an “easy to get started way” (initial productivity is the priority) in Data-Driven Apps.

(*) Best fit for a lower level approach and more control (future growth is the priority). SPA for the best web UX with no round-trips.

(*) Use Web-Forms if it is already familiar to you. It might also be easier if your experience is based on desktop apps development.

Demo

BOUNDED CONTEXT C

BOUNDED CONTEXT D

BOUNDED CONTEXT A

BOUNDED CONTEXT B

Unified UI—Visual aggregation

UI

DALDDD

Layered

CQRS Legacysystem

CRUD or data-drivenarchitecture

for simple tasks

DDD Layered architecture

for core-domain

CQRS for core-domain

Oldarchitecture

(legacy)

LARGE APPLICATION

BackgroundServer Tier

Web/app Tier

DatabaseTier

Integration Events Integration Events Integration Events Integration Events

S.O.L.I.D. principles.

Patterns of Enterprise Applications Architecture.

Martin Fowler.

Domain-driven design (DDD).

Eric Evans, Jimmy Nilsson, Vaughn Vernon, etc.

CQRS (Command and Query Responsibility Segregation).

Microsoft P&P ‘CQRS Journey,’ Greg Yound, Udi Dahan.

Event driven andEvent sourcing.

Greg Young, Martin Fowler, etc.

Decoupled architectures.

Use of Dependency Injection and IoC containersMicrosoft P&P Unity, MEF, Ninject, Castle Windsor, etc.

Behavior-driven design (BDD) and TDD.

Dan North, Chris Matts, etc.Frameworks: SpecFlow, Nspec, Cuke4Nuke, Nbehave, and MSpec.

• Single Responsibility principle.• Open/close principle.• Liskov substitution principle.• Interface segregation principle.• Dependency Inversion principle.

Demo

ApplicationModernization

Modern Times!

¿Quiénes somos?

Gorka Madariaga Núñez

@Gk_8

gmadariaga@plainconcepts.com

Xbox Developer & Ironman & NBA Freak

Adrián Fernández García

@tracker086

agarci@plainconcepts.com

Xbox Developer & Full Time Geek & NFL Addict

¿Qué es una aplicación?

80’s y 90’s

.exe

2000

.exe

Hoy

Evolución

Servicios

Dispositivos

+

+Servidor

Cliente

¿Qué es una app moderna?

Características

Centradas en el usuarioPresencia y accesibilidad en distintos

dispositivosExperiencia de usuario unificada

SocialesPermitir interacción con compañero de

equipo, amigos, familiares, etc.

Centradas en los datosDatos, momento y formato adecuadosDatos compartidos en todo el ecosistema

Modelo de desarrolloDESARROLLO | MEDICIÓN | RETROSPECTIVA

DESARROLLO | MEDICIÓN | RETROSPECTIVA

Planificación Desarrollo FeedbackEntrega

CONTINUO

En apps tradicionales…

En apps modernas…

PlanificaciónREQUISITOS

BACKLOG

RELEASE

FeedbackDesarrollo

VERSION FUNCIONAL

Desarrollo

FeedbackAgile Portfolio Management

Team Room

Visual StudioTFS, Git, TFS+Git, Github, Bitbucket….NET 4.5, WinRT/WinJS, WinPRT, Windows Azure SDK…

Storyboarding, wireframes, pruebas de concepto…

Builds automatizadas

Colaboración

Scrum, CMMI, Kanban…Sistema de etiquetas (tags)

Entrega

Herramienta de feedback (VS+TFS)

Planes de pruebas, pruebas de carga en la nube como servicio…

Despliegues automatizados

Escenarios

Consumo Empresarial

Apps modernas empresariales

Cliente

Proveedor de servicios

WindowsAzure

1PLATAFORMACONSISTENTE

Multi-dispositivo

Ciclo de vida rápido

Cualquier tipo de datos y tamaño

Segura

Núcleo compartido

NetworkingProximityIn-App PurchaseSensorsLocationFile SystemCore app modelThreading

Patrón MVVM

Model

Lógica de negocio

ViewModel

Lógica de presentación

View

XAML

Data Binding

Commands

Notificaciones

Patrón MVVM (definición gráfica)MODELVIEWMODELVIEW

Portable Class Libraries

Un códigoUn proyectoUna librería

Múltiples plataformas!

Estructura básica

Portable Class Library

CoreViewModels

Servicios

Modelos

Windows 8Arranque de la app / Ciclo de

vidaVistas

Converters

ViewModels

Windows PhoneArranque de la app / Ciclo de vida

Vistas

Converters

ViewModels

Y si juntamos todo…

Visual Studio TFS

W8 WP

Desktop Web

Clientes

Mobile Services

Cloud Services Storage

Active Directory

DevBiz ITPro

Team

Storyboarding Feedback

¿One ASP.NET?

¿Os acordáis?La evolución hasta hoy

en dia¿Diferentes productos?

¿Cual selecciono?Web FormsWeb PagesMVCWeb APISignalR

One ASP.NET

¿Porqué elegir?No son imcompatiblesPodemos seleccionar

diversas piezas para un mismo proyecto o solución.

Demo

OWIN?????

OWIN = Open Web Interface for .NET Interfaz para comunicar servidores con

aplicaciones .netEspecificació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 infraestructura- IIS.

Similar a Rack, para el mundo Ruby!

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 infraestructura- IIS.

IDictionary<string, object>

Owin-Katana

Key Name Value Description

"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"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.

Func<IDictionary<string, object>, Task>

Katana???

Katana = Implementación de Owinhttp://

katanaproject.codeplex.com/documentation

Modelo OSSSoporte para frameworks como MVC,

SignalR, Web API

Demo

MADRIDGeneral Rodrigo 6Cuerpo alto, 1ª planta28003(+34) 915 346 836

BILBAONervión 36ª planta48001(+34) 946 008 168

SEATTLE1511 Third AvenueSuite 512WA 98101(+1) 206 708 1285

www.plainconcepts.com

MADRIDGeneral Rodrigo 6Cuerpo alto, 1ª planta28003(+34) 915 346 836

BILBAONervión 36ª planta48001(+34) 946 008 168

SEATTLE1511 Third AvenueSuite 512WA 98101(+1) 206 708 1285

www.plainconcepts.com

Q & A

top related