© Zühlke 2011
Martin Kutz
XingApp - Cross PlatformCross Platform Tests mit Mono am Beispiel der XING App
22. November 2011Folie 1 von 14
© Zühlke 2011XingApp - Cross Platform | Martin Kutz
Idee
22. November 2011
• Business Logic für andere Plattformen wiederverwenden
• Bestehende XING App umstrukturieren und Phone-unabhängigen Teil unter Mono zum Laufen bringen
• Apps mit MonoDroid & MonoTouch für Android & iPhone basierend auf .NET Code
© Zühlke 2011
XingApp - Cross Platform
Martin Kutz
Software Architektur der WP7 XingApp
22. November 2011Folie 3 von 14
© Zühlke 2011XingApp - Cross Platform | Martin Kutz
Software Architektur
22. November 2011 Folie 4 von 14
Isolated Storage
View
ViewModel
Store
Service
Commands, Calls
Data-Binding
CallBack,StateChangedEvent
Callback,errorCallback
Call
Call
LocalStorage
Access
REST-XML
HTTP-Request
Parse ResponseMessenger
Publish/Subscribe
© Zühlke 2011XingApp - Cross Platform | Martin Kutz
Software Architektur
22. November 2011 Folie 5 von 14
Isolated Storage
View
ViewModel
Store
Service
LocalStorage
REST-XMLMessenger
© Zühlke 2011XingApp - Cross Platform | Martin Kutz
Software Architektur
22. November 2011 Folie 6 von 14
ViewsViewModel
XingApp.Ui
StoresServices
XingApp.Core
InterfacesEntities
XingApp.Common
Storage
XingApp.Common.Wp7
XingApp.Agent.Wp7Views
XingApp.Ui.Andoid
Storage
...Common.Andoid
© Zühlke 2011XingApp - Cross Platform | Martin Kutz
Software Architektur
22. November 2011
ViewsViewModel
XingApp.Ui.Wp7
StoresServices
XingApp.Core
InterfacesEntities
XingApp.Common
Storage
XingApp.Common.Wp7
ViewsViewModel
XingApp.Ui.Win8
Storage
XingApp.Common.Win8
Folie 7 von 14
© Zühlke 2011
XingApp - Cross Platform
Martin Kutz
Zahlen & Fakten
22. November 2011Folie 8 von 14
© Zühlke 2011XingApp - Cross Platform | Martin Kutz
Code-Verteilung auf die verschiedenen Projekte
22. November 2011 Folie 9 von 14
0
5000
10000
15000
20000
25000
30000
Zeilen *.csZeilen mit ';'
© Zühlke 2011XingApp - Cross Platform | Martin Kutz
Zahlen & Fakten
22. November 2011 Folie 10 von 14
ProjektZeilen *.cs
Zeilen mit ';'
XingServer 3825 1511XingApp.Common 11482 2212XingApp.Core 13792 3203XingApp.Integration.Tests 2556 1099XingApp.Common.Wp7 2910 822XingApp.Agent 335 132XingApp.Ui 21264 6293XingApp.Ui.Tests 12152 3248XingApp.Ui.Tests.Runner 1253 351Summe 69569 18871
% von GesamtPlattformspezifisch mit Tests *.cs *.cs mit ';'Ui+Tests+Agent+Common.Wp7 39217 11594 56,37% 61,44%
Plattformunabhängig ohne TestsCore+Common 25274 5415 36,33% 28,69%Core+Common+Server+Runner 30352 7277 43,63% 38,56%
Plattformspezifisch ohne TestsUi+Agent+Common.Wp7 24509 7247 35,23% 38,40%
Fast 50% wiederverwendbar!
© Zühlke 2011
XingApp - Cross Platform
Martin Kutz
Erledigte Punkte
22. November 2011Folie 11 von 14
© Zühlke 2011XingApp - Cross Platform | Martin Kutz
Erledigte Punkte
• Cross-Platform kompatible Architektur
• Einbindung in MonoDroid Applikation
• Erzeugung der Stores/Services mit Funq
• Stores/Services/Entities nutzbar
22. November 2011 Folie 12 von 14
© Zühlke 2011
XingApp - Cross Platform
Martin Kutz
Offene Punkte
22. November 2011Folie 13 von 14
© Zühlke 2011XingApp - Cross Platform | Martin Kutz
Offene Punkte/Aufgaben
• LocalStorage, ApplicationStorage
• DispatchService
• Einfaches Test-UserInterface entwerfen (z.B. Messages)
• Hammock näher untersuchen und ggf. ersetzen
Versuche mit Hammock ohne ErfolgEinfacher System.Net.WebRequest funktioniert
22. November 2011 Folie 14 von 14
Top Related