mobile business apps - · pdf filemobile business apps integration on premise/cloud...
TRANSCRIPT
Mobile
Business
Apps
Native
Cross-
Platform-
Entwicklung
App Demo
Code DemoFazit
Architektur
ALM
Agenda
Mobile Business Apps
Mobile Business Apps
Integration
On Premise/CloudSkalierbarkeitTransaktionenComplianceVerfügbarkeitBackendarchitekturBus-Systeme
Frontend/Device
Multiple BetriebssystemeMultiple FormfaktorenDevice FeaturesDesign/User ExperienceKomplexe FrontendlogikKonfigurierbarkeitBusiness Use Cases
Anbindung
Online/OfflineSynchronisierungFehlerbehandlungProtokolleSecurityDatenvolumen
ALM
Architektur/PatternsContinuous FeedbackContinuous TestingContinuous DeliveryDeployment(Store vs. Sideloading)
Cloud
Frontends/Devices Backend
1
2
3
4
Frontend/Devices
Multi-Plattform
Multi-Formfaktor
UI/UX Design
Hardware FeaturesGeschäftslogik
Push Notifications
1
Anbindung
2
Protokolle
Datenvolumen
Security
Verschlüsselung
On-/Offline-
fähigkeit
Fehlerbehandlung
Integration
3
3
Enterprise
Backends
Cloud-Integration
ArchitekturtypenSchnittstellen
Performance
ALM
Continuous
Testing
Continuous
Feedback
Continuous DeliveryStore
Sideloading
4
Cross-Platform Architektur
One App
Multiple Devices
One App
Multiple Devices
Xamarin
UWP
WPF
Hoher Grad des Code Sharing
XAML als durchgängiges UI Markup
Unterstützung der Enterprise-relevanten Plattformen
Wiederverwendung vorhandener .NET Skills und Tools
Warum Xamarin?
Shared C# Mobile
iOS UI (C#) Android UI (C#) Windows UI (C#)
Shared C# Client/Server
C# Server
Windows Server
Linux Server (Mono)
Native UI und Performance
100% Zugriff auf native APIs
Einheitliche Entwicklungstools
Hoher Grad des Code Sharing
Xamarin
Device Features (C#)
Plattformspezifische Views (C#/Storyboard)
Device Features (C#) Device Features (C#)
Gemeinsame Geschäftslogik (C#)
Plattformspezifische Views (C#/XAML)
Gemeinsame ViewModels (C#)
Plattformspezifische Views (C#/AXML)
Xamarin.Forms
Gemeinsame ViewModels (C#)
Gemeinsame Views (C#/XAML)
Device Features (C#) Device Features (C#) Device Features (C#)
Gemeinsame Geschäftslogik (C#)
Warum
Xamarin.Forms? Xamarin.FormsXamarin.iOS /
Xamarin.Android
• Business Apps mit
Dateneingaben
Fokus mehr auf Code-Sharing
• Apps mit sehr speziellen UIs und
Interaktionspatterns
• Verwendung von zahlreichen
plattformspezifischen APIs
Fokus mehr auf UI-Modifikationen
Xamarin.Forms
Beispiel
Warum UWP? - UWP Apps laufen auf allen Windows 10 Geräten
Warum nicht
Xamarin.Forms
UWP?
- Damals noch Technical Preview
Mögliche Option für Enterprise Apps
X-Suzzle im Microsoft Store
Warum WPF?
48% Windows 7
23% Windows 10
11% Windows 8/8.1
8% Windows XP
6% Mac OS X
2% Linux 2% Andere
Marktanteile Desktop Oktober 2016
- Windows 7: Die Plattform im Desktop-Bereich
- .NET Apps im Windows Store
- Legacy Code als Startpunkt für Cross-Platform Entwicklung
https://www.netmarketshare.com
Gesamt-
architektur
Microsoft AzureSQL Server
Service Bus
Dynamics CRM
ActiveDirectory
Business Logic & Services
Integration Services
Cordova Xamarin Excel
Office 365 Power BI SharePointASP.NETWeb API, Web Apps
ResponsiveWeb
UWP WPF
Gesamt-
architektur
Microsoft AzureSQL Server
Service Bus
Dynamics CRM
ActiveDirectory
Business Logic & Services
Integration Services
Cordova Xamarin Excel
Office 365 Power BI SharePointASP.NETWeb API, Web Apps
ResponsiveWeb
UWP WPF
Client-ArchitekturFrontend
Backend
REST API
HockeyApp
ViewModels
Services, Business Logic Models/Entities
Infrastructure
Local Data Store
Hardware Features
Xamarin.Forms UWP
Local Data Access
WPF
MvvmCross
Adapter Remote Data Access
ALM
ALM
Continuous Build
Continuous UI Testing
Continuous Build Build Server
Team Foundation Server/Visual Studio Team
Services
Build Agent(on-premise/Azure)
Mac OS X Build Host/MacinCloud
Visual Studio
Xamarin Android
AndroidSDK
Xamarin Studio
XamariniOS
iOS SDKXCode
App
App Code
Unit TestsDeveloper
Continuous Build
UI Testing
Coded UI Test
• WPF
• UWP
Xamarin.UI
Test
• iOS
• Android
[Test]public void LoginScreen_ShowsErrorMessage_WhenCredentialsAreInvalid() {
var screen = new LoginScreen(app);screen.EnterUserName("InvalidUserName");screen.EnterPassword("InvalidPassword");screen.TapLogIn();var errorMessage = screen.GetErrorMessage();Assert.AreEqual("Anmeldung fehlgeschlagen.", errorMessage);
}class LoginScreen {
…public LoginScreen(IApp app) {
this.app = app;}public void EnterUserName(string userName) {
app.WaitForElement(c => c.TextField("UserNameEntry"));app.ClearText(c => c.TextField("UserNameEntry"));app.EnterText(c => c.TextField("UserNameEntry"), userName);
}…
}
UI Testing
Xamarin.UITest
iOS und Android
Fragmentierung
iOS Android
Gerätetypen 22 > 19.000
Sprachen 20 39
Bildschirmgrößen 6 27
OS Versionen
63%
29%
8%
27.11.2016
iOS 10 iOS 9 Früher
24%
34%
25%
14%
3%
7.11.2016
Marshmallow Lollipop
KitKat Jelly Bean
Früher
iOS und Android
Fragmentierung
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800
US M
akt
Ab
deck
un
g
Anzahl der Geräte
Quelle: Open Signal
25%: 32 Geräte
50%: 125 Geräte
75%: 379 Geräte
90%: 702 Geräte
Xamarin
Test CloudXamarin Test Cloud
IPA/APK + Tests
Web ServerApplication
+ Tests
Results
Developer
Xamarin
Test Cloud
App DemoCode Demo
Showcase
„ShowTime“
Microsoft AzureSQL Server
Service Bus
Dynamics CRM
ActiveDirectory
Business Logic & Services
Integration Services
Cordova Xamarin Excel
Office 365 Power BI SharePointASP.NETWeb API, Web Apps
ResponsiveWeb
UWP WPF
Demo
Fazit
50%
20%
8%
8%
14%
Codeaufteilung über alle Plattformen
Plattformübergreifender Code
Xamarin.Forms Code
Xamarin.Android Code
Xamarin.iOS Code
UWP Code
Code Sharing
Code Sharing
64%
25%
11%
Codeaufteilung iOS/Android
Plattformübergreifender Code
Xamarin.Forms Code
Xamarin.iOS oder Xamarin.Android Code
Xamarin
UWP
WPF
Hoher Grad des Code Sharing
Unterstützung der business-relevanten Plattformen
Natives Frontenddesign und User Experience
Native Performance auf dem Endgerät
Nutzung vorhandener Tools und ALM-Prozesse
Nutzung vorhandenen .NET Know-Hows
Wirtschaftlichkeit
Vielen Dank
SDX AG
Speicherstraße 1, 60327 Frankfurt
Landwehrstraße 61, 80336 München
Markus DemmlerPrincipal eXpert
Denis ThomasSenior eXpert