0
Multiplatform
App Architecture
Edwin van Schaick
Mobile App Development
Native
Applications

Native Development

Hybrid
Applications

Multiplatform native
Development

Mob...
Choosing the right development method

Feature

Native Development

Multiplatform Native
Development

Multiplatform Framew...
One Development Environment

+

Xamarin
Multiplatform App Architecture | 15 jan 2014
Copyright © Capgemini 2014. All Right...
Multiplatform Native Development

Multiplatform App Architecture | 15 jan 2014
Copyright © Capgemini 2014. All Rights Rese...
Capgemini Layer Information App (LIA)

Multiplatform App Architecture | 15 jan 2014
Copyright © Capgemini 2014. All Rights...
Multiplatform App Architecture

iOS

Windows

Common

Android

Domain

Presentation
Business

Resources

Back
Office
Multi...
Multiplatform App Design Pattern
class Multiplatform App Design Pattern

Platform::Setup

Portable::App

Platform::MyView
...
App Design Layering

Presentation
Common

Domain

Business

Resources

Multiplatform App Architecture | 15 jan 2014
Copyri...
Presentation Layer

Presentation

Multiplatform App Architecture | 15 jan 2014
Copyright © Capgemini 2014. All Rights Rese...
Business Layer

Business

Common

Domain

Multiplatform App Architecture | 15 jan 2014
Copyright © Capgemini 2014. All Rig...
Resources Layer

Resources
Domain
Multiplatform App Architecture | 15 jan 2014
Copyright © Capgemini 2014. All Rights Rese...
Milky Away

Multiplatform App Architecture | 15 jan 2014
Copyright © Capgemini 2014. All Rights Reserved

13
Let’s show some code…

Multiplatform App Architecture | 15 jan 2014
Copyright © Capgemini 2014. All Rights Reserved

14
Multiplatform App Architecture Advantages
 All advantages of native development still apply
 Optimal performance and use...
Contact | Capgemini Mobile App Center Netherlands

Lead Architect Capgemini App Center Netherlands
Edwin van Schaick
Edwin...
About Capgemini
With more than 120,000 people in 40 countries, Capgemini is one
of the world's foremost providers of consu...
Upcoming SlideShare
Loading in...5
×

Multiplatform App Architecture

1,313

Published on

The Multiplatform App Architecture offers the possibility to create mobile applications for multiple mobile platforms and at the same time offer the flexibility to use all native functionality of the mobile operating systems to realize an optimal user experience. Combined with a powerful development environment and a comprehensive programming language it offers an excellent way to develop and maintain rich mobile applications.

Capgemini helps customers to achieve mobile excellence and realizes mobile applications in an agile way using this architecture.

