Upgrade to Pro — share decks privately, control downloads, hide ads and more …

"Any Device, Any Server“: Echtes Cross-Plattfor...

"Any Device, Any Server“: Echtes Cross-Plattform mit AngularJS und ASP.NET (vNext)

Geht das wirklich? Sehen ist Glauben. In dieser Session zeigen Ihnen die Referenten, wie man mit einem gereiften JavaScript-SPA-Framework wie AngularJS echte Anwendungen für den Webbrowser, für den Desktop und nahezu beliebige mobile Plattformen effizient realisieren kann, mit einer Codebasis, die alle Clients zufriedenstellt. Das soll das Ziel sein. Dazu eine passende Zielarchitektur mit Web-/REST-APIs sowie Push Services für die bidirektionale Kommunikation. Umgesetzt wird diese im Backend mit ASP.NET vNext – einem modernen und leichtgewichtigen Open-Source-Server-Framework. Get ready to rumble.

Christian Weyer

February 24, 2015
Tweet

More Decks by Christian Weyer

Other Decks in Programming

Transcript

  1. Thomas Hilzendegen, Christian Weyer Thinktecture AG "Any Device, Any Server“

    Echtes Cross-Plattform mit AngularJS und ASP.NET (vNext)
  2. Client Apps bauen • Native Anwendung (echt oder cross-kompiliert) –

    ObjectiveC/Swift, Java, C# – Wissen über jede einzelne Plattform notwendig – Voller Zugriff auf alles, beste Performance • Web-Anwendung – HTML5 & JavaScript – Eine Code-Basis – Web Browser als “Operating Systems” • Hybride Anwendung – HTML5 / JavaScript & Co. in native Rahmen-App gepackt – Nutzung der nativen Plattformen via Plugins 4
  3. „Any Server“ ? • Windows als erprobtes Server-Betriebssystem • Linux

    sehr stark im Server-Umfeld – Lizenz-Thematik – Geringerer System-Footprint – Microsoft Azure bietet Linux out-of-the-box an • Virtualisierungsumgebungen übernehmen das Regiment – VMs – Docker • Entwicklung unter Windows, Linux oder MacOSX 5
  4. Server Code bauen • JVM: Java, Scala etc. • Full

    Stack: JavaScript im Browser, node.js etc. • .NET – Stabil und immer weiter entwickelt auf dem Server – Keine Zersplitterung wie auf dem Client • .NET & ASP.NET vNext läuten nächsten Schritt ein 6
  5. Ziel-Architektur • Voraussetzung für eine moderne Anwendungslandschaft ist eine Service-basierte

    Architektur – Services != SOA  • Im Betrieb üblicherweise verteilte Anwendungsarchitektur – Online vs. Offline – Leichtgewichtige Kommunikation 7
  6. Cross-Client mit HTML5 • „Mobility-First“, statt reinem „Mobile-First“ • HTML5

    & JavaScript sind tatsächlich ernst zu nehmende Technologien für Cross-Plattform Anwendungen – Längst aus den Kinderschuhen entwachsen – Viele große Hersteller investieren in die H5- Plattform • Browser, Desktop, Tablet, Phone – alles (?) 10
  7. AngularJS • Anwendungs-Framework für SPA – Modularer Aufbau (Module, Dependency

    Injection) – Data Binding – Testbar (Unit, End-to-End) • Silverlight-ähnliche Denkweise & Patterns – MVVM – Services • Aktuell beliebtestes SPA Framework 11
  8. Cordova • Open Source Projekt von ASF • Tool zum

    Erstellen von nativen Anwendungen basierend auf HTML5 & JavaScript Code – CLI-getrieben • Framework zur Anbindung von JavaScript Code an native Plattform-Features – Plugin-System – 1 JavaScript API – Gezielte native Implementierungen 12
  9. 14

  10. Cordova Performance • Auf aktuellen iOS-Geräten richtig schnelle Ausführung •

    Ab iOS8 neue native Web View (WKWebView) – JavaScript JIT-ing – Noch keine Integration in Cordova • Chromium-basierte Web View in Android – CrossWalk Projekt – Cordova Integration 15
  11. nw.js • AKA node-webkit – Open Source Projekt von Intel

    • Tool zum Erstellen von nativen Desktop- Anwendungen basierend auf HTML5 & JavaScript Code – Windows – Linux – MacOSX • Framework zur Anbindung von node.js Code für native Plattform-Features 16
  12. ASP.NET Web API & SignalR – mit Mono • Web

    API 2 & SignalR 2 laufen auch unter Mono (3.12) – Windows, MacOSX und Linux • Self-Hosted – Web-Hosted hat Bugs • Einschränkungen – OWIN & IPrincipal- Verhalten – CORS 18
  13. ASP.NET 5 (aka vNext) • Nächste Version von ASP.NET trägt

    Version 5 • Lauffähig mit .NET 4.6, Mono oder CoreCLR • MVCs nächste Ausprägung heißt 6 • Web API gibt es nicht mehr (als eigenständiges Framework) – Integriert in MVC: Routing, Controller & Co. • SignalR weiterhin als eigener Baustein 19
  14. ASP.NET Web API in MVC 6 • Neue OWIN-Implementierung •

    Komplette Integration in MVC-Services-Welt • Ableitung von Basis-Controller nicht mehr notwendig – Hilfreiche Properties und Methoden jedoch auf Basisklasse • „One ASP.NET“ 20
  15. CoreCLR vs. Mono • CoreCLR – „just another runtime implementation?“

    – Code-Basis aus der .NET Framework CLR (2-Way-Mirror TFS/GitHub) – Beinhaltet .NET Garbage Collector und (Ryu)JIT – Besteht aus coreclr.dll und mscorlib.dll (sowie native Binaries) – Keine Application Domains und Code Access Security mehr – Side-by-Side Installation – Optimiert für Server und Cloud • Mono – Nahezu vollständig portiertes .NET Framework 4.5 – Eigene CLR Implementierung (Mono CLR) 21
  16. CoreCLR vs. Mono • .NET Core – „die Zukunft?“ –

    Portable Class Libraries (NuGet Packages) – Agile Entwicklung – Cross Plattform: ausführbar in .NET Framework CLR, CoreCLR oder Mono CLR 23
  17. Cross-Plattform Datenbank • SQL für klassische Relationen-getriebene Daten, schema-basiert •

    SQL Server läuft aber nicht unter Windows und Linux • NoSQL für schema-freie Daten – Unterschiedliche Ausprägungen: bspw. Dokumente, Name-Value-Paare, Graphen • SQL Server kann aber kein NoSQL 24
  18. PostgreSql • Open Source, etabliert seit 1996 • Läuft unter

    Windows und Linux • Stärken im klassischen SQL-Umfeld • Unterstützt seit Version 9.3 auch Dokumenten-basiertes NoSQL mit JSON & JSONB • npgsql Treiber für .NET – mit ADO.NET API – unterstützt Entity Framework 25
  19. Ressourcen • AngularJS – https://angularjs.org/ • Cordova – http://cordova.apache.org/ •

    CrossWalk for Cordova – https://crosswalk- project.org/documentation/cordova.html • nw.js (aka node-webkit) – http://nwjs.io/ 27
  20. Ressourcen • ASP.NET Web API – http://www.asp.net/web-api • ASP.NET SignalR

    – http://www.asp.net/signalr • Mono – http://www.mono-project.com/ • Npgsql - .Net Data Provider for Postgresql – http://npgsql.projects.pgfoundry.org/ 28