SlideShare ist ein Scribd-Unternehmen logo
1 von 42
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
28003
(+34) 915 346 836

Nervión 3
6ª planta
48001
(+34) 946 008 168

www.plainconcepts.com
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
Arquitectura

?
Arquitectura y tecnología por
necesidades
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.
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
¿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
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.
LightSwitch y cliente HTML 5
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
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.
Modern Times!

Application
Modernization
¿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
¿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 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
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 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
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

Vistas

Converters

Converters

ViewModels

ViewModels

Portable Class Library
CoreViewModels

Servicios
Modelos
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
¿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
One ASP.NET
 ¿Porqué elegir?
 No son imcompatibles
 Podemos seleccionar
diversas piezas para un
mismo proyecto o solución.
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!
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>
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.
Katana???
 Katana = Implementación de Owin
 http://katanaproject.codeplex.com/documentati
on
 Modelo OSS
 Soporte para frameworks como MVC, SignalR,
Web API
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
Q&A

Weitere ähnliche Inhalte

Ähnlich wie Arquitecturas y posicionamientos tecnológicos

El futurodelos servicio sweb
El futurodelos servicio swebEl futurodelos servicio sweb
El futurodelos servicio swebQuách Tĩnh
 
Text Mining con R en SQL Server 2016
Text Mining con R en SQL Server 2016Text Mining con R en SQL Server 2016
Text Mining con R en SQL Server 2016jorge Muchaypiña
 
Tecnologiaweb 101114145311-phpapp02
Tecnologiaweb 101114145311-phpapp02Tecnologiaweb 101114145311-phpapp02
Tecnologiaweb 101114145311-phpapp02zaritarodriguez02
 
Azure4Research - Big Data Analytics con Hadoop, Spark y Power BI
Azure4Research - Big Data Analytics con Hadoop, Spark y Power BIAzure4Research - Big Data Analytics con Hadoop, Spark y Power BI
Azure4Research - Big Data Analytics con Hadoop, Spark y Power BIAlberto Diaz Martin
 
Arquitectura evolutiva por Fausto de la Torre
Arquitectura evolutiva por Fausto de la TorreArquitectura evolutiva por Fausto de la Torre
Arquitectura evolutiva por Fausto de la TorreDiana Pinto
 
Unidad 4: Administración de datos en dispositivos móviles
Unidad 4: Administración de datos en dispositivos móvilesUnidad 4: Administración de datos en dispositivos móviles
Unidad 4: Administración de datos en dispositivos móvilesJuan Anaya
 
Web Semántica de la teoría a la práctica: lecciones aprendidas en ambientes p...
Web Semántica de la teoría a la práctica: lecciones aprendidas en ambientes p...Web Semántica de la teoría a la práctica: lecciones aprendidas en ambientes p...
Web Semántica de la teoría a la práctica: lecciones aprendidas en ambientes p...SemanticWebBuilder
 
Mejorar la toma de decisiones y reducir costes con el Logical Data Warehouse ...
Mejorar la toma de decisiones y reducir costes con el Logical Data Warehouse ...Mejorar la toma de decisiones y reducir costes con el Logical Data Warehouse ...
Mejorar la toma de decisiones y reducir costes con el Logical Data Warehouse ...Denodo
 
Big data y las apis
Big data y  las apis Big data y  las apis
Big data y las apis CloudAppi
 
Azure Dev(Sec)Ops EPIDATA completa
Azure Dev(Sec)Ops EPIDATA completaAzure Dev(Sec)Ops EPIDATA completa
Azure Dev(Sec)Ops EPIDATA completaTravis Alford
 
Workshop azure devsecops Microsoft Argentina
Workshop azure devsecops Microsoft ArgentinaWorkshop azure devsecops Microsoft Argentina
Workshop azure devsecops Microsoft ArgentinaLuciano Moreira da Cruz
 
Business intelligence through big data and cloud computing
Business intelligence through big data and cloud computingBusiness intelligence through big data and cloud computing
Business intelligence through big data and cloud computingOlaf Reitmaier Veracierta
 
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012Pilmee Gates
 
Inyección de dependencias en Node.js con InversifyJS & TypeScript
Inyección de dependencias en Node.js con  InversifyJS & TypeScriptInyección de dependencias en Node.js con  InversifyJS & TypeScript
Inyección de dependencias en Node.js con InversifyJS & TypeScriptRemo Jansen
 

Ähnlich wie Arquitecturas y posicionamientos tecnológicos (20)

Big Data en Azure: Azure Data Lake
Big Data en Azure: Azure Data LakeBig Data en Azure: Azure Data Lake
Big Data en Azure: Azure Data Lake
 
