.NET Developer Tip
(Receive this column in your inbox,
click Edit your Profile to subscribe.)
What is the .NET Compact Framework?
A year after the initial release of the .NET framework, Microsoft has added to it and Visual Studio .NET by releasing the .NET Compact Framework and Smart Device Projects (SDP) as a part of Visual Studio .NET 2003. This tip, excerpted from InformIT, briefly overviews the first of these two facets of Microsoft's support for building applications on smart devices.
I'll begin by providing an overview of the Compact Framework by addressing its goals, followed by an overview of the execution engine and class libraries. Briefly, the Compact Framework was designed to fulfill four primary goals:
- Portable subset of the Windows .NET Framework targeting multiple platforms. The Compact Framework was designed as a functional subset of the desktop Framework to target smart devices, including the Pocket PC 2000 and 2002, and devices running Windows CE .NET 4.1 and higher. The Compact Framework is not a simple port of the desktop version, however, but a complete rewrite designed to execute managed code on multiple CPU architectures and operating systems. It also includes compilers for VB and C#.
- Leverage for VS .NET. The Compact Framework builds on the success of VS .NET as a highly productive development environment by providing project templates, an emulator, a debugger, and device integration for building mobile applications. Together, this is referred to as Smart Device Projects (SDP).
- True emulation. To develop first-class mobile applications, developers need to be assured that the code they write will execute on the device. To support this goal, SDP includes both Pocket PC and Windows CE .NET emulators that execute exactly the same execution engine and class libraries as those installed on the device.
- Support for enabling Web Services on devices. XML Web Services allows platform-independent access to information. Mobile devices are therefore a key part of the Web Services ecosystem, and consuming them from smart devices is made easy through the Compact Framework.
As mentioned, the Compact Framework includes an execution engine analogous to the Common Language Runtime in the desktop Framework that was written from the ground up to support smart device applications. This engine is composed of a variety of features, including a class loader, a type checker, a JIT compiler, thread support, exception handling, and a garbage collector. The execution engine itself is layered on top of the Platform Adaptation Layer (PAL) and Native Support Libraries (NSL). The PAL contains a variety of subsystems that expose functionality of the underlying operating system and hardware to the execution engine through a consistent set of APIs. This allows the Compact Framework to be easily ported to various hardware platforms by OEMs who provide platform-specific PALs. The NSLs are lower-level services that level the playing field for operating systems by supporting features that the execution engine requires but that might not be present. Examples include file-system operations and window and heap management.
The second part of the Compact Framework is the set of class libraries that developers access when writing applications. This is where developers see the biggest difference between developing for the desktop and developing for mobile devices. Because of the resource constraints of smart devices, the Compact Framework class libraries are necessarily a subset of those found on the desktop. As a result, they consist of approximately 1,700 of the 6,000 types (25%) found in the desktop Framework. Some of the core functionality missing from the Compact Framework includes the following:
- Server-side APIs, such as ASP.NET, Enterprise Services, MSMQ, and WMI support
- COM Interop
- OleDb and ODBC .NET data providers
- Generic serialization
- Asynchronous delegates
- Application configuration files
- .NET Remoting
- Multimodule assemblies
In addition, developers will discover that where in the desktop Framework there might be several ways to accomplish a specific task, in the Compact Framework there might only be one. Also, many of the additional overloaded method signatures have been removed. However, the Compact Framework includes a couple of namespaces not found in the desktop Framework, including Microsoft.WindowsCE.Forms, to deal with input on smart devices, and System.Data.SqlServerCe, to program against Microsoft SQL Server 2000 Windows CE Edition 2.0 databases (which ships with VS .NET 2003, by the way.
To read the entire article from which this tip comes, click over to InformIT. You have to register there, but the registration is free.
For More Information:
- Looking for free research? Browse our comprehensive White Papers section by topic, author or keyword.
- Are you tired of technospeak? The Web Services Advisor column uses plain talk and avoids the hype.
- For insightful opinion and commentary from today's industry leaders, read our Guest Commentary columns.
- Hey Codeheads! Start benefiting from these time-saving XML Developer Tips and .NET Developer Tips.
- Visit our huge Best Web Links for Web Services collection for the freshest editor-selected resources.
- Visit Ask the Experts for answers to your Web services, SOAP, WSDL, XML, .NET, Java and EAI questions.
- Choking on the alphabet soup of industry acronyms? Visit our helpful Glossary for the latest industry lingo.
- Couldn't attend one of our Webcasts? Don't miss out. Visit our archive to watch at your own convenience.
- Discuss this article, voice your opinion or talk with your peers in the SearchWebServices Discussion Forums.