Build Your Own Mobile Enterprise
Application
It Isn’t as Hard as You Might Think
jason@jasonconger.com
http://www.JasonConger.com
@JasonConger
http://www.linkedin.com/in/JasonConger
About Me
Object Orientation
Think of applications as a Data Access Layer (DAL)
Loose Coupling
Off Topic?
A
Mobility
Pack
Horizon
View
VMware Unity Touch
Citrix Mobile Desktop
Theorem #1
Applications developed for native
devices with native code are
superior.
Platform
Development
Framework
Language IDE
iOS iOS SDK Objective-C Cocoa, Xcode
Android Android SDK, Android NDK Java, C/C++
Eclipse, NetBeans,
IntelliJ IDEA
WinPhone 7 Windows .NET & Silverlight SDK C# and others Visual Studio
Windows 8
Metro Style
Apps
WinRT
C++/ C# / VB.NET /
Javascript
Visual Studio
Blackberry
Java ME + Optional Packages +
API extensions
Java Eclipse
ChromeOS Webkit HTML /CSS / Javascript Many
Platform
Development
Framework
Language IDE
iOS iOS SDK Objective-C Cocoa, Xcode
Android Android SDK, Android NDK Java, C/C++
Eclipse, NetBeans,
IntelliJ IDEA
WinPhone 7 Windows .NET & Silverlight SDK C# and others Visual Studio
Windows 8
Metro Style
Apps
WinRT
C++/ C# / VB.NET /
Javascript
Visual Studio
Blackberry
Java ME + Optional Packages +
API extensions
Java Eclipse
ChromeOS Webkit HTML /CSS / Javascript Many
There’s More Than One Way to Skin a Cat
Web apps have been an option for years, but
native applications dominated the mobile
enterprise landscape.
So what makes HTML5 special?
Web apps have been an option for years, but
native applications dominated the mobile
enterprise landscape.
So what makes HTML5 special?
<canvas>
How HTML 5 Works
HTML
JSON/XML
Old and Busted
New Hotness
HTML5 Pros
• Easier than native to code
• Offline
• No app store necessary
• Some native device features available
• Single code base for multiple platforms*
• Software updates
HTML5 Cons
• UI is not native
• Browser based idiosyncrasies
• Not all native device features available
• No app-level VPN (3rd party needed)
• No push notifications
Theorem #2 – Apps that Look Better
are Perceived to be Better
How PhoneGap Works
• Chromeless Web
Browser
• JS library to access
native features
• Web Browser proxies
bare metal requests
Getting Closer To The Device Without Native Code
DEMO
Theorem #3 – Inverse Proportions
PhoneGap Pros
• Open source and free
• ~Single code base (ex. phone buttons)
• Fewer specialized skills needed ($$$)
• More native capabilities than HTML5
• “Feels” more native
• Plugins for MDM solutions
PhoneGap Cons
• WebView – depends on vendor
implementation
• More sluggish than native (but getting better)
• Mac needed to develop iOS apps
• Not all native device features available – may
need to wait on framework updates
How Intel XDK Works
Intel XDK Pros
• Drag and Drop design
• Development is cross platform
• No need for Mac (built in the Cloud)
• No need to install 3rd party SDKs (built in the
Cloud)
• Test on real device
Intel XDK Cons
• It is still a hybrid app, so same cons as
PhoneGap
• Stub app for testing on native device seems
kludgy
How Xamarin Works
• C#/.NET on iOS and Android
• Born out of the Mono Project
– An open source, cross-platform, implementation
of C# and the Common Language Runtime (CLR)
that is binary compatible with Microsoft.NET
How Microsoft .NET Works
MSIL
(Microsoft Intermediate Language)
DEMO
Xamarin Pros
• Native Code!
• Visual Studio integration
• Drag and Drop designer
• Code reuse – iOS, Android, Windows
Xamarin Cons
• Still need a Mac for build
• Apps will be larger
• Full featured = $$$
• Still need to learn native API’s
Citrix Mobile SDK for Windows Apps
How the Citrix Mobile SDK for Windows Apps Works
XenApp
XenDestkop
HDX Virtual Channels
Client Device
Receiver
Receiver
Core
MRVC
Virtual Channel
XenApp/XenDesktop Machine
New
Modified
3rd Party Code
CtxSvcHost.exe
User Session
Mobile VC Client
COM Layer
Native
App
Native Library .NET Assembly ID Dispatch
Managed
App
Automation App
Location and Sensor VC Client
Location and
Sensor
Virtual Channel
CtxSvcHost.exe
HDX
MRVC Virtual Channel
Service
Location Virtual Channel
Service
How the Citrix Mobile SDK for Windows Apps Works
DEMO
EXIF Data from photo
used to extract GPS
location and provide
maps from Bing
Phone or SMS using
native device
Take photo or video
using native device
No Patient data is stored
on the device.
Citrix Mobile SDK Pros
• The data problem is solved
• Utilize existing home-grown apps – add
features over time
• Small learning curve
Citrix Mobile SDK Cons
• No offline
• Need source code
• Users need to launch Citrix Receiver first
• Slow application launch (compared to other
methods)
• Requires Citrix infrastructure
• Not quite as smooth (due to remoting)
Microsoft RDS options??
Is there a Mobility Pack for Microsoft RDS?
Short answer…No.
Can it be done?
Well, sort of…but how?
Detect the remote device type
and run an overlay application
that simply hides the Task Bar
and other components, and
displays a user friendly
interface
Remember progman.exe?
Detection of a Mobile Device
How to detect if a mobile device is accessing a Server Based Application?
The following is an example command script:
usrlogon.cmd
------------
@ECHO OFF
:start
CTXCliOS.exe
IF ERRORLEVEL 0 goto noOS
IF ERRORLEVEL 1 goto winOS
IF ERRORLEVEL 82 goto macOS
IF ERRORLEVEL 83 goto iOS
IF ERRORLEVEL 84 goto androidOS
goto noOS
:winOS
rem Client OS successfully matched to windows
echo Client OS is Windows.
echo put other commands here for this client.
goto end
:macOS
rem Client OS successfully matched to mac
echo Client OS is Mac.
echo put other commands here for this client.
goto end
:iOS
rem Client OS successfully matched to iOS
echo Client OS is iOS.
echo put other commands here for this client.
goto end
:androidOS
rem Client OS successfully matched to android
echo Client OS is Android.
echo put other commands here for this client.
goto end
:noOS
echo NO CLient OS match.
:end
CTXCliOS is a command-line tool for Citrix Servers to check the type
of Operating System that is being run from the Client Machine that is
running the Citrix Receiver or Plugin.
Usage:
CTXCliOS [/?]
/? - Help information
The ERRORLEVEL return code shows the Client OS Type.
The following are known OS types and their ERRORLEVEL return
code
Client OS return code (decimal)
============= =====================
Windows 1
EPOC 10
OS/2 11
DOS32 14
Linux 81
Mac 82
iOS 83
Android 84
Blackberry 85
PlayBook 86
Windows Mobile 87
HTML5 257
Java 261
WinCE - HP 7945
WinCE - Wyse 32940
ThinOS - Wyse 32993
Resources
• www.html5rocks.com
• www.microsoftvirtualacademy.com
• coenraets.org/blog/phonegap-tutorial/
• developer.xamarin.com/guides/
• www.ctrl-alt-del.com.au - Citrix Mobile SDK
stuff

