re: Microsof's Mobile Wireless Play - .Net Explained ... Maybe?
>> Fishing with a .Net: Microsoft's Mobile Technologies Explained
Ryan Welton AnywhereYouGo.com May 03, 2002
Editor's Note: We recently asked Microsoft's David Rasmussen, lead product manager for the .NET mobile developer tools group at Microsoft, to tell us about the .NET Compact Framework and what role it is playing in the work of mobile developers. Our questions, his answers - below:
Q1. I've heard of .NET architecture and of Web Services. What is the .NET Compact Framework, and how does it relate to the .NET architecture and Web Services?
A. The .NET Compact Framework is a subset of the .NET Framework that is designed to run on resource-constrained devices, providing support for XML Web services and managed code. The .NET Compact Framework greatly reduces the development cost of writing applications that integrate services and run on devices such as smart phones and PDAs. Because the .NET Compact Framework provides the same classes on devices as are on the desktop, every .NET developer who works on desktops and servers will automatically be able to write applications for Windows Powered devices, including Pocket PC as well as future devices running Windows CE .NET.
Q2. The .NET Compact Framework delivers the same programming model across a bevy of devices. Does that mean only those devices with the Pocket PC/Windows CE OS, or can it be leveraged for Pocket PC, Windows CE and PalmOS devices? If not Palm, are there any plans to adjust the platform to work with it?
A. Although it's technically possible to run the .NET Compact Framework on other platforms, the .NET Compact Framework is for the smartest, most capable handheld devices - and for now that really means the Pocket PC, Smartphone and other rich Windows CE .NET-based devices. Our .NET tools group is prioritizing other clients based on optimal user experience, but we have no announcements to make at this time.
Q3. In the April edition of the Business 2.0 magazine, writer Dylan Twenty asked the question, "Is Java Obsolete?" Based on that, are there any advantages to using the .NET Compact Framework instead of J2ME for mobile development? If so, what are they?
A. The premise is a very valid one, and we see the same trends. Dictating that everything has to be written in the same language on the same platform for them to work together is not a viable proposition.
Web services enables applications written in a variety of languages on desktops, devices, servers and services using a variety of platforms to interoperate more smoothly.
One major advantage of the .NET Compact Framework is that it was built from the ground up for XML Web services. J2ME does not support XML Web services and wasn't designed to. Even Sun has now recognized the importance of this (after the community highlighted the lack) and announced intention to support Web services in some form from J2ME, which we welcome. But according to Sun's announcements it will be quite some time before Web services are added to J2ME.
The vision of the .NET Compact Framework is that XML Web services and XML support is inherent to the platform. Other distinguishing features of the .NET Compact Framework include enterprise-class data access and support for XML with ADO.NET. You can easily bring down data from a relational database, or XML from a Web service, and persist them into a local store such as SQL Server CE and treat different types of data equally.
Another unique feature supported by the Common Language Runtime in the .NET Compact Framework is the ability for the developer to choose language based on what's most appropriate for their needs, for example Visual Basic .NET for RAD simplicity, or C# for programming power, and to easily write applications that seamlessly integrate classes across languages.
Also a "just-in-time compiler" provides the benefits of managed code with near-native code performance in contrast to J2ME's interpreted architecture. Developers can invoke platform services to gain the full capability of the particular device. And an evidence-based security model offers the ability to provide access to device resources and capabilities with a consistent security model, rather than just sandboxing the developer in.
Great tools support with integrated features such as IntelliSense and documentation customized to the device APIs, high-fidelity emulators, support for remote debugging and deployment on the device and so on make development very easy.
Most important, the .NET Compact Framework is a direct subset of the .NET Framework, so if you know how to build to the .NET Framework, you automatically can program for .NET Compact Framework. It's a powerful premise that all .NET developers are mobile applications developers, too.
Sun claims that developers using J2ME can "write once run anywhere." That concept doesn't play out at the device level. With write once, run anywhere as the design goal, it had to make engineering decisions which equal compromises. For instance, they had to assume minimal capability from the device and target a lowest common denominator. This means the base class library functionality is very limited. Very limited data access, no XML support, no Web services support, sandbox model limiting access to platform features, inconsistent APIs with higher-level Java implementations (even within the device focused implementations) and an interpreted architecture that has performance trade-offs and so on. The result is that everyone (device manufacturers, carriers, third-party vendors, etc.) has to extend the platform to make it do anything useful. So they add their own APIs and features and fracture the platform. They break out of the sandbox model to access local resources but this requires a change in the security model, so there are custom security enhancements, which are not all necessarily consistent. This ends up in a complete mess for the developer. Given the rapidly expanding capability of devices, this lowest-common denominator approach seems short-sighted (a Pocket PC today has the capability of a PC of a few years ago) and has awkward implications for developers. The consequences are obvious if you go to any retail Web site selling mobile apps and look for J2ME apps. They are very limited, very few and they are very specific about the narrow set of J2ME devices they work for. Enhancements by third parties are a good thing, but there should be enough capability in the core platform that developers have a reasonable target. This is one of the goals of the .NET Compact Framework.
Q4. How do you see mobility fitting into Web services, now and in the future? What is your vision and role at Microsoft regarding mobility?
A. XML Web services will redefine computing and with that mobility. By extending Web services to devices, they become more useful. Your mobile workers in the field can now access the information they need when they need it. Yet mobile devices present the ultimate distributed computing challenge.
XML Web services is the ideal model for solving this challenge. It is a lightweight model that can work on a small footprint device; it works across organizational boundaries; it's a very broadly adopted standard with over 400 vendors supporting it; and it's a shared model from servers to devices, Web to smart client, B2B/B2E or B2C, making it easy to reuse investments. For example, there is an application that we use at Microsoft that exposes various back-end systems as XML Web services. Systems such as SAP, Siebel, Clarify and custom-developed systems, all of which hold different types of customer data. These are aggregated into a unified sales view of an account. Before a sales call, the account rep. can check on outstanding sales opportunities, see who the last salesperson to visit was and when, check recent support issues, or even check what products the customer purchased in the last year.
We have currently built a desktop version, a Web version, a mobile Web version (for cell phone browsers, etc.) and a mobile smart client version using the .NET Compact Framework, all accessing the same XML Web services back ends. It took one developer three days to build the functioning application with .NET Compact Framework. That's the power of a unified programming model with a common integration philosophy that scales well.
Another example is Dollar Rent-A-Car, which uses XML Web services in a business-to-business capacity with its partner Southwest Airlines for an integrated reservation experience and reuses the same XML Web services for access to the reservation system from mobile devices for its customers in a B2C context.
This ability to reuse existing investments across different application types and across organizational boundaries is very powerful. An enterprise can do all it needs to do rapidly with little additional cost or effort. Also from a mobile network perspective, there are lots of interesting XML Web services we see emerging, such as location-based Web services, communications services such as SMS and MMS Web services, or impromptu conference call setup Web services and so on. This is huge when you think about the opportunity this represents for carriers.
Carriers' network functionality can be exposed as revenue-generating Web services. For instance, say you are going out to dinner with five friends but haven't picked a restaurant or time to meet. You could use your contacts list in your Pocket PC, select all five of your friends and select conference call. The application uses a Web service to set up the conference call so everyone is on the line together. From a developer point of view, easy and standardized XML Web services with a Web service-enabled platform such as the .NET Compact Framework eliminate a lot of the hard proprietary work necessary to enable these types of scenarios.
Q5. Virus writers are paying close attention to the .NET architecture and attempting to learn how to exploit it before the Framework will be available on most systems, according to what I have seen frequently on developer sites. In what ways does planning for security come into play for the Compact Framework? How does security factor into the realm of mobility for Microsoft?
A. Security is a huge industry consideration. The biggest brains at Microsoft have been working on developing an advanced security architecture.
As a subset of .NET Framework, the .NET Compact Framework includes many of the same features and the same security architecture. Some of those things include code access security and signed code. Also there are rich security APIs available to developers so that they can easily write applications that support things such as encryption and so on. .
NET Compact Framework employs a sophisticated model of security, a fine-grained evidence-based security model. This means that before the Common Language Runtime decides if a program should be allowed to execute, it checks "evidence" such as if the application was signed, where it was downloaded from, what resources it wants to access, and so on. It matches this evidence with security policy to determine if the application should be allowed to run and what resources it should have access to. A carrier, for instance, could set a policy that says only applications signed by the carrier can make phone calls. The idea behind this is that someone who understands concerns and issues can set user policy up front.
Q6. Mobile developers are faced with developing apps for what seems to be a gazillion different parameters - device types, locales, gateways, micro-browsers, etc. How will working with the .NET Compact Framework allow a mobile developer to develop for clients in Tokyo, Helsinki, Israel and Texas all at the same time? The requirements for creating global applications are daunting. Does .NET Framework lighten that load? And, if so, how?
A. .NET Compact Framework has a lot of great globalization features, for character support and so on. But also, given the question, you're probably interested in our server-side technology for mobile Web applications. The Microsoft Mobile Internet Toolkit extensions to ASP .NET are designed to support over 80 mobile Web devices (cell phones, pagers, etc.), with various mark-ups and various gateways, including cHTML in Japan, WML, HDML and so on. So it makes it very easy for developers to use the same tools to support multiple geographies. <<
- Eric - |