Your SlideShare is downloading. ×
0
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
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
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
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
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
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
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
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
Arquitecturas y posicionamientos tecnológicos
Arquitecturas y posicionamientos tecnológicos
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Arquitecturas y posicionamientos tecnológicos

456

Published on

Sesión de #ArchitectureDay de Plain Concepts sobre arquitectura

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
456
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
11
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
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
  • Transcript

    • 1. 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
    • 4. Arquitectura ?
    • 5. Arquitectura y tecnología por necesidades
    • 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. 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. ¿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. 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. LightSwitch y cliente HTML 5
    • 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. 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. Modern Times! Application Modernization
    • 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. ¿Qué es una aplicación? 80’s y 90’s 2000 .exe .exe Hoy
    • 16. Evolución + Dispositivos + Servicios
    • 17. ¿Qué es una app moderna?
    • 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. Modelo de desarrollo Planificación Desarrollo Entrega Feedback CONTINUO
    • 20. En apps tradicionales…
    • 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. Escenarios
    • 23. Apps modernas empresariales
    • 24. Núcleo compartido Networking Proximity In-App Purchase Sensors Location File System Core app model Threading
    • 25. Patrón MVVM View XAML ViewModel Model Lógica de presentación Lógica de negocio
    • 26. Patrón MVVM (definición gráfica) VIEW VIEWMODEL MODEL
    • 27. Portable Class Libraries Un código Un proyecto Una librería Múltiples plataformas!
    • 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. 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. ¿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. One ASP.NET  ¿Porqué elegir?  No son imcompatibles  Podemos seleccionar diversas piezas para un mismo proyecto o solución.
    • 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. 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. 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. Katana???  Katana = Implementación de Owin  http://katanaproject.codeplex.com/documentati on  Modelo OSS  Soporte para frameworks como MVC, SignalR, Web API
    • 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. Q&A

    ×