Download - Amazon Web Services

Document related concepts

Relational model wikipedia , lookup

Database model wikipedia , lookup

Clusterpoint wikipedia , lookup

PL/SQL wikipedia , lookup

SQL wikipedia , lookup

Open Database Connectivity wikipedia , lookup

Object-relational impedance mismatch wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Transcript
CLI309
Building Effective
Enterprise Mobile
Applications
Nick Randolph
Development Manager
AutumnCare
Microsoft MVP - .NET CF
Agenda
Session Focus
“Enterprise” Mobile Software (EMS)
Agenda
Enterprise Mobile Architecture
Microsoft Mobility Roadmap
New Features in Visual Studio 2005 for EMS
Development Tool
Compact Framework 2.0
SQL Sever 2005 and it’s mobile version
Tips, Tricks and Guidance on Building EMS
Prescriptive Guidance
Resources
Audience Profile
Who has written mobile apps before?
Who has written production Microsoft
Mobile Application?
Who has worked with Compact
Framework v1.1?
Who’s looking at Mobile application
development for the first time?
Enterprise Mobile Architecture
What is Mobile Software?
What is Mobile?
Away from the desk out of the office
On the road traveling
On the factory floor – always moving
Engaging face to face with your
customers
What is Mobile Software?
A device in your hands that helps you with
your process
E.g. Capturing data, looking up data
Doesn’t mean wireless!
Concept of offline/online
Why Mobile Software?
Why develop mobile software?
Information/data at your fingertips
Make decisions on the spot
Perform your process on the spot
What make mobile software
“Enterprise” mobile software
Access and integration to enterprise
information and software assets
E.g. Lookup: Customer, Product and Stock
information
E.g. Capture Data: New Customer Order,
Customer Visit information
The Benefits of Mobile Software
Reduce paper costs
Reduce communication costs
Processes automation
Increase Productivity
Increase Service turn around
It is fundamentally about:
Saving costs
Making more money
Capturing data more efficiently
Providing data back more efficiently
Usage Examples
Couriers
Dispatch, Pickup and Sign
Territory Managers
View products/stock, Place orders
Auditors/Insurance
Complete audits, print report & quotes
Tourists
Why can I find information about places in
this city?
Some Thoughts on Design Goals for
Mobile
What problem(s) are you trying to
solve?
What system(s) are involved?
What data do you need from these
systems?
How will you secure your mobile
system?
How will you connect your mobile
users?
What is Mobile Software?
Architectures
Real Time vs. Synchronized
Telecommunications
Devices
System Integration
Why is Mobile Software Unique?
You can’t always trust the mobile network
Devices have limited foot prints
Languages and development
environments are often proprietary
But
You still need good software design
You still need good software architectures
The Spectrum of Architectures
In mobile it’s all about transactions
But how do you do these transactions?
Real Time
Real time over a permanent network
Process Data in Real time
Otherwise known as “Always Connected”
Synchronised
Process and store data on the device
Synchronise when needed
Otherwise know as “Cached”
Real Time Architectures
Pros
Information is always up to date
Data gets processed in the backend faster
Cons
Poorer user experience on low bandwidth
networks.
Doesn’t cope well with large amounts of
data
Working Examples
Warehouse Management Systems
High Bandwidth / Discrete Transactions
Synchronized Architectures
Pros
Good for dealing with unreliable networks
Data is either synchronised or not
Only changes are synchronised
User experience is much faster
User does not need to be online to process
Cons
Data can become stale if synchronisation does
not often enough
Data is pumped into backend system “batch
based”
Working Examples
Sales Force applications
Route Management applications
Anything with large amounts of reference data
Types of Mobile Applications
Smart Clients
Run locally on the device
Uses local processing power
Uses local resources
UI rendered on the device
Real time / Synchronized applications
Key focus for Enterprise Mobile Software
Mobile Web Applications
Server Side execution – HTML, WAP etc
Renders to specific device capability
UI rendered on the server
Real time applications only
Types of Mobile Application Continued
What about writing for multiple devices?
Multi-device applications issues
• Different form factors
• Different device capabilities
• Different browser standards
Cross platform issues
• Different platforms
• Different APIs
• Different languages
Mobile Web Pages
Local Code
Mobile Web
Browser
Device Operating System
Mobile Application Devices
Low end mobile phones & pagers
Smart Devices
Full Computer Experience
Device separated according to
Processor Ability
Memory / Storage Capacity
User input methods
Mobile Application Devices
Low End - Mobile Web Experience
Mobile Phones and Pagers
Micro browsers
WAP, HTML, XML, cHTML
Key based user input
Many different devices
Mobile Application Devices
Smart Devices
Application on Device
Stylus Input
Online/Offline Capability
Local processing power
Mobile Application Devices
Full PC Experience
Full processing power
Full screen display
Tablet PC / Laptop
Telecommunications
Build your architectures to support
TCP/IP
And you can use any of these
technologies!
But test, test, test!
Synchronized architectures work better
over slower connections
Real time architectures tend to need faster
connections for good user experience.
Always check for timeouts
Applications need to handle “no network”
gracefully
System Integration
All this data is great but what about?
Integrating to / from existing systems?
Where does the data go?
Where do you need to get data from?
Examples
Where is your master customer list?
Where do your mobile orders get
processed?
System Integration
Fully integrated vs. Print-outs
System Integration can make or break a
mobile application
Concept of a central mobile database
Merge all information required for devices
into one place
Consolidate all mobile data captured into
one place and integrate back in one go
Shouldn’t matter whether synchronized
or real time architecture
Design Issues
User Interface is critical
For user adoption
Must be simple yet powerful
Data resilience is imperative
Synchronisation must be seamless
It either works or it doesn’t with nothing in
between
Data partitioning simplifies overheads
Deliver data to the users that need it
Design Issues cont.
Data partitioning
e.g. don’t get every sales person every
other sales person’s clients
This is horizontal partitioning.
Each mobile device has only the data it
needs
Static (All) vs. Static (Personal)
Vertical partitioning is about only pushing
the data types on need on a devices
Always determine how much data you
need and not more.
Scalability
To support thousands of users you must
consider
Network / telecoms usage for all your users
Multiple synchronisation points
Over the air update frameworks
Data storage capacity
Keep your audit logs small
Seamless Deployment
Seamless Synchronisation
One Button
Incorporate over–the–air updates
Removable Media Card Install
e.g. Secure Digital, Compact Flash
Lower network costs
Enterprise Device Deployment Tool
Data Integrity
Data Synchronisation
Initialisation
Delta based updates
A synchronisation is transactional
Either works or not!
Test power failure scenarios
Reinitialise data over the air if required
Microsoft Mobility Roadmap
What do we need? - Concepts
Online/Offline Capability
Offline – Replicated Data (Main Function)
Online – Real time Lookups
Security
Security access through firewall tunnel
Scalability
The ability to scale to 1000s of users
Integrated Approach
Consolidate data to/from Backend Systems
What do we need? - Layers
User Interface Layer
Telecommunications Layer
Application / Web Server
Data Repository
Integration Layer
Backend Systems
Physical Architecture
Users
Telecoms Layer
Application / Web
Server
Data Repository
Integration
Middleware
Backend Systems
Windows
2003
Mobile
Core Systems,
ERP, CRM etc
SmartPhone
SQL Server 2000
BizTalk
Database and
Information
Repositories
TabletPC
Web Service
Mobile Laptop
Other
Systems
The Template EMS
Client Application – online/offline
Compact Framework for a rich application
SQL Server Mobile + Replication
Web Services for Real time
SQL Server for Centralised Data store
Real time Information
Web Services
Repository for Mobile Data
SQL Server
System Integration
SQL Server to Backend via Microsoft BizTalk Server
Hardware/Drivers
OEM/IHV Supplied
Programming
Model
Data
Device Building
Tools
BSP
(ARM, SH4, MIPS)
EDB
SQL Server 2005 Mobile Edition
Relational
Native
Server Side
Standard PC
Hardware and Drivers
Windows XP DDK
Windows Embedded
Studio
Platform Builder
Lightweight
Managed
OEM Hardware and
Standard Drivers
SQL Server 2005 Express Edition
SQL Server 2005
Win32
MFC 8.0, ATL 8.0
.NET Compact Framework
ASP.NET Mobile Controls
.NET Framework
ASP.NET
Windows Media
DirectX
Multimedia
Location Services
MapPoint
Development Tools
Visual Studio 2005
Internet Security and Acceleration Server
Exchange Server
Live Communications Server
Speech Server
Communications
& Messaging
Device Update Agent
Management
Tools
Image Update
Software Update Services
Systems Management Server
Microsoft Operations Manager
New Features in Visual Studio
2005 for Enterprise Mobile
Software
Overview
Talking about new features
Enterprise Focused
Everything in Visual Studio 2003 would require
another session!
Development Tools
Visual Studio 2005
Previously Visual Studio 2003
Client Architecture
.NET Compact Framework 2.0
Previous 1.1 in Visual Studio 2003
Libraries across Display, Layout, Controls,
Networking
Data Architecture
SQL Mobile 2005
Previous SQL CE 2.0 (VS2003, SQL2K3)
Visual Studio 2005 for Devices
Visual Studio 2005
Enhanced project wizard
Target Pocket PC or
Smartphone
Enhanced designers
Emulator support
Based on ARM processor
Save multiple states
Visual Studio 2005 for Devices
Visual Studio 2005
CAB and Setup projects
Integrated device and
Emulator debugging
Remote tools
Process viewer, file
viewer, Heap walker,
and more…
Demonstration
Visual Studio 2005 Development
Environment
Skins
New Device Manager
Emulators
.NET CF 2.0
Compatibility and Performance
Think of .NET CF 2.0 of a superset of
.NET CF 1.0
Compatible with full .NET Framework
Interoperability – Type must be in .NET
CF
Protocols – Web Services, Datasets etc
Compatible with .NET CF 1.0
Side-by-side execution
Application compatibility
Essentially separate frameworks
.NET CF 2.0
Compatibility and Performance Cont.
Enhanced performance
Unified JIT for All processors
.NET CF 1.0
2 in .NET CF 1.0
Improved string handling
.NET CF 2.0
String Class, StringBuilder
XML improvements
XMLTextReader, XMLTextWriter – Faster than
XMLDocument
XMLSerialization
Improved ADO.NET with SQL Mobile
SQLCEResultSet – Direct Scrollable Cursor
.NET Compact Framework 2.0
Displays and Layout
Orientation support
Docking and anchoring
AutoScroll property – forms, panels
ChangeOrientation – portrait or
landscape
Resolution support
Automatic scaling
Lo to Hi Res Screens
Graphics
DpiX
DpiY
.NET Compact Framework 2.0
New Windows Forms Controls
DateTimePicker
MonthCalendar
DocumentList
LinkLabel
Notification
Help
WebBrowser
.NET Compact Framework 2.0
System.Drawing Namespace
Bitmaps
Access Bitmap Pixels
Bitmap.LockBits(…)
Better Image Support
Image.Save(…)
png, jpg, bmp, tif, gif
Bitmap pattern brushes
Drawing Images on Containers
Direct 3D support in Visual Studio
2005
.NET Compact Framework 2.0
System.Xml Namespace
Improved performance
Schema validation support
XSD
No DTD or XDR Validation Support
Static creation methods for
XmlTextReader and XmlTextWriter
XML searching and processing
through XPath
XmlSerialization
.NET Compact Framework 2.0
System.Messaging Namespace
Support for message queuing
Send and receive messages
Inter-application communication without
a live connection
Communication using unreliable
connections
Administer, connect, and monitor
network message queues
.NET Compact Framework 2.0
Language and Runtime Support
• Enhanced VB.NET features
– "My" namespace support
• Enhanced C# features
– Iterators
– Anonymous methods
• Cross language features
– Generics
– Partial classes
Future Windows Mobile Platform
Key Features
• Enhanced services and device support
– Messaging – SMS, POOM, and telephony
– Notifications – signal, battery, connections
– Location and Camera APIs
• Peripherals support
– Microdrvs, cameras, keyboards, second displays
• Not part of the core .NET CF 2.0
– APIs embedded in operating system
– Accessed through forthcoming SDK
Notifications Broker
Access to Important events that may
occur on the device.
Centralized publish and subscribe
mechanism
Store as well as detect the state of a
device an application, or a service.
Easier access via managed object
model.
State and Notifications Broker
Development Scenarios
Register for notifications
You choose the notifications to which you
respond
Examples
Connect to a server when GPRS is available
Initiate a synchronization event
When fast connectivity is available
Synchronize offline store
When device is cradled
Persist application settings across sessions
Respond to low battery notification
Schedule device management behavior
Create custom notification events
Networking Support
Sockets
Synchronous and
asynchronous
Multiple protocols
Streams
Built on top
of sockets
HTTP request
and response
Use stream model
Requires no user
knowledge of HTTP
Applications
.NET Compact Framework
Web Services
HTTP Req/Resp, Network Stream
Sockets
Common Language Runtime
Data Access – SQL Server
Direct SQL Server Access
Local SQL Mobile Access
ADO.NET Providers included with .NET
CF
System.Data.SqlClient
System.Data.SqlServerCe
Data Access
Direct Database Access
Windows
Forms
ADO.NET
ADO.NET
SQL Server
Data Provider
.NET Compact
Framework
Pros
Rich query into a large
data source
Access to entire data
source; device queries
for and uses what’s
relevant
Windows
Server
Cons
Must be constantly
connected
Not scalable on server;
classic “two tier”
design
No synchronization
model for typical
dynamic data
System.Data.SqlClient
Useful when data size is too large to be
replicated to device memory, but must
be accessible
Useful for directly connected realtime
application as in previous slide
SQL Server must always be there
What is SQL Mobile?
Next version of “SQL CE” (3.0)
SQL Server “Compact Edition”
SQL CE General Design Goals
Work on mobile devices
Small Footprint (2.0 had 1.5 Megs)
Extensive SQL Query support
Indexing and fast data access
Easy of programmability
Simple to hook up to a SQL Server
Database – Merge Replication
SQL Server / SQL Mobile Replication
Windows
Forms
ADO.NET
SQL Mobile
.NET Compact
Framework
SQL Server
SQL Mobile
Replication
(HTTP)
Pros
Very robust local store
Complex SQL querying
Synchronized
Utilizes HTTP
Cons
Server configuration
required
Engine footprint on
device
System.Data.SqlServerCe
Useful for synchronised scenarios
Namespace contains two types of API
for two different functions
ADO.NET Data Provider for
SQL Server CE
SQL Server CE specific API for replication
SQL Mobile
Architecture Improvements in the version 3.0
Storage engine
Multiconnection support
Row level locking of data
Shares common memory pool
Auto-shrink support
Improved query processor
Cost-based optimization (Query
Efficiency!)
Show plan and query hints
Scrollable, updatable cursor –
SqlCeResultSet
SQL Mobile
Synchronization Improvements
Improved synchronization control
Multiuser synchronization (No app
disconnection!)
Progress notifications
Multiple subscriptions in the same
database
Synchronization performance (w/SQL
2005)
Partitioned groups
Download-only tables
SQLCEResultSet
Development Features
Included in Visual Studio 2005, so you can
use with IntelliSense
Takes full advantage of SQL Server 2005
Mobile Edition local capabilities
Extended Features
Scrolling access
Update in place, Commit
Random access
Synchronization
Goals of Synchronization
Simplify development of synchronization
logic
Sync becomes a single line of code
Conflict resolution happens on the server
through SQL Server model
Share a common data source
Allow multiuser access to the same data source
Improve performance and data concurrency
More end-user versatility
Allows end users to change devices and still
access the data source
Merge Replication
Overview
Changes reconciled on next
synchronization
Local SQL Mobile changes sent to SQL
Server
SQL Server changes sent to SQL
Mobile Edition
SQL Server Management Studio wizards
Publishers created in studio
Subscribers create in studio
.NET CF managed wrapper
SqlCeReplication
Merge Replication
Minimizing the Costs for Device Applications
Key to success for device apps is
minimizing communication
Take only what you need
Apply filters
Reduce the amount of data sent between
devices and server
Reduces time
Improves responsiveness
Tips, Tricks and Guidance for
Enterprise Mobile Software
Tips and Tricks Overview
Practices for Real time Applications
Practices for Synchronised Applications
Pocket TaskVision
User Interface Guidelines
Data Architecture Guidelines
Real time Applications
Best Practices
Useful for applications where
Data are very dynamic and caching doesn’t make
sense
Data on backend is always available
Application depends on the network; can’t
function without it
Detect network connectivity status, and
display feedback on status to user where
possible – Graceful if fails
Use asynchronous network requests and
keep UI responsive
Handle network errors as gracefully as
possible using Try/Catch/Finally
Synchronized Applications
Best Practices
Useful for applications where
Application needs to work without a
network
User interface
“Sync Button or Screen”
Provide feedback to the user on the
process
Especially where connecting over a
network
Good to show how many changes were
upload and downloaded
Synchronized / Caching Apps
Implementation
To retrieve data
XML Web services
SqlClient
HttpWebReqest/Response
Sockets
Synchronization functionality in SQL Server CE or
third-party database
To persist data
XML files (custom format, or DataSet)
SQL Server CE or third-party database
Application Example from MS
Pocket TaskVision
Online/Offline
modes
Select projects for
offline storage
Synchronization
Conflict Detection
SQL Server CE
http://tinyurl.com/5lbtn
User Interface Guidelines
UI Consistency
Application Title
Standard SIP and New Menu
Button/Menu Order
Icons and Notification
POOM Functionality
WaitCursor and InputPanel
Designed for Pocket PC Handbook
Data Architecture Guideline
Emphasied SQL Mobile to this point but
some others for consideration
Device Stand alone options
In Memory
File (plain text, XML, CSV)
SQL Mobile (You don’t need SQL Server)
Server
File – pull down from SQL Server
SQL Mobile
Other tools for other enterprise sources
Synchronisation
Replication
Webservices
ActiveSync
Application Blocks
OpenNETCF
Configuration
Caching
Exception Management
Smart Client Offline
www.opennetcf.org
Summary
Enterprise Mobile Architecture
Consider and Plan your architecture
Spend time getting to know:
Visual Studio 2005
Compact Framework
SQL Server Mobile
Prototype your architectures
The tools are all there and ready for you
to build enterprise mobile systems
Resources
Resources
Mobility Developer Centre:
http://msdn.microsoft.com/mobility/
.NET Compact Framework FAQ:
http://msdn.microsoft.com/smartclient/comm
unity/cffaq/default.aspx
OpenNETCF:
http://www.opennetcf.org/
We invite you to participate in our
online evaluation on CommNet,
accessible Friday only
If you choose to complete the evaluation online,
there is no need to complete the paper evaluation
© 2005 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.