The document discusses different approaches to cross-platform mobile app development including building native apps for each platform (Silo approach), using hybrid approaches like HTML5/web technologies, and using the Xamarin framework. It outlines benefits and challenges of each approach, and goes into more detail on how Xamarin allows building apps using C# and shared code while still providing native experiences for each platform. It also discusses Xamarin.Forms for building cross-platform UIs with shared code and controls.
6. Customer pays for experience
not for technology
* Experience here relates to end user experience (UX: User Experience) offered to
the customer by your app/website
7. I have a question for you
What device do you use?
8. Cross-Platform Mobile Development
▪ Building High quality apps is hard
• Different presentation styles, interaction
styles and software stack
• Different screen sizes, input modes and
hardware capabilities
• New devices and OS versions are introduced
multiple times per year
• New consumer applications regularly
extend and revise the standards and
set the bar higher for good mobile
applications
10. Silo: Build App Multiple Times
No shared code • Many languages & development environments • Multiple teams
Objective-C
in
Xcode
Java
in
Android
Studio
C#
in
Visual Studio
11. ▪ Full native experience
▪ Total access to the device as provided
by SDK
▪ Share Web API
▪ Minimal re-use mostly on back end
Web API
▪ Higher development cost from
multiple teams (silo teams) or
expensive multi-device developers
▪ Multiple codebases to maintain and
extend
▪ One platform rules the others are
subservient
Benefits Challenges
Silo: Build App Multiple Times
12. HTML: Write Once, Run Everywhere
App
Generator
Lua
Javascript
Actionscript
HTML+CSS
Limited native API access • Slow performance • Poor user experience
14. ▪ Provide consist experience regardless
of target
▪ Cheap as it is just HTML
▪ Single codebase to maintain and
extend
▪ No need for revenue sharing as no
need to be in app stores
▪ User experience tends to be webish
and not native
▪ Need to still test and debug multiple
targets
▪ Features tend to be a subset common
to all targets
Benefits Challenges
HTML: Write App using Mobile Web
18. Shared vs PCL (Portable Class Library)
▪ A Shared Project is not directly
compiled (.dll is not generated),
instead files are compiled into .dll of
project that references it
▪ Can write platform specific code in a
same file using compiler directives
#ifdef
▪ Cluttered implementation for large
projects
▪ Cannot be used other than Xamarin
projects
• Shared • PCL (Portable Class Library)
20. Shared vs PCL (Portable Class Library)
▪ Shared code restricted into compiling directives is more difficult to read, slowing
down the development process.
▪ PCL code is much cleaner and maintanable but that is subjective to your
development practices (you may end up writing too much boiler plate code)
▪ If you are starting with Xamarin PCL is a better choice for better usability and
compatibility across other .NET platforms
Which suits better?
21.
22.
23. Xamarin + Xamarin.Forms Approach
▪ Quickly and easily build native user
interfaces using shared code
▪ Xamarin.Forms elements map to native
controls and behaviors
▪ Mix-and-match Xamarin.Forms with
native APIs
Shared UI Code
24. Native Performance
Xamarin.iOS does full Ahead Of
Time (AOT) compilation to
produce an ARM binary for
Apple’s App Store.
Xamarin.Android takes advantage of
Just In Time (JIT) compilation on the
Android device.
25. Anything you can do in Objective-C, Swift, or Java
can be done in C# and Visual Studio with Xamarin.
26.
27.
28. ✓ 40+ Pages, layouts, and controls
(Build from code behind or XAML)
✓ Two-way data binding
✓ Navigation
✓ Animation API
✓ Dependency Service
✓ Messaging Center
Shared C# Backend
Shared UI Code
43. On Premises
Storage
Servers
Networking
O/S
Middleware
Virtualization
Data
Applications
Runtime
Youmanage
Infrastructure
(as a Service)
Storage
Servers
Networking
O/S
Middleware
Virtualization
Data
Applications
Runtime
ManagedbyMicrosoft
Youmanage
Platform
(as a Service)
ManagedbyMicrosoft
Youmanage
Storage
Servers
Networking
O/S
Middleware
Virtualization
Applications
Runtime
Data
Software
(as a Service)
ManagedbyMicrosoft
Storage
Servers
Networking
O/S
Middleware
Virtualization
Applications
Runtime
Data
44. Cloud Services hungry kya!
On Premises
Made at home
Toppings
Tomato Sauce
Cheese
Fire
Owen
Pizza Dough
Soda
Dining Table
Electricity/Gas
Youmanage
IaaS
Take and Bake
Topping
Tomato Sauce
Cheese
Fire
Owen
Pizza Dough
Soda
Dining Table
Electricity/Gas
ManagedbyVendor
Youmanage
PaaS
Pizza delivered
ManagedbyVendor
Youmanage
Topping
Tomato Sauce
Cheese
Fire
Owen
Pizza Dough
Dinning Table
Electricity/Gas
Soda
SaaS
Dine out
ManagedbyVendor
Topping
Tomato Sauce
Cheese
Fire
Owen
Pizza Dough
Dinning Table
Electricity/Gas
Soda
45.
46. Why the
cloud?
• Rapidly setup environments to drive business
priorities
• Scale to meet peak demands
• Increase daily activities, efficiency and reduced cost.
49. Azure App Service
Build and scale great cloud apps
Web Apps
Mobile Apps
Logic Apps
API Apps
.NET, Java, Node.js, PHP, Python
Auto patching
Auto scale
Integration with existing apps
Continuous deployment
50.
51. RESTAPI
Offline
sync
Facebook Twitter Microsoft Google Azure Active
Directory
Azure Mobile Apps
WindowsAndroid
Chrome
iOS
OSX
In-AppKindle
Backend code
SQL MongoTables O365 API Apps
Offline Sync
52.
53. Create a Mobile Service
MobileService = new MobileServiceClient(
"https://myapp.azurewebsites.net");
54. Create tables
IMobileServiceSyncTable<TodoItem> syncTable;
public async Task Init()
{
const string path = "syncstore.db";
var db = new MobileServiceSQLiteStore(path);
db.DefineTable<TodoItem>();
}
await MobileService.SyncContext.InitializeAsync(db);
syncTable = MobileService.GetSyncTable<TodoItem>();
87. Visual Studio App Center
Automate your entire mobile app
lifecycle in a few easy steps
Deliver high-quality apps that keep
users coming back for more
Move faster and increase quality with
the tools you already use—we
support a wide variety of platforms