Building your Own Mobile Enterprise Application: It’s Not as Hard as You Might Think!

  • 1.
    Build Your OwnMobile Enterprise Application It Isn’t as Hard as You Might Think
  • 2.
  • 6.
    Object Orientation Think ofapplications as a Data Access Layer (DAL)
  • 7.
  • 8.
  • 13.
  • 14.
  • 15.
  • 17.
    Theorem #1 Applications developedfor native devices with native code are superior.
  • 18.
    Platform Development Framework Language IDE iOS iOSSDK Objective-C Cocoa, Xcode Android Android SDK, Android NDK Java, C/C++ Eclipse, NetBeans, IntelliJ IDEA WinPhone 7 Windows .NET & Silverlight SDK C# and others Visual Studio Windows 8 Metro Style Apps WinRT C++/ C# / VB.NET / Javascript Visual Studio Blackberry Java ME + Optional Packages + API extensions Java Eclipse ChromeOS Webkit HTML /CSS / Javascript Many
  • 19.
    Platform Development Framework Language IDE iOS iOSSDK Objective-C Cocoa, Xcode Android Android SDK, Android NDK Java, C/C++ Eclipse, NetBeans, IntelliJ IDEA WinPhone 7 Windows .NET & Silverlight SDK C# and others Visual Studio Windows 8 Metro Style Apps WinRT C++/ C# / VB.NET / Javascript Visual Studio Blackberry Java ME + Optional Packages + API extensions Java Eclipse ChromeOS Webkit HTML /CSS / Javascript Many
  • 20.
    There’s More ThanOne Way to Skin a Cat
  • 22.
    Web apps havebeen an option for years, but native applications dominated the mobile enterprise landscape. So what makes HTML5 special?
  • 23.
    Web apps havebeen an option for years, but native applications dominated the mobile enterprise landscape. So what makes HTML5 special?
  • 24.
  • 25.
    How HTML 5Works HTML JSON/XML Old and Busted New Hotness
  • 26.
    HTML5 Pros • Easierthan native to code • Offline • No app store necessary • Some native device features available • Single code base for multiple platforms* • Software updates
  • 27.
    HTML5 Cons • UIis not native • Browser based idiosyncrasies • Not all native device features available • No app-level VPN (3rd party needed) • No push notifications
  • 28.
    Theorem #2 –Apps that Look Better are Perceived to be Better
  • 30.
    How PhoneGap Works •Chromeless Web Browser • JS library to access native features • Web Browser proxies bare metal requests
  • 31.
    Getting Closer ToThe Device Without Native Code
  • 32.
  • 33.
    Theorem #3 –Inverse Proportions
  • 34.
    PhoneGap Pros • Opensource and free • ~Single code base (ex. phone buttons) • Fewer specialized skills needed ($$$) • More native capabilities than HTML5 • “Feels” more native • Plugins for MDM solutions
  • 35.
    PhoneGap Cons • WebView– depends on vendor implementation • More sluggish than native (but getting better) • Mac needed to develop iOS apps • Not all native device features available – may need to wait on framework updates
  • 37.
  • 38.
    Intel XDK Pros •Drag and Drop design • Development is cross platform • No need for Mac (built in the Cloud) • No need to install 3rd party SDKs (built in the Cloud) • Test on real device
  • 39.
    Intel XDK Cons •It is still a hybrid app, so same cons as PhoneGap • Stub app for testing on native device seems kludgy
  • 41.
    How Xamarin Works •C#/.NET on iOS and Android • Born out of the Mono Project – An open source, cross-platform, implementation of C# and the Common Language Runtime (CLR) that is binary compatible with Microsoft.NET
  • 42.
    How Microsoft .NETWorks MSIL (Microsoft Intermediate Language)
  • 43.
  • 44.
    Xamarin Pros • NativeCode! • Visual Studio integration • Drag and Drop designer • Code reuse – iOS, Android, Windows
  • 45.
    Xamarin Cons • Stillneed a Mac for build • Apps will be larger • Full featured = $$$ • Still need to learn native API’s
  • 46.
    Citrix Mobile SDKfor Windows Apps
  • 47.
    How the CitrixMobile SDK for Windows Apps Works XenApp XenDestkop HDX Virtual Channels
  • 48.
    Client Device Receiver Receiver Core MRVC Virtual Channel XenApp/XenDesktopMachine New Modified 3rd Party Code CtxSvcHost.exe User Session Mobile VC Client COM Layer Native App Native Library .NET Assembly ID Dispatch Managed App Automation App Location and Sensor VC Client Location and Sensor Virtual Channel CtxSvcHost.exe HDX MRVC Virtual Channel Service Location Virtual Channel Service How the Citrix Mobile SDK for Windows Apps Works
  • 49.
  • 50.
    EXIF Data fromphoto used to extract GPS location and provide maps from Bing Phone or SMS using native device Take photo or video using native device No Patient data is stored on the device.
  • 51.
    Citrix Mobile SDKPros • The data problem is solved • Utilize existing home-grown apps – add features over time • Small learning curve
  • 52.
    Citrix Mobile SDKCons • No offline • Need source code • Users need to launch Citrix Receiver first • Slow application launch (compared to other methods) • Requires Citrix infrastructure • Not quite as smooth (due to remoting)
  • 53.
    Microsoft RDS options?? Isthere a Mobility Pack for Microsoft RDS? Short answer…No. Can it be done? Well, sort of…but how? Detect the remote device type and run an overlay application that simply hides the Task Bar and other components, and displays a user friendly interface Remember progman.exe?
  • 54.
    Detection of aMobile Device How to detect if a mobile device is accessing a Server Based Application? The following is an example command script: usrlogon.cmd ------------ @ECHO OFF :start CTXCliOS.exe IF ERRORLEVEL 0 goto noOS IF ERRORLEVEL 1 goto winOS IF ERRORLEVEL 82 goto macOS IF ERRORLEVEL 83 goto iOS IF ERRORLEVEL 84 goto androidOS goto noOS :winOS rem Client OS successfully matched to windows echo Client OS is Windows. echo put other commands here for this client. goto end :macOS rem Client OS successfully matched to mac echo Client OS is Mac. echo put other commands here for this client. goto end :iOS rem Client OS successfully matched to iOS echo Client OS is iOS. echo put other commands here for this client. goto end :androidOS rem Client OS successfully matched to android echo Client OS is Android. echo put other commands here for this client. goto end :noOS echo NO CLient OS match. :end CTXCliOS is a command-line tool for Citrix Servers to check the type of Operating System that is being run from the Client Machine that is running the Citrix Receiver or Plugin. Usage: CTXCliOS [/?] /? - Help information The ERRORLEVEL return code shows the Client OS Type. The following are known OS types and their ERRORLEVEL return code Client OS return code (decimal) ============= ===================== Windows 1 EPOC 10 OS/2 11 DOS32 14 Linux 81 Mac 82 iOS 83 Android 84 Blackberry 85 PlayBook 86 Windows Mobile 87 HTML5 257 Java 261 WinCE - HP 7945 WinCE - Wyse 32940 ThinOS - Wyse 32993
  • 55.
    Resources • www.html5rocks.com • www.microsoftvirtualacademy.com •coenraets.org/blog/phonegap-tutorial/ • developer.xamarin.com/guides/ • www.ctrl-alt-del.com.au - Citrix Mobile SDK stuff