Elfuturodelos serviciosweb
Elfuturodelos servicioswebElfuturodelos serviciosweb
Elfuturodelos serviciosweb
 
El futurodelos servicio sweb
El futurodelos servicio swebEl futurodelos servicio sweb
El futurodelos servicio sweb
 
Text Mining con R en SQL Server 2016
Text Mining con R en SQL Server 2016Text Mining con R en SQL Server 2016
Text Mining con R en SQL Server 2016
 
Tecnologiaweb 101114145311-phpapp02
Tecnologiaweb 101114145311-phpapp02Tecnologiaweb 101114145311-phpapp02
Tecnologiaweb 101114145311-phpapp02
 
Descubriendo windows azure
Descubriendo windows azureDescubriendo windows azure
Descubriendo windows azure
 
Azure4Research - Big Data Analytics con Hadoop, Spark y Power BI
Azure4Research - Big Data Analytics con Hadoop, Spark y Power BIAzure4Research - Big Data Analytics con Hadoop, Spark y Power BI
Azure4Research - Big Data Analytics con Hadoop, Spark y Power BI
 
Arquitectura evolutiva por Fausto de la Torre
Arquitectura evolutiva por Fausto de la TorreArquitectura evolutiva por Fausto de la Torre
Arquitectura evolutiva por Fausto de la Torre
 
Unidad 4: Administración de datos en dispositivos móviles
Unidad 4: Administración de datos en dispositivos móvilesUnidad 4: Administración de datos en dispositivos móviles
Unidad 4: Administración de datos en dispositivos móviles
 
Web Semántica de la teoría a la práctica: lecciones aprendidas en ambientes p...
Web Semántica de la teoría a la práctica: lecciones aprendidas en ambientes p...Web Semántica de la teoría a la práctica: lecciones aprendidas en ambientes p...
Web Semántica de la teoría a la práctica: lecciones aprendidas en ambientes p...
 
Data as a Service
Data as a ServiceData as a Service
Data as a Service
 
Osum
OsumOsum
Osum
 
Mejorar la toma de decisiones y reducir costes con el Logical Data Warehouse ...
Mejorar la toma de decisiones y reducir costes con el Logical Data Warehouse ...Mejorar la toma de decisiones y reducir costes con el Logical Data Warehouse ...
Mejorar la toma de decisiones y reducir costes con el Logical Data Warehouse ...
 
Big data y las apis
Big data y  las apis Big data y  las apis
Big data y las apis
 
Azure Dev(Sec)Ops EPIDATA completa
Azure Dev(Sec)Ops EPIDATA completaAzure Dev(Sec)Ops EPIDATA completa
Azure Dev(Sec)Ops EPIDATA completa
 
Workshop azure devsecops Microsoft Argentina
Workshop azure devsecops Microsoft ArgentinaWorkshop azure devsecops Microsoft Argentina
Workshop azure devsecops Microsoft Argentina
 
Business intelligence through big data and cloud computing
Business intelligence through big data and cloud computingBusiness intelligence through big data and cloud computing
Business intelligence through big data and cloud computing
 
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
 
Inyección de dependencias en Node.js con InversifyJS & TypeScript
Inyección de dependencias en Node.js con  InversifyJS & TypeScriptInyección de dependencias en Node.js con  InversifyJS & TypeScript
Inyección de dependencias en Node.js con InversifyJS & TypeScript
 
Is soa
Is soaIs soa
Is soa
 

Mehr von Ibon Landa

Aprovisionamiento y configuración deVMs con Azure Resource Manager
Aprovisionamiento y configuración deVMs con Azure Resource ManagerAprovisionamiento y configuración deVMs con Azure Resource Manager
Aprovisionamiento y configuración deVMs con Azure Resource ManagerIbon Landa
 
Building real world cloud apps with azure
Building real world cloud apps with azureBuilding real world cloud apps with azure
Building real world cloud apps with azureIbon Landa
 
Open source and cross platform .net
Open source and cross platform .netOpen source and cross platform .net
Open source and cross platform .netIbon Landa
 
Cross platform mobile development with visual studio and xamarin
Cross platform mobile development with visual studio and xamarinCross platform mobile development with visual studio and xamarin
Cross platform mobile development with visual studio and xamarinIbon Landa
 
Arquitectura y Buenas prácticas con Windows Azure para ITPros
Arquitectura y Buenas prácticas con Windows Azure para ITProsArquitectura y Buenas prácticas con Windows Azure para ITPros
Arquitectura y Buenas prácticas con Windows Azure para ITProsIbon Landa
 
