der Thinktecture AG E-Mail: [email protected] Twitter: @PhoenixHawk Blog: https://gingter.org Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017
Anfassen erlaubt: Mobile Apps mit Angular und Cordova Thomas Hilzendegen DO, 28. September 2017, 09.00 bis 10.00 Gutenberg-Saal 4 Fenster überall: Desktopanwendungen mit Angular und Electron Fabian Gosebrink DO, 28. September 2017, 10.45 bis 11.45 Gutenberg-Saal 4 Offline First mit Angular und SQL Server – Es geht auch ohne Netz Thorsten Hans DO, 28. September 2017, 12.00 bis 13.00 Gutenberg-Saal 4 Von Windows Forms und WPF in die neue HTML5-Welt Sebastian Gingter DO, 28. September 2017, 15.45 bis 16.45 Gutenberg-Saal 4 Web goes Native: Progressive Web Apps (PWA) – with Angular Shmuela Jacobs DO, 28. September 2017, 17.00 bis 18.00 Gutenberg-Saal 4 Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017
• Lösungsansätze • Schrittweise Migration • Vorbereitung auf echte plattformübergreifende Verwendbarkeit Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Unser Thema
Wartung verbessern bzw. erst ermöglichen • Schneller auf neue Anforderungen reagieren können • Marketing / Image-Auffrischung • Mehr als nur Evolution: Revolution Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Strategische Ziele
monolithisch, Win32, “legacy” • Alles neu Schreiben ist unpraktikabel (Zeit/Geld) • Es gibt aber dennoch gute Gründe für eine Migration (Mobile) Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Problemstellung
VB6, MFC, Delphi, Windows Forms, WPF… • “Legacy”? • jeder Code, der gestern für das “heute” geschrieben wurde • jeder Code, der nicht bewusst für die Zukunft geschrieben wurde Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Unser Startpunkt
1997-2017 Die Situation Windows Android, iOS, ... WPF XAML Windows UWP XBox HTML Services C / C++, Delphi ObjectiveC Swift, Java, ... C# C#, JavaScript JavaScript TypeScript
stirbt aus • Alte Umgebung fällt aus politischen und/oder Sicherheitsgründen weg • DER Entwickler verlässt die Firma • DLLs, COM, ActiveX, MFC, VBA, VCL, Access… • Es sollen aktuelle(re) Plattformen bedient werden • Windows 8+, XBox One, Web, iOS & macOS, Android, Smart TVs… Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Motivation zur Migration
Wichtige Entscheidungen • Entweder eine Version der Anwendung pro Zielplattform oder einmal HTML5/JS (ggf. mit ein paar plattformspezifischen Anpassungen) • (Externe) Unterstützung und/oder Entwickler-Update Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Möglicher Ansatz
• Maske für Maske, ein Dialog nach dem anderen • Portierung auf neue Plattform schrittweise durchführen • Jeden Schritt auch in der Legacy-Anwendung nutzbar machen • Dabei Chancen nutzen Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Möglicher Ansatz
1997-2017 Die Situation Windows Android, iOS, ... WPF XAML Windows UWP XBox HTML Services C / C++, Delphi ObjectiveC Swift, Java, ... C# C#, JavaScript JavaScript TypeScript
Lernkurve mit einpreisen • Integrationsaufwände • Komponenten / Bibliotheken von Drittanbietern • Reibungsverluste beim Übergangsprozess • technische Herausforderungen sind im Allgemeinen nicht auf die leichte Schulter zu nehmen Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Achtung!
DataGrid & DataSource • SQL Server Backend • Entity Framework Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Was bedeutet das für uns?
Form • z.B. erst einmal nur der Reporting-Teil (wenig Interaktion) • Design mittels CSS an aktuelle Anwendung angepasst • Soll in aktuelle Anwendung integriert werden Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Ansatz: Neue HTML5-Anwendung
socket.io) • SignalR • Embedded Web app: Browser Control • CefSharp oder WebBrowser Control • .NET und JS in-proc • ClearScript mit Googles V8 • (edge.js?) Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Notwendigkeit: Bidirektionale Kommunikation
gleichzeitig Webserver • Liefert HTML und sonstige Web-Ressourcen selber aus • ASP.NET Web API • Stellt Funktionalität als (HTTP)-APIs bereit Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Option: Self-Hosting
1997-2017 Anwendung & JS – Long Polling • Lang laufender Request von JS aus an Web API • Response kann Befehle enthalten • Einsatz bei z.B. Delphi-Anwendungen (ohne .NET) Self-hosted Service 1) HTTP GET 2) Aufgerufene Methode „blockiert“ und sendet Response(s) als logischen Befehl 3..x) HTTP Response mit Befehl
und wieder zurück • WebSockets • Transportauswahl mit Fallback-Strategien Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 ASP.NET SignalR
einen oder mehrere (Web-)Service(s) um • Chancen & zukünftige Optionen • Cloud-Hosting • SaaS Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 WTF machen wir hier eigentlich?
auf einen Browser zugeschnitten • Varianten • Microsoft (IE) WebBrowser Control • CefSharp für Chromium Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Einsatz von Browser-Controls
(native) DLLs • zzgl. Wrapper zum Einbau in eigene Projekte • CefSharp: .NET Wrapper • CefSharp.Wpf • CefSharp.WinForms • WebKitX • ActiveX MFC/ATL Wrapper z.B. für VB6, Access oder Delphi Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 CEF
• Durch das Laden nativer dll’s ist dynamisches Umschalten zwischen 32 und 64 bit etwas tricky, aber inzwischen gut machbar Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 CefSharp
immerhin schon mit SQL Server Backend • “Schatten-IT” • Umfeld ändert sich • Kunden fordern Web-Portal • Vertrieb / Vorstand fordert iPad-Fähigkeit • Alterspyramide der Entwickler Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Real World: MS Access & CEF
wegen Web (und z.B. Apps für SmartTVs) • Technisch, betriebswirtschaftlich und strategisch vernünftige Vorgehensweise gefordert • Sanfte Migration, Rahmenanwendung nach und nach aushöhlen • Existierende Features migrieren: VBA -> JS • Neue Funktionen nur noch in JS Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Real World: MS Access & CEF
seinen sparsamen Umgang mit Arbeitsspeicher bekannt • Die Bridge zwischen Host-Anwendung und Web-Anwendung in CEF kann zudem noch Memory-Leaks verstecken Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 CEF
in einem Prozess • In beide Richtung (JS in .NET und .NET in JS) • Achtung: • Noch kein Support für aktuelles .NET Core • Pflege des Projektes scheint abzuebben Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Edge.js?
mit Plattform-spezifischen APIs • Kamera • Tray-Icons • Spezielle Anpassungen sind ggf. noch notwendig • Ergänzungen im Client-Code • Build-Prozess / Generieren der kombinierten Anwendung(en) Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Real Cross-Platform Business Applications
nutzen wenn sie da ist alternative normale HTTP-API-Calls machen • Erzeugen nativer Anwendungen mit Hilfe von Cordova und/oder Electron • Cordova: iOS, Android, UWP (XBox) • Electron: macOS, Linux, Windows Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Real Cross-Platform Business Applications
Anwendung • 3D-Szene in einer Host-Anwendung • 2-Wege Interaktion mit Webanwendung Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Kurzer Code-Walkthrough
• Als Chance zur Erneuerung betrachten • Hoher Anschaffungswiderstand • Zusatzaufwand in Entwicklung • Know-How muss aufgebaut werden (steile Lernkurve) • Zahlt sich ggf. erst mittel- bis langfristig aus • Ist aber geringer als komplette Re-Implementierung Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Resümee
CefSharp: https://github.com/cefsharp/CefSharp • Thinktecture: https://thinktecture.com/ • Repo zu dieser Session: https://github.com/thinktecture/basta-herbst-2017-WpfCefSharp Von Windows-Forms & WPF in die neue HTML5-Welt BASTA! Jubiläumskonferenz 1997-2017 Ressourcen / Links