SlideShare une entreprise Scribd logo
1  sur  45
Télécharger pour lire hors ligne
De escritorio a Javascript
Nuestra experiencia desde las
trincheras
Roberto Luis Bisbé - @rlbisbe
Software Engineer @VS_Anywhere
http://vsanywhere.com
Acerca de
• Ingeniero de Software enVSAnywhere
• Ingeniero en Informática por la UAM
• Desarrollador .NET
• Tengo un blog! rlbisbe.net
Objetivo
Objetivo
“Convertir una aplicación de escritorio
en una aplicación web”
Un poco de contexto:VS Anywhere
• Extensión deVisual Studio para edición concurrente
• Basada enWindows
• Desarrollada 100% en C# (Cliente y servidor)
• Protocolo XMPP de mensajería
Demo
Veamos de qué estamos hablando
Arquitectura
Visual Studio
Editor
ClienteVS Anywhere
Server (Publico / Privado)
…
Solution
Explorer
Visual Studio
Editor
ClienteVS Anywhere
Solution
Explorer
Visual Studio
Editor
ClienteVS Anywhere
Solution
Explorer
Limitaciones
• API Específica
• Entorno cerrado
• Actualización manual
Tiempo entre versiones
muy largo
Idea:
LlevarVS Anywhere a la web
¿Por qué?
Libertad
Compatibilidad
Extensibilidad
Fase 1: El servidor público
Retos
Comunicación Editor
Reto 1: Comunicación
SignalR
• Tiempo real
• C# + Javascript
• Multiplataforma
SignalR (Servidor)
public class ChatHub : Hub
{
public void Send(string name, string message)
{
Clients.All.broadcastMessage(name, message);
}
}
SignalR (Cliente)
$(function () {
var chat = $.connection.chatHub;
chat.client.broadcastMessage = function (name, message) {
console.log(name + ":" + message);
};
$.connection.hub.start().done(function () {
chat.server.send("Roberto", "Hola MadridJS");
});
});
Demo: SignalR
Cómo se comunican:Websockets
Client Server
Request
101 Web Socket Accept
Web Socket Message
Web Socket Message
Cómo se comunican : Server Side Events
Client Server
Request
Streamed Response
Streamed Response
Cómo se comunican: Long Polling
Client Server
Request
Response
SignalR en IIS
Visual Studio
Editor
ClienteVS Anywhere
Server
…
Solution
Explorer
Visual Studio
Editor
ClienteVS Anywhere
Solution
Explorer
IIS
ClienteVS Anywhere
SignalR Server
SignalR Client
(Chrome)
SignalR Client
(IE11)
Reto 2: El editor
¿Qué editor usamos?
Propio
Microsoft Monaco
Ace
CodeMirror
Demo: Agregando editor
Futuro?
Trabajamos sobre interfaz
Workspace
Editor
Ace
Code
Mirror
Monaco …
Retos superados
¿Y ahora qué?
Interfaz de Usuario
Porque necesitamos más de un editor
Montando la UI
Tabs
PanelesDropdown
Demo: Paneles
Rendimiento
• Separar HTML, CSS y Javascript
• Minificación y bundling
• Un único fichero
• Primera opción:Al vuelo conASP.net
• Antes: > 4 MB
• Después: < 600 KB
Demo:
Bundling & Minification
Fase 2: El servidor privado
SignalR en una aplicación web
Visual Studio
Editor
ClienteVS Anywhere
Server
…
Solution
Explorer
Visual Studio
Editor
ClienteVS Anywhere
Solution
Explorer
IIS
ClienteVS Anywhere
SignalR Server
SignalR Client
(Chrome)
SignalR Client
(IE11)
SignalR Dentro de nuestro server
Visual Studio
Editor
ClienteVS Anywhere
…
Solution
Explorer
Visual Studio
Editor
ClienteVS Anywhere
Solution
Explorer
ClienteVS Anywhere
SignalR Server
SignalR Client
(Chrome)
SignalR Client
(IE11)
Server
Proyecto común
IISVS Anywhere
Server SignalR Hubs
HTML + CSS + JS
Proyecto común
IIS
VS Anywhere
Server
HTML + CSS + JS
WebWorkspace
SignalR Hubs
Probemas de esta aproximación
• SignalR + dll externas + Ofuscación
• Adiós minificación + bundling
Ofuscación y ensamblados externos
• Para ofuscación
• Atributos [DoNotObfuscate] o [DataContract] a las clases
• Para ensamblados externos:
• AppDomain.CurrentDomain.Load(typeof(Namespace.ChatHub).As
sembly.FullName);
Minificación:Website packager
IIS
Website packager
HTML + CSS + JS
Website Package
HTML + CSS +
JS (min)
Se actualizan referencias
VS Anywhere
Server
Se incrusta en el server
Ajax Minifier
Fase 3: …..
Fase 3…
• Más editores
• AngularJS
• API
• Sesiones browser-to-browser
• Code completion
¿Preguntas?
Gracias
http://vsanywhere.com - http://rlbisbe.net
@vs_anywhere - @rlbisbe