Editor's Notes

  • #4 You are here, but why are you here? To learn how to solve pressing desktop and application delivery challenges – right?
  • #5 Why do we deliver desktops? To deliver host applications. Do desktops actually do anything without applications?
  • #6 Why do we deliver applications? Applications consume and create data, so applications are nothing without data.
  • #7 Remember Object Oriented Applications/Design? One of the concepts of OO is having interchangeable layers. One of those layers is a data access layer (DAL).
  • #8 I personally use a particular Excel document on multiple devices. I can view or edit the same file with multiple applications. This is similar to the “loose coupling” terminology used for OOP.
  • #9 Why did I start off this presentation talking about the importance of data? This may seem like a tangent, but I want to emphasize that during mobile application development, you really need to focus on the data the user needs. This may be exposed via database, API like REST, document, script, etc. Keep this in mind as we look at options for mobile applications.
  • #10 Before we talk about building mobile apps, let’s talk about what we can do with remoting.
  • #11 Since we are desktop and application delivery experts, sometimes our first thought is “Hey, we have a Citrix/VMware/RDS client for that device. Let’s deliver stuff to it just like a desktop.” But, we don’t do this (right - right?).
  • #12 The reason we don’t deliver full desktops to mobile devices is because the users will say, “This experience sucks! Therefore, you suck.” And, you are left with a big ole bucket of #FAIL.
  • #13 There are some things we can do with remoting traditional desktop fat applications to mobile devices. When your finger is your primary input device, application interfaces can be too small. Making things bigger via registry can help in this aspect. Some sample registry modifications are attached to the slide.
  • #14 Citrix, VMware, and Microsoft have good options for remote desktops and apps. Citrix Mobile Desktop VMware Unity Touch (similar to Fusion) RDP gestures as expected on desktop PowWow – refactors application running on RDSH for mobile in real time
  • #17 So let’s talk about mobile application development options.
  • #19 What does it take to create native applications with native code?
  • #22 Mobile app frameworks jQuery Touch Google Web Kit
  • #25 Offline – HTML5 provides notification of offline and local storage, but implementation is still left up to the developer. WebSockets Web Workers Canvas and WebGL Access to native device features - camera and photos - geo location
  • #26 Prior to HTML5, processing was done server side via technologies like PHP, ASP.NET, ColdFusion, etc. Only HTML was transferred to the client for presentation. HTML5 allows apps to execute on the client and have 2-way communication with the server, or work offline.
  • #27 * There are still a few browser based idiosyncrasies that need to be worked around
  • #29 jQuery Mobile Twitter Bootstrap 3 Sencha Touch TopCoat
  • #31 PhoneGap is basically a specialized chromeless web browser that has access to the device. This browser exposes special JavaScript methods that can be called to take advantage of the native device features.
  • #32 PhoneGap gives you access to a lot of the phone’s features, but PhoneGap still isn’t a build-once deploy-anywhere reality. Also, you are remote to the data.
  • #34 Painting a room – as things get easier, you waste more paint Brush Roller Usability vs Security Hybrid apps – each layer adds more translation and performance hit.
  • #48 The Citrix Receiver on the mobile device is a native app and has access to native device features. This is similar in concept to PhoneGap in that there is a hosting container for the app that provides device access. However, the code is executing on the server or desktop and only messages are sent to the hosting container.