Gestión de identidad en Cloud
Gestión de identidad en CloudGestión de identidad en Cloud
Gestión de identidad en CloudIbon Landa
 
Scrum en equipos multiproyectos
Scrum en equipos multiproyectosScrum en equipos multiproyectos
Scrum en equipos multiproyectosIbon Landa
 
Montando un escenario de integración continua - Pucela Tech Day
Montando un escenario de integración continua - Pucela Tech DayMontando un escenario de integración continua - Pucela Tech Day
Montando un escenario de integración continua - Pucela Tech DayIbon Landa
 
Windows azure connect copy
Windows azure connect   copyWindows azure connect   copy
Windows azure connect copyIbon Landa
 
Windows Azure Connect
Windows Azure ConnectWindows Azure Connect
Windows Azure ConnectIbon Landa
 
Integración de Team Foundation Server con Project Server
Integración de Team Foundation Server con Project ServerIntegración de Team Foundation Server con Project Server
Integración de Team Foundation Server con Project ServerIbon Landa
 

Mehr von Ibon Landa (11)

Aprovisionamiento y configuración deVMs con Azure Resource Manager
Aprovisionamiento y configuración deVMs con Azure Resource ManagerAprovisionamiento y configuración deVMs con Azure Resource Manager
Aprovisionamiento y configuración deVMs con Azure Resource Manager
 
Building real world cloud apps with azure
Building real world cloud apps with azureBuilding real world cloud apps with azure
Building real world cloud apps with azure
 
Open source and cross platform .net
Open source and cross platform .netOpen source and cross platform .net
Open source and cross platform .net
 
Cross platform mobile development with visual studio and xamarin
Cross platform mobile development with visual studio and xamarinCross platform mobile development with visual studio and xamarin
Cross platform mobile development with visual studio and xamarin
 
Arquitectura y Buenas prácticas con Windows Azure para ITPros
Arquitectura y Buenas prácticas con Windows Azure para ITProsArquitectura y Buenas prácticas con Windows Azure para ITPros
Arquitectura y Buenas prácticas con Windows Azure para ITPros
 
Gestión de identidad en Cloud
Gestión de identidad en CloudGestión de identidad en Cloud
Gestión de identidad en Cloud
 
Scrum en equipos multiproyectos
Scrum en equipos multiproyectosScrum en equipos multiproyectos
Scrum en equipos multiproyectos
 
Montando un escenario de integración continua - Pucela Tech Day
Montando un escenario de integración continua - Pucela Tech DayMontando un escenario de integración continua - Pucela Tech Day
Montando un escenario de integración continua - Pucela Tech Day
 
Windows azure connect copy
Windows azure connect   copyWindows azure connect   copy
Windows azure connect copy
 
Windows Azure Connect
Windows Azure ConnectWindows Azure Connect
Windows Azure Connect
 
Integración de Team Foundation Server con Project Server
Integración de Team Foundation Server con Project ServerIntegración de Team Foundation Server con Project Server
Integración de Team Foundation Server con Project Server
 

Arquitecturas y posicionamientos tecnológicos

  • 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. 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
  • 5. Arquitectura y tecnología por necesidades
  • 6.
  • 7. 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.
  • 8. 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
  • 9. ¿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
  • 10. 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.
  • 12.
  • 13. 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
  • 14. 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.
  • 15.
  • 17. ¿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
  • 18. ¿Qué es una aplicación? 80’s y 90’s 2000 .exe .exe Hoy
  • 20. ¿Qué es una app moderna?
  • 21. 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
  • 24. 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
  • 28. Patrón MVVM View XAML ViewModel Model Lógica de presentación Lógica de negocio
  • 29. Patrón MVVM (definición gráfica) VIEW VIEWMODEL MODEL
  • 30. Portable Class Libraries Un código Un proyecto Una librería Múltiples plataformas!
  • 31. 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
  • 32. 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
  • 33. ¿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
  • 34. One ASP.NET  ¿Porqué elegir?  No son imcompatibles  Podemos seleccionar diversas piezas para un mismo proyecto o solución.
  • 35.
  • 36. 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!
  • 37. 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>
  • 38. 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.
  • 39. Katana???  Katana = Implementación de Owin  http://katanaproject.codeplex.com/documentati on  Modelo OSS  Soporte para frameworks como MVC, SignalR, Web API
  • 40.
  • 41. 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
  • 42. Q&A

Hinweis der Redaktion

  1. 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..
  2. 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
  3. 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
  4. 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
  5. 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