Published in: Technology, Business
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,313
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
64
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide
  • A blog about the Multiplatform App Architecture in Dutch is published at http://www.nl.capgemini.com/blog/mobility-blog/2013/11/de-beste-ontwikkelstrategie-voor-mobiele-apps
  • Native Applications: best user experience and performance, distributed via app storesHybrid Applications: cross-platform app running in a container on all supported platforms, distributed via app storesMobile Web Applications: web application with responsive design to support many devices, runs in browser, hosted on web server, direct deploymentNative Development: multiple development environments, results in higher development costs, expertise may be hard to getMultiplatform Native Development: one development environment, shared .NET codebase with Microsoft (Windows platforms) and Xamarin (iOS and Android platforms) technologyMultiplatform Framework Development: one development environment, eg. PhoneGap (supported by IBM Worklight, SAP Mobile Platform) or Kony, shared HTML5/CSS/JavaScript codebaseMobile Web Development: one development environment with shared HTML5/CSS/JavaScript codebase, UI frameworks for responsive designMore info: http://www.nl.capgemini.com/bronnen/mobile-development-think-to-the-future-today
  • Development type determined based on requirements.Challenges for Mobile Development:The Agile versus Quality paradoxIncreasing demands for user experience, performance, security, innovationTime to Market difficult for multiple platformsMultiple target platforms result in multiple development environmentsAnd multiple sets of development toolsResulting in higher development costsSeparate maintenance for multiple target platformsPlatform-specific expertise is hard to get
  • One advanced development environment .NET with C#Full Microsoft Visual Studio and Team Foundation Server integration for all mobile developmentXamarin out-of-the-box offers .NET environment for both iOS and Android, but offers platform-specific classes to create apps: iOS UIViewControllers vs. Android Activities.
  • Architecture and framework needed for optimal code sharing and separation of concerns.Core of the app is shared across all platforms. UI and platform-specific services are developed separately for each platform.All advantages of native development still applyOptimal performance and user experience through native compilationFull access to devices and platform servicesFull control to implement security countermeasuresShared code base for iOS, Android and Windows platforms90% code sharing between platforms75% development effort reduction from second platform onwards
  • A multiplatform mobile architecture offers the possibility to create mobile applications for multiple mobile platforms and at the same time offer the flexibility to use all native functionality of the mobile operating systems to realize an optimal user experience. Combined with a powerful development environment and a comprehensive programming language it offers an excellent way to develop and maintain rich mobile applications.Core of application is shared, while navigation differs between platforms.
  • Uniform architecture based on Capgemini’s CASA reference architectureProven way to guarantee quality, reduce cost, assure fast time to market and deliver exactly what is neededShared design patterns and way of working across multiple platforms and applicationsOnly one development environment requiredOne skill set for developers
  • Model-View-ViewModel pattern is appliedanddependencyInjectionis usedfordynamic binding of platform specific services.
  • The Presentation layer contains packages responsible for the user experience (UX) and the corresponding presentation logic. The Model – View – ViewModel (MVVM) pattern is used for separating the responsibilities for the visual layout and the presentation and business logic. The Business layer contains packages that realize the business logic of the application. The business logic is realized in business entity classes. The business entity classes form the Model from the Model – View – ViewModel pattern. These classes have functional meaning in the business domain of the application and aggregate the functional data. The data can be present as attributes in a business entity class and/or can be aggregated as one or more domain entity classes.The Resource layer contains packages that provide the data for the application and realizes connections to the device, its peripherals and external systems. This layer abstracts all data and connections via platform-independent interfaces, using domain entity classes to transport the data. These platform-independent interfaces are realized by platform-specific services.The Domain Entities frame consists of domain entity classes that contains the data shared between all architectural layers. Domain entity classes contain only data and do not contain business logic. Data can be aggregated as attributes and as nested domain entity classes.  The Common frame contains packages for the implementation of functionality which is shared between all layers. Examples are base classes to support the Model-View-ViewModel pattern and utility classes for security, network connections, multithreading support, configuration settings etc.
  • SetupPlatform-specific class that is responsible for hosting the application for a specific platform. It handles platform-specific initialization and instantiates the platform-independent App class.AppPlatform-independent class that implements the application. This class is responsible for the platform-independent initialization and performs the navigation to the initial view of the application. Besides this startup code, this class does not contain any more presentation and business logic. This class owns the Model from the Model-View-ViewModel pattern, which is represented by the BusinessEntity class.MyViewModelPlatform-independent class that implements the presentation logic for a specific screen. The ViewModel class implements binding properties and command handling to realize platform-independent binding to platform-specific Views.This class uses BusinessEntity classes to retrieve and/or change business data. Services from the Resource layer are never directly accessed from a ViewModel class. MyViewPlatform-specific class that is responsible to realize a screen. The View does not contain code-behind to implement presentation logic. The presentation logic is implemented by the associated MyViewModel class and is accessible via property binding and commands.
  • MyBusinessEntityPlatform-independent class that actually represents the Model in the Model-View-ViewModel pattern. The model consists of multiple business entity classes that contain the business logic of the mobile application. Implementing the business logic in separate business entity classes gives an additional advantage. It offers the flexibility to move the business logic to a mobile web client or business service implementation on the server side when desired. Platform-specific and also platform-independent services are accessed via specific IMyService interfaces.MyDomainEntityThis class represents a class model of platform-independent domain entity classes, which contain the business data in the form of properties. A property has a value of a uniform type or consists of one or more nested domain entity classes. A domain entity class does not contain code, except to initialize properties with a default value.
  • IMyServicePlatform-independent interface which is specifically designed to interact with a platform-specific (or platform-independent) MyService. It is not necessary to expose complete platform services, but only implement the methods actually needed for the mobile application in an agile way. Only uniform (value) types and domain entities are used to exchange data via the interfaces between a service and the business layer.MyServicePlatform-specific (or platform-independent) service that realizes access to specific platform services, persistent data, the device resources, device peripherals or external systems. These service realizations will be kept small, because only the methods are exposed which are actually needed for the mobile application. Note that a lot of platform services are exposed in a uniform way for multiple platforms, which makes it possible to also share services across those platforms.
  • Open source framework MvvmCross is used (but not required) to realize this architecture.
  • Transcript of "Multiplatform App Architecture"

    1. 1. Multiplatform App Architecture Edwin van Schaick
    2. 2. Mobile App Development Native Applications Native Development Hybrid Applications Multiplatform native Development Mobile Web Applications Multiplatform Framework Development Mobile Web Development Multiplatform App Architecture | 15 jan 2014 Copyright © Capgemini 2014. All Rights Reserved 2
    3. 3. Choosing the right development method Feature Native Development Multiplatform Native Development Multiplatform Framework Development Mobile Web Development Development Cost High Medium Medium Low Code Sharing None High High High Device Integration High High Medium Low Advanced UI High High Medium Medium Deployment App Store App Store App Store + Web Server Web Server Development Language Native C# HTML5, JavaScript HTML5, JavaScript Performance High High Medium Low (network dependency) Security Full Control Full Control Container Dependency Browser Dependency Innovation Fast Fast Medium Slow Multiplatform App Architecture | 15 jan 2014 Copyright © Capgemini 2014. All Rights Reserved 3
    4. 4. One Development Environment + Xamarin Multiplatform App Architecture | 15 jan 2014 Copyright © Capgemini 2014. All Rights Reserved 4
    5. 5. Multiplatform Native Development Multiplatform App Architecture | 15 jan 2014 Copyright © Capgemini 2014. All Rights Reserved 5
    6. 6. Capgemini Layer Information App (LIA) Multiplatform App Architecture | 15 jan 2014 Copyright © Capgemini 2014. All Rights Reserved 6
    7. 7. Multiplatform App Architecture iOS Windows Common Android Domain Presentation Business Resources Back Office Multiplatform App Architecture | 15 jan 2014 Copyright © Capgemini 2014. All Rights Reserved 7
    8. 8. Multiplatform App Design Pattern class Multiplatform App Design Pattern Platform::Setup Portable::App Platform::MyView Portable::MyView Model Portable::MyBusinessEntity Platform:: DependencyInj ectionBuilder «interface» Portable::IMyServ ice Portable::MyDomainEntity Platform::MyServ ice Multiplatform App Architecture | 15 jan 2014 Copyright © Capgemini 2014. All Rights Reserved 8
    9. 9. App Design Layering Presentation Common Domain Business Resources Multiplatform App Architecture | 15 jan 2014 Copyright © Capgemini 2014. All Rights Reserved 9
    10. 10. Presentation Layer Presentation Multiplatform App Architecture | 15 jan 2014 Copyright © Capgemini 2014. All Rights Reserved 10
    11. 11. Business Layer Business Common Domain Multiplatform App Architecture | 15 jan 2014 Copyright © Capgemini 2014. All Rights Reserved 11
    12. 12. Resources Layer Resources Domain Multiplatform App Architecture | 15 jan 2014 Copyright © Capgemini 2014. All Rights Reserved 12
    13. 13. Milky Away Multiplatform App Architecture | 15 jan 2014 Copyright © Capgemini 2014. All Rights Reserved 13
    14. 14. Let’s show some code… Multiplatform App Architecture | 15 jan 2014 Copyright © Capgemini 2014. All Rights Reserved 14
    15. 15. Multiplatform App Architecture Advantages  All advantages of native development still apply  Optimal performance and user experience through native compilation  Full access to devices and platform services  Full control to implement security countermeasures  Shared design patterns and way of working across multiple platforms and applications  Only one development environment required  One skill set for developers  Shared code base for iOS, Android and Windows platforms  90% code sharing between platforms  75% development effort reduction from second platform onwards  One advanced development environment .NET with C#  Full Microsoft Visual Studio and Team Foundation Server integration for all mobile development  Uniform architecture based on Capgemini’s CASA reference architecture  Proven way to guarantee quality, reduce cost, assure fast time to market and deliver exactly what is needed Multiplatform App Architecture | 15 jan 2014 Copyright © Capgemini 2014. All Rights Reserved 15
    16. 16. Contact | Capgemini Mobile App Center Netherlands Lead Architect Capgemini App Center Netherlands Edwin van Schaick Edwin.van.Schaick@capgemini.com eschaick http://www.capgemini.com/experts/embedded-and-mobile-solutions/edwin-van-schaick Multiplatform App Architecture | 15 jan 2014 Copyright © Capgemini 2014. All Rights Reserved 16
    17. 17. About Capgemini With more than 120,000 people in 40 countries, Capgemini is one of the world's foremost providers of consulting, technology and outsourcing services. The Group reported 2011 global revenues of EUR 9.7 billion. Together with its clients, Capgemini creates and delivers business and technology solutions that fit their needs and drive the results they want. A deeply multicultural organization, Capgemini has developed its own way of working, the Collaborative Business ExperienceTM, and draws on Rightshore ®, its worldwide delivery model. Rightshore® is a trademark belonging to Capgemini www.capgemini.com The information contained in this presentation is proprietary. © 2014 Capgemini. All rights reserved.
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×