Microsoft Mobile Device Platforms

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

  • Still very alive and kicking
  • Basically the XP O/S broken down into approximately 12K components
  • Has a larger footprint than CE, but also has more driver support
  • Supports .NET today (if the OEM provides the component)
  • Will be evolving into Vista Embedded, which includes getting support for .NET 3.0 (WCF, WPF, Workflow)
  • Benefits are basically those of the XP desktop

 

Windows CE

  • It is a real time O/S.
  • Ships on multiple architectures – ARM, StrongARM XSCALE, the complete ARM family of processors, MIPS, x86 and also the SH4 family from Hitachi (from the video link below)
  • Has a smaller footprint than XP Embedded, but less driver support.
  • Usually will run on the same hardware as XP Embedded since X86 based
  • .NETCF runs on CE and WM5/6 (see below)
  • The video below shows how VS2005 can build a Windows CE 6 O/S image.
  • “Windows CE starts at about 300 Kbytes for a minimal operating system build” (from the video)

 

Windows Mobile

  • Is a Microsoft specific set of CE components assembled for the Windows Mobile branding
  • Windows Mobile 6 is out today, and provides a variety of applications that a mobile worker can utilize (Mail, Calendar, Contacts, Phone, Media Player .NETCF)
  • One of my favorite mobile topics is the benefits of .NET CF (plus extra managed libraries only available on WM 5/6)
  • Be sure to check out the new "How Do I" Videos for Devices series, done by friend Jim Wilson

 

Another way to compare our mobile platforms (adding Micro Framework, and note what WM is a Microsoft version of CE):

 

.NET Micro Framework

Windows CE

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:

  • They can adaptively render for Blackberries, old WAP based browsers, as well as Microsoft devices.
  • Supports 200+ devices OOB with one code base. Extensibility exists so that one could add support for a new phone (after application deployment) via configuration.
  • a .NET developer can utilize their ASP.NET skills.
  • a Mobile Controls application can sit in a ASP.NET application leveraging the same physical infrastructure, as well as the logical architecture, i.e. you're just building new SMALL pages while continuing to leverage what's already been built for the bigger pages.
  • I could go on. Feel free to refer to the ENCOURAGED link above to see my previous efforts in this space.

Reasons against using:

  • A lot of newer device browsers are consuming XHTML/HTML, so standard web development of smaller pages will work. ASP.NET does this very well.
  • The ASP.NET team decided several years back to pause innovating in this area due to the previous point. However, with the current explosion of mobility, they might have to create a new plan (probably already working on it knowing this team).
  • This type of application requires a network or Internet connection (depending on where the remote services are). Therefore, if viewing the application and it's data is required at anytime, then you have to look at applications that reside on the device and manages the data including synchronization. Microsoft has a great story in this arena with the .NET Compact Framework, as well as Microsoft SQL Server Compact. This angle obviously removes the non-MSFT devices from your list of supported devices.

A show stopper reason for not using Mobile Controls:

  • VS2008 did not include support for ASP.NET mobile web forms. So, theoretically, you could use VS2005 to do this. I'm not a fan of the VS decision myself, since one of our VS2008 major principles is supporting multiple versions of .NET. However, remember that building standard ASP.NET pages will work for modern devices. If there is enough feedback, I'm sure the powers that be will consider new plans for this.