Tuesday, November 9, 2010

Microsoft .NET Compact Framework (Core Reference)

IntroductionThere are two main factors driving increased usage of handheld devices in the enterprise. The first is the ever-decreasing cost of hardware. In the week that I write this, Dell is launching its first Pocket PC at a price that is intended to undercut rivals, Hewlett Packard has announced new low-end and high-end iPaqs, and Microsoft and Samsung announced the availability of a new Pocket PC concept design that “dramatically lowers costs and reduces product development time for mobile device OEMs and original device manufacturers.” All this competition among suppliers drives prices lower and makes it more likely than ever that enterprises will consider it a worthwhile investment to issue smart devices to large numbers of their employees.

The devices are becoming more capable as well. Processors are getting faster, and the devices at the low end of the market now come with 32 MB of RAM, compared to 16 MB a short while ago. Higher-end devices routinely come with Bluetooth and 802.11 wireless networking built in, and phone-PDA hybrids such as the Pocket PC phone edition are able to use General Packet Radio Service (GPRS) or CDMA2000 packet-switched data communications over mobile phone operators’ networks.

The second key ingredient driving uptake is improved software architectures. The .NET Compact Framework is an example of a managed execution environment. The runtime engine sits on the device and is responsible for managing the execution of .NET applications. This functionality yields a number of benefits, such as memory management, cross-language interoperability, and improved error handling. The .NET Compact Framework also implements a unified, object-oriented, hierarchical, and extensible set of class libraries that encapsulates common and not-so-common tasks into classes that can be called by any application written in any .NET language.

The most significant benefit is that the programming model for .NET Compact Framework devices is identical to that used by the developer using .NET to build applications for desktop PCs and servers. The .NET Compact Framework implements a compatible subset of the functionality of the full .NET Framework, so developers use the same techniques to achieve similar tasks, using the same developer tools, such as Visual Studio .NET. Prior to .NET, developing applications for Windows CE required a different toolset and programming techniques that were similar to Win32 development for the desktop but different enough to cause many companies to shy away from making the necessary investment in training development staff. Now desktop developers can easily transfer their .NET development skills over to developing applications for handheld devices, reducing developer training costs.

Some “fundamentalist” software developers have complained that .NET “dumbs down” the development process for Windows. That’s not right. .NET certainly makes it very much easier to do the simple things, but it also makes it much easier to do some quite complex things, such as accessing Web services or building components. But that just frees your time to develop more innovative software solutions. Some of the most innovative solutions will be distributed systems built with rich client applications running on handheld devices working with enterprise data accessed using XML Web services or the data integration capabilities of SQL Server CE. With their lower cost, better performance, and improved software development process, handheld devices are ready to take their place as key components of enterprise applications.