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

Post on 21-Nov-2014

435 views 4 download

Tags:

description

 

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

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 OrientationThink 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.

PlatformDevelopmentFramework

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

AppsWinRT

C++/ C# / VB.NET / Javascript

Visual Studio

BlackberryJava ME + Optional Packages +

API extensionsJava Eclipse

ChromeOS Webkit HTML /CSS / Javascript Many

PlatformDevelopmentFramework

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

AppsWinRT

C++/ C# / VB.NET / Javascript

Visual Studio

BlackberryJava ME + Optional Packages +

API extensionsJava Eclipse

ChromeOS Webkit HTML /CSS / Javascript Many

BYOD makes Theorem # 1 hard!

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 WorksMSIL

(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

XenAppXenDestkop

HDX Virtual Channels

Client Device

Receiver

Receiver Core

MRVCVirtual 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

ManagedApp

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 DeviceHow to detect if a mobile device is accessing a Server Based Application?

The following is an example command script:usrlogon.cmd------------@ECHO OFF:startCTXCliOS.exeIF ERRORLEVEL 0 goto noOSIF ERRORLEVEL 1 goto winOSIF ERRORLEVEL 82 goto macOSIF ERRORLEVEL 83 goto iOSIF ERRORLEVEL 84 goto androidOSgoto noOS:winOSrem Client OS successfully matched to windowsecho Client OS is Windows.echo put other commands here for this client.goto end:macOSrem Client OS successfully matched to macecho Client OS is Mac.echo put other commands here for this client.goto end:iOSrem Client OS successfully matched to iOSecho Client OS is iOS.echo put other commands here for this client.goto end:androidOSrem Client OS successfully matched to androidecho Client OS is Android.echo put other commands here for this client.goto end:noOSecho 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 1EPOC 10OS/2 11DOS32 14Linux 81Mac 82iOS 83Android 84Blackberry 85PlayBook 86Windows Mobile 87HTML5 257Java 261WinCE - HP 7945WinCE - Wyse 32940ThinOS - 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