Contenu connexe

Tendances

Multiplica tu productividad usando un preprocesador de css
Multiplica tu productividad usando un preprocesador de cssMultiplica tu productividad usando un preprocesador de css
Multiplica tu productividad usando un preprocesador de css
Leonidas Esteban González
 
Introducción a ASPNET vNext
Introducción a ASPNET vNextIntroducción a ASPNET vNext
Introducción a ASPNET vNext
Julito Avellaneda
 

Tendances (20)

Introduccion a Node.js
Introduccion a Node.jsIntroduccion a Node.js
Introduccion a Node.js
 
ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013ALM con Visual Studio y TFS 2013
ALM con Visual Studio y TFS 2013
 
Aplicaciones Real-Time con SignalR
Aplicaciones Real-Time con SignalRAplicaciones Real-Time con SignalR
Aplicaciones Real-Time con SignalR
 
Net love open source v1.7
Net love open source v1.7Net love open source v1.7
Net love open source v1.7
 
Sácale todo el provecho a Stylus el mejor pre procesador de CSS
Sácale todo el provecho a Stylus el mejor pre procesador de CSSSácale todo el provecho a Stylus el mejor pre procesador de CSS
Sácale todo el provecho a Stylus el mejor pre procesador de CSS
 
Lecciones aprendidas creando una red social
Lecciones aprendidas creando una red socialLecciones aprendidas creando una red social
Lecciones aprendidas creando una red social
 
Multiplica tu productividad usando un preprocesador de css
Multiplica tu productividad usando un preprocesador de cssMultiplica tu productividad usando un preprocesador de css
Multiplica tu productividad usando un preprocesador de css
 
Webinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador JavaWebinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador Java
 
Azure IoT Hub
Azure IoT HubAzure IoT Hub
Azure IoT Hub
 
IoT y Dispositivos
IoT y DispositivosIoT y Dispositivos
IoT y Dispositivos
 
Windows 10 Developer Readiness
Windows 10 Developer ReadinessWindows 10 Developer Readiness
Windows 10 Developer Readiness
 
ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3
 
Gestión de documentos Office desde nuestras apps .NET con Open XML SDK
Gestión de documentos Office desde nuestras apps .NET con Open XML SDKGestión de documentos Office desde nuestras apps .NET con Open XML SDK
Gestión de documentos Office desde nuestras apps .NET con Open XML SDK
 
ASP.NET MVC Workshop Día 1
ASP.NET MVC Workshop Día 1ASP.NET MVC Workshop Día 1
ASP.NET MVC Workshop Día 1
 
ASP.NET 5
ASP.NET 5ASP.NET 5
ASP.NET 5
 
Desarrollo web front-end con TypeScript, Angular 2 e Ionic
Desarrollo web front-end con TypeScript, Angular 2 e IonicDesarrollo web front-end con TypeScript, Angular 2 e Ionic
Desarrollo web front-end con TypeScript, Angular 2 e Ionic
 
Introducción a ASPNET vNext
Introducción a ASPNET vNextIntroducción a ASPNET vNext
Introducción a ASPNET vNext
 
Futuro de Desarrollo en SharePoint
Futuro de Desarrollo en SharePointFuturo de Desarrollo en SharePoint
Futuro de Desarrollo en SharePoint
 
NodeJS
NodeJSNodeJS
NodeJS
 
Hablemos de .NET 6 y .NET MAUI
Hablemos de .NET 6 y .NET MAUIHablemos de .NET 6 y .NET MAUI
Hablemos de .NET 6 y .NET MAUI
 

Similaire à De escritorio a Javascript, nuestra experiencia desde las trincheras

Dreamweaver
DreamweaverDreamweaver
Dreamweaver
cheve5
 
Dreamweaver
DreamweaverDreamweaver
Dreamweaver
cheve5
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrasco
Manuel Carrasco Moñino
 
Articulo tipos de ide y ajax control toolkit
Articulo   tipos de ide y ajax control toolkitArticulo   tipos de ide y ajax control toolkit
Articulo tipos de ide y ajax control toolkit
Cesar Escalante
 
Visual Studio2005
Visual Studio2005Visual Studio2005
Visual Studio2005
hvillarreal
 

Similaire à De escritorio a Javascript, nuestra experiencia desde las trincheras (20)

Conoce lo nuevo en RAD Studio, C++ Builder y Delphi 10.2.2
Conoce lo nuevo en RAD Studio, C++ Builder y Delphi 10.2.2Conoce lo nuevo en RAD Studio, C++ Builder y Delphi 10.2.2
Conoce lo nuevo en RAD Studio, C++ Builder y Delphi 10.2.2
 
Automatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAutomatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWS
 
Dreamwever.
Dreamwever.Dreamwever.
Dreamwever.
 
Microsoft Developer Day UNED-CR
Microsoft Developer Day UNED-CRMicrosoft Developer Day UNED-CR
Microsoft Developer Day UNED-CR
 
Dreamweaver
DreamweaverDreamweaver
Dreamweaver
 
Dreamweaver
DreamweaverDreamweaver
Dreamweaver
 
Dreamwever
DreamweverDreamwever
Dreamwever
 
Mariannacastelo
MariannacasteloMariannacastelo
Mariannacastelo
 
NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017
 
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
 
Novedades visual studio 2015
Novedades visual studio 2015Novedades visual studio 2015
Novedades visual studio 2015
 
DevOps en AWS: acelarando el desarrollo de software con Developer Tools
DevOps en AWS: acelarando el desarrollo de software con Developer ToolsDevOps en AWS: acelarando el desarrollo de software con Developer Tools
DevOps en AWS: acelarando el desarrollo de software con Developer Tools
 
pinedaaaaaaaaaaaaaaaaaaa.pptx
pinedaaaaaaaaaaaaaaaaaaa.pptxpinedaaaaaaaaaaaaaaaaaaa.pptx
pinedaaaaaaaaaaaaaaaaaaa.pptx
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrasco
 
DevOps en AWS, acelarando el desarrollo de software con Developer Tools
DevOps en AWS, acelarando el desarrollo de software con Developer ToolsDevOps en AWS, acelarando el desarrollo de software con Developer Tools
DevOps en AWS, acelarando el desarrollo de software con Developer Tools
 
Comenzando a usar el Continuous Delivery
 Comenzando a usar el Continuous Delivery Comenzando a usar el Continuous Delivery
Comenzando a usar el Continuous Delivery
 
PRESENTACION DREAMWEAVER
PRESENTACION DREAMWEAVERPRESENTACION DREAMWEAVER
PRESENTACION DREAMWEAVER
 
Articulo tipos de ide y ajax control toolkit
Articulo   tipos de ide y ajax control toolkitArticulo   tipos de ide y ajax control toolkit
Articulo tipos de ide y ajax control toolkit
 
DotNetDom: El futuro de Xamarin
DotNetDom: El futuro de XamarinDotNetDom: El futuro de Xamarin
DotNetDom: El futuro de Xamarin
 
Visual Studio2005
Visual Studio2005Visual Studio2005
Visual Studio2005
 

Plus de Roberto Luis Bisbé

Windows 8 Universidad de Valencia
Windows 8 Universidad de ValenciaWindows 8 Universidad de Valencia
Windows 8 Universidad de Valencia
Roberto Luis Bisbé
 
Desarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPMDesarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPM
Roberto Luis Bisbé
 
Aplicaciones Metro para Windows 8
Aplicaciones Metro para Windows 8Aplicaciones Metro para Windows 8
Aplicaciones Metro para Windows 8
Roberto Luis Bisbé
 

Plus de Roberto Luis Bisbé (16)

Scala desde c# y JavaScript
Scala desde c# y JavaScriptScala desde c# y JavaScript
Scala desde c# y JavaScript
 
DotNetSpain2015: Extendiendo Visual Studio Online a través de su API
DotNetSpain2015: Extendiendo Visual Studio Online a través de su APIDotNetSpain2015: Extendiendo Visual Studio Online a través de su API
DotNetSpain2015: Extendiendo Visual Studio Online a través de su API
 
Tres tecnologías Microsoft que no se dan en la carrera
Tres tecnologías Microsoft que no se dan en la carreraTres tecnologías Microsoft que no se dan en la carrera
Tres tecnologías Microsoft que no se dan en la carrera
 
Comunicando nuestras apps con el mundo exterior
Comunicando nuestras apps con el mundo exteriorComunicando nuestras apps con el mundo exterior
Comunicando nuestras apps con el mundo exterior
 
Creando aplicaciones móviles con Windows 8 y Windows Phone 8
Creando aplicaciones móviles con Windows 8 y Windows Phone 8Creando aplicaciones móviles con Windows 8 y Windows Phone 8
Creando aplicaciones móviles con Windows 8 y Windows Phone 8
 
Windows phonesessions
Windows phonesessionsWindows phonesessions
Windows phonesessions
 
Desarrollo de aplicaciones para Windows 8 y Windows Phone
Desarrollo de aplicaciones para Windows 8 y Windows PhoneDesarrollo de aplicaciones para Windows 8 y Windows Phone
Desarrollo de aplicaciones para Windows 8 y Windows Phone
 
Windows 8 Universidad de Valencia
Windows 8 Universidad de ValenciaWindows 8 Universidad de Valencia
Windows 8 Universidad de Valencia
 
Los lenguajes de la web
Los lenguajes de la webLos lenguajes de la web
Los lenguajes de la web
 
Windows 8 y Metro para desarrolladores .NET
Windows 8 y Metro para desarrolladores .NETWindows 8 y Metro para desarrolladores .NET
Windows 8 y Metro para desarrolladores .NET
 
Desarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPMDesarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPM
 
Aplicaciones Metro para Windows 8
Aplicaciones Metro para Windows 8Aplicaciones Metro para Windows 8
Aplicaciones Metro para Windows 8
 
Hardcore PHP
Hardcore PHPHardcore PHP
Hardcore PHP
 
El patrón MVC
El patrón MVCEl patrón MVC
El patrón MVC
 
Social Media
Social MediaSocial Media
Social Media
 
Fundamentos de sitios web accesibles
Fundamentos de sitios web accesiblesFundamentos de sitios web accesibles
Fundamentos de sitios web accesibles
 

De escritorio a Javascript, nuestra experiencia desde las trincheras