Ever since the release of Windows Phone (WP) platform, developers from around the globe rushed to develop applications for this platform. Now, WP devices are available with manufacturers all over the world. A large number of applications are already available in the WP marketplace.
For WP, Microsoft went back to the drawing board to figure out what phone users really want and built a phone from the ground up. The operating system, the user experience and the application development platform have all been engineered with users in mind. The revenue opportunities in the Windows Phone marketplace, accompanied by a great set of development tools, make WP a very attractive destination for developers to build applications and games.
Windows Phone Developer Tools
A good and practical-oriented approach to start with WP development is to get familiar with the WP application development tools. Microsoft recommends using certain tools for WP application development. WP application development toolset is free and can be downloaded from MS Developer App Hub.
The toolset includes:
- An IDE (for developers): Visual Studio Express for Windows Phone
- A UI design tool (for designers): Express Blend for Windows Phone
- Silverlight for Windows Phone and XNA Game Studio for Windows Phone
- Windows Phone emulator to test and debug applications
The tools are designed to let you develop consumer applications, business applications and games. WP tools are introduced in more detail in chapter 3.
Windows Phone Architecture
Before getting into details of WP application development, it's important to get familiar with the WP overall architecture. WP utilizes a layered software and application architecture that is designed to run on multiple phones. To provide a consistent user experience and features that you can rely on, WP also defines a minimum set of hardware requirements that all WP phones must meet.
Windows Phone Hardware Foundation
The WP hardware specification includes the following hardware requirements for WP phones:
- ARM7 CPU
- A DirectX capable GPU
- Multi-touch capacitive display
- Standard sensors include:
- Proximity and light sensors
There are three standard buttons on the WP phone: Back, Start and Search. As we will see in subsequent sections, these buttons provide an easy and natural navigation model for the user.
In WP, Microsoft provides most of the device driver code. A device manufacturer has to write very little device-specific code. This improves the consistency and quality across various devices. WP takes advantage of hardware acceleration through encapsulation layers, such as DirectX or XNA.
Windows Phone Software Platform
The WP software and application platform architecture is made up of four main components, as illustrated in the following picture.
Windows Phone application platform architecture
WP Runtimes, i.e. Silverlight and the XNA Framework, along with Windows Phone -specific features, combine to provide a mature environment on which to build secure and graphically rich applications. WP Tools, namely Visual Studio and Expression Blend, create a complete developer experience for quickly creating, debugging, deploying and updating applications.
WP Cloud Services, i.e. Windows Azure, Xbox LIVE Services, Notifications services and Location services along with a variety of other web services, allow developers to share data across the cloud and provides a seamless experience across devices. WP Portal Services and the Windows Phone Marketplace provide robust services allowing developers to register and certify and market their applications.
Managed Code in Windows Phone
As you already know, Symbian Qt Quick and C++ applications are built directly as target platform binary executable. In contrast, WP only supports " managed code" applications using C# or VB.NET; WP applications are built to intermediate language byte code and associated metadata.
.NET Common Language Runtime (CLR) manages the execution of such code within sandboxed environment. CLR provides garbage collection and there is no memory management to worry about or pointers to take care of. The WP application stack is built on the .NET compact framework. The .NET compact framework is optimized for resource constrained devices and is designed to be portable across various hardware platforms.
Windows Phone Application Development Frameworks
It's time to get a bit closer to the WP application development. As a Symbian Qt developer you have become familiar with using Qt Quick, numerous Qt modules and Symbian native frameworks in your applications.
In WP, applications are developed using various WP application development frameworks, most important of which are Silverlight and XNA frameworks that encapsulate several important and essential fundamental features of applications. WP application development architecture is illustrated in the picture below.
Windows Phone application development architecture
In Symbian, the cross-platform Qt is the recommended application development framework. However, it's also possible to develop applications utilizing Symbian native frameworks. The following table gives an overview of the WP application development frameworks that provide features comparable to the Symbian Qt modules and Symbian native frameworks.
Symbian Qt modules
Symbian native frameworks
Windows Phone application development frameworks
Qt Quick, Qt Mobility
AVKON, Sensor Framework, Camera Framework
Application UI, Device integration (sensors, camera)
Silverlight, Windows Phone Frameworks
Qt Quick, Qt Framework Graphics and GUI modules, Qt Mobility
Graphics package, Animations API, Multimedia APIs and Frameworks
Graphics, Animation, Media
XNA Frameworks for games, Silverlight Presentation and Media for consumer and business applications
Qt Quick, Qt Framework Engine and Core modules
Generic OS Services, Networking Services, User Library, XML Services, Persistent Storage and File Server
Base services, Networking, Text, XML, storage
Common Base Class Library
Symbian Qt, Symbian native and Windows Phone application development compared
See Application platform overview for Windows Phone for more information about WP application development.
Windows Phone Applications
As a Symbian Qt developer you are well aware that in Symbian Qt the preferred application development framework is Qt Quick introducing QML-based UIs. However, Symbian application development platforms have evolved over times so currently there co-exist several applications & games utilizing either Qt widgets, native Symbian frameworks or customized UIs.
In WP, you can develop applications using Silverlight Presentation and Media and XNA Frameworks, with the support of Windows Phone Frameworks and Common Base Class Library. Generally, it has been recommended that WP application developers use Silverlight for consumer & business applications and XNA for games.
However, you can certainly develop great games using Silverlight animation or wonderful rich media consumer applications using XNA framework. In addition, starting from WP OS 7.1, it is also possible to mix Silverlight and XNA content in the same application.
The following table summarizes common archetypes of Windows Phone applications and their counterparts in Symbian Qt.
Symbian Qt applications
Windows Phone applications
Symbian native or Symbian Qt Quick & Qt widget applications with stack or tab based navigation between pages
Silverlight consumer and business applications with pages connected by flows
Symbian Qt Quick or customized UI games with OpenGL-es 2D and 3D graphics
XNA games with 2D / 3D graphics and XBOX connectivity
Symbian and Windows Phone application archetypes
See Silverlight and XNA frameworks for Windows Phone for more information about using Silverlight and XNA in WP application development.
Note: Advertisements can be published both in Silverlight and XNA based applications through Microsoft Advertising SDK.
Silverlight Presentation and Media
For developing rich and event-driven internet application -style consumer and business applications in WP, Silverlight is the preferred option.
Comparable to the declarative QML user interface language used in Qt, Silverlight uses a declarative language called Extensible Application Markup Language (XAML) to specify user interfaces. You can use separate code-behind files, written in C# or VB.NET, to respond to events or manipulate the controls.
A large set of Silverlight UI controls is specifically designed for the WP OS look and feel and support multi-touch. Silverlight also provides high performance audio and video. It supports both vector and bitmap graphics with hardware acceleration.
Bubble Level Silverlight is a basic example of a Silverlight application. It demonstrates the usage of accelerometer sensor to calculate the inclination of the device and presents this as a traditional bubble level. Bubble Level Silverlight is a WP Silverlight port of a similar Symbian Qt application Bubble Level Qt.
The following emulator screenshots illustrate the user interface of Bubble Level Symbian Qt and WP Silverlight versions.
Qt Simulator screenshot of Bubble Level Symbian Qt UI
WP Emulator screenshot of Bubble Level Silverlight UI
See Bubble Level Silverlight for more information about Bubble Level Silverlight and porting experiences between Symbian Qt and WP Silverlight.
For developing high performance games enabling immersive and fun gaming and entertainment experiences in WP, XNA framework is the preferred option.
The XNA framework is composed of software, services and resources focused on enabling game developers to be successful developing on Microsoft gaming platforms like Windows Phone, Xbox 360, Zune HD and Windows 7.
The XNA framework, originally developed for Xbox, provides hardware accelerated 2D and 3D rendering and bitmap graphics. XNA also provides gamer services such as authentication and connectivity with Xbox Live, as well as Profiles and Leaderboards.
Moto Trial Racer XNA is a basic example of a XNA game. It's a motorcycle racing game demonstrating the usage of XNA Game Studio 4.0 and especially Box2D.XNA. Moto Trial Racer XNA is a WP XNA port of a similar Symbian Qt game Moto Trial Racer Qt.
The following device screenshots illustrate the user interface of Moto Trial Racer Symbian Qt and WP XNA versions.
Device screenshot of Moto Trial Racer Symbian Qt UI
Device screenshot of Moto Trial Racer WP XNA UI
See Moto Trial Racer XNA for more information about Moto Trial Racer XNA and porting experiences between Symbian Qt and WP XNA.
Windows Phone Frameworks
Windows Phone Frameworks define common building blocks for WP applications, such as application frame and page structures and application activation / deactivation mechanisms. In addition, Windows Phone Frameworks provide WP applications the interface to system and hardware resources.
In Qt, WebKit browser and widgets can be utilized for displaying HTML and other web content. If you need to use HTML in your WP application, you can use the Windows Phone Frameworks Internet Explorer based web browser control for HTML UI.
Windows Phone Frameworks layer also provides interfaces to various sensors, such as the accelerometer, compass and gyroscope. Camera access is also provided. As a comparison, in Symbian Qt access to device sensors is available through Qt Mobility Sensors API. Camera is accessible through Qt Mobility Multimedia API.
Microsoft provides a push notification service, called Microsoft Push Notification Service, as part of Windows Phone Frameworks. In Symbian Qt, real-time push notifications can be added to client applications using Qt Notifications API.
Common Base Class Library
In Symbian Qt, common services are available through a variety of Qt Framework modules and, to small extent, through Qt Quick and Qt Mobility. In WP, corresponding base services are provided by Common Base Class Library. WP Common Base Class Library encapsulates a large set of common functions and core services such as base classes, collections, threading, text processing and IO.
The WP Common Base Class Library layer also includes:
- Networking stacks: such as HTTP and the Windows Communication Foundation (WCF). WCF provides an easy interface with XML and SOAP services across the Web, with features supporting the XML data transfer, serialization, deserialization and XML parsing.
- Database support: One of the new features in WP OS 7.1 is support for local SQL databases. You can write SQL-like queries in C# using Language Integrated Query (LINQ) to query XML data, stored in isolated storage or in remote databases such as SQL Azure.
In this chapter we looked at the WP overall architecture and application development frameworks compared to the corresponding Symbian Qt and Symbian native programming modules. Now that you have an overall picture of the WP platform and a high-level idea of how the WP programming frameworks map to the Symbian Qt and Symbian native programming modules, it's time to go one level deeper. In the next chapter, we will look at the application design and user interface guidelines of WP applications.
To learn more about the topics covered in this blog, visit:
- App Hub - Central Place for Windows Phone development. Getting started, download tools and read all about Windows Phone development
- MIX '10 presentationon Windows Phone 7 Architecture by Istvan Cseri
- Windows Phone 7 Development for Absolute Beginners. Video series that will help aspiring Windows Phone 7 developers get started.
- App Hub Jump Start Tutorials
- Introduction to WP7 programmingon Codeproject.com
Other Resources you may find useful:
- Overview of the Windows Phone 7 Application Platform
- Windows Phone 7 Team Blog
- Windows Phone Programming