Was SIE ERWARTET – Mögliche Wege aus „der Ecke heraus“ – Lösungsansätze: JavaScript .NET – Erfahrungen aus Kundenpro- jekten: Strategie, Architektur, Technologie – Demos • Was Sie NICHT ERWARTET – Ein „Migration Wizard“ – AngularJS Tutorial 1
– Stichwort „oder“: Windows oder Web oder iOS oder Android oder... • Es gibt gute Gründe zur Migration • Kein unbegrenztes Budget vorhanden – Bestehende Anwendung kann nicht von Grund auf neu entwickelt werden
– Alte Umgebung/Programmierframework stirbt aus oder fällt aus politischen Gründen weg – DER Entwickler verlässt die Firma – DLLs, COM und ActiveX, MFC, VBA, etc. • Aktuelle Plattformen sollen bedient werden – Windows klassisch, Windows (Phone) 8, Web, iOS und Android • Neue Features kommen hinzu – Evtl. sollen neue Features aber nicht allen Benutzern zur Verfügung stehen
Pflege und Wartung verbessern (oder gar erst ermöglichen) – Schneller auf Kundenwünsche reagieren können • Marketing, Imagewechsel, etc. – Mehr als nur alter Wein in neuen Schläuchen
herrsche – Modul-für-Modul, Dialog-für-Dialog, ... • Wichtige Entscheidungen – Entweder eine Version der Anwendung pro Plattform oder einmal HTML/JS (mit geringen plattformspezifischen Anpassungen) – (Externe) Unterstützung oder Entwickler-Update • Nicht nur reine Migration einer bestehenden Anwendung – Gleichzeitig Vorbereitung zur Unterstützung neuer, mehrerer Plattformen
• Integrationsaufwand / Brücken schlagen zwischen alt und neu • Komponenten/Bibliotheken von Drittanbietern • Übergangsprozess (Migration) verläuft nicht reibungslos – Die technischen Herausforderungen sind i.d.R. nicht trivial
z.B. socket.io • SignalR – Microsoft ASP.NET und JavaScript • Browser control – CefSharp oder WebBrowser Control • .NET und JS in-proc – edge.js – Google V8 & ClearScript 16
Request von JS aus an Web API – Response kann Befehle enthalten – Einsatz bei z.B. Delphi-Anwendungen (ohne .NET) 17 Self-hosted Service 1) HTTP GET 2) Aufgerufene Methode „blockiert“ und sendet Response als log. Befehl 3) HTTP Response mit Befehl
for .NET - Spezifikation zur Interaktion zwischen Webservern und Anwendungskomponenten – Katana (Microsoft) implementiert OWIN – Walkthrough: siehe Ressourcen • ASP.NET Web API – NuGet: Microsoft.AspNet.WebApi.SelfHost – Walkthrough: siehe Ressourcen 22
Server zum Client (und vice versa) • Web Sockets: bidirektionale Kommunikation in HTML5 API – Transportauswahl mit fall back Strategie • Implementierungen – Server: Microsoft.AspNet.SignalR • Nuget package – Client: jquery.signalR.js • jQuery plugin 24
einer Windows-Anwendung darstellen – Speziell auf einen Browser zugeschnitten • Bekannte Varianten – Microsoft (IE) WebBrowser Control – CefSharp für Chromium – Alternativ: Awesomium
– Natives Framework, um Chromium- basierte Browser einzubetten – Chromium ist ein Open-Source Browser Projekt • CefSharp bietet Wrapper Controls für WPF und Windows Forms
Basis von MS Access – VBA, evtl. mit SQL Server Backend – Es wird auch gerne von „Schatten-IT“ gesprochen • Auch hier: Umfeld ändert sich – Kunden fordern Web Portal – Vertrieb/Vorstand fordert iPad-Fähigkeit – Alterspyramide der Entwickler
– .NET und XAML nicht geeignet wegen Web (und z.B. TV Apps) • Vernünftige Vorgehensweise (technisch, betriebswirtschaftl. und strategisch) – sanfte Migration: Rahmenanwendung nach und nach aushöhlen • Existierende Features migrieren, weg von VBA zu JS/H5 • neue Funktionalitäten ausschließlich in JS/H5 • Lösungsansatz: Browser in MS Access 30
Code in einem Prozess var edge = require('edge'); var helloWorld = edge.func(__dirname + "/csharpcodefile.csx"); helloWorld("BASTA 2014", function(err, result) { if (err) throw err; console.log(result); }); using System.Threading.Tasks; public class Startup { public async Task<object> Invoke(object input) { return "Hello World to " + input.ToString(); } }
dann wird CEF-spezifischer Integrations-Code ausgeführt • Erzeugung der nativen OS Apps mit Hilfe von Cordova/Phonegap – iOS, Android, Windows Phone, Windows 8 41
zur Erneuerung betrachten • Hoher Anschaffungswiderstand – Zusatzaufwand in Entwicklung, Know-How, etc. – Zahlt sich langfristig aus wegen Multi- Plattform-Support – Ist auf jeden Fall geringer als Neuentwicklung