<<Updated JAN 22, added another point on ASP.NET note on bottom>>
I want to point out some learning’s that I experienced recently after being challenged by a customer to verbalize which Microsoft mobile device platform to utilize. I was confident about Windows Mobile development, but after that I was questioning myself. So, it was time for a refresher.
I'm not including UMPC (since this is Windows Vista and not really considered a device platform) or ASP.NET Mobile Controls (see note at bottom about this technology).
Windows XP Embedded
Windows CE
Windows Mobile
Another way to compare our mobile platforms (adding Micro Framework, and note what WM is a Microsoft version of CE):
.NET Micro Framework
Windows XPe
Example Devices
Sensor Nodes, Aux displays, Health Monitoring, Remote Controls, Robotics
GPS Handhelds, PDAs, Automotive, Set Top Boxes
Thin Clients, ATMs, Kiosks
Device Features
Connected, Small, Wearable, Graphical UI
Connected, Graphical UI, Server, Browser, RAS, DirectX
PC class performance, PC networking
Footprint
250-500KB managed code Full featured
300KB+ without managed code 12MB with managed code
40MB + Depending on features
Power
Very low power
Low power
More power
CPU
ARM7, ARM9, No MMU
X86, MIPS, SH4, ARM, with MMU
X86
Real-time
Not Real-time
Hard Real-time
Real-time capable through 3rd party extensions
Managed vs. Native Code
Managed via .NET Micro Framework, native code through interop only.
Supports both
Supports both, managed code requires .NET Framework
Additional Reading / Watching:
Note on ASP.NET Mobile Controls (more like a digression)
ASP.NET Mobile Controls is a server side web architecture, and not a device platform. However, it does support a bunch of devices with one code base. I've encouraged folks for years to use this technology. There are arguments today for using Mobile Controls AND not using them. For example, good reasons to use them:
Reasons against using:
A show stopper reason for not using Mobile Controls: