Introduction for Developing WP7

By http://www.cnblogs.com/linuszhu/archive/2011/06/25/2089300.html

Windows Phone 7架构

Windows Phone 7的系统内核还是Windows CE,它是基于Windows CE 6.0 R3版本,所以从这个层面来讲操作系统内核基本没有变化,主要是将Shell和Application Layer的东西有较大变化,Application Layer是采用了.Net Framework托管的环境CLR,有两种编程Framework,Silverlight和XNA。

更细致来看Windows Phone分成四个Layer,以下为Rich总结的四个层面:
CoreKernel is the indivisible minimum kernel (controlling the processor, memory and critical hardware)
Kernel includes everything else that runs in the kernel (e.g. logical kernel abstractions including threads, processes, etc., networking stack, device drivers, printer drivers, graphics & media drivers, KTM, ETW, etc.)
CoreOS is the core (mostly user-mode) OS substrate upon which the OS itself depends (e.g. Win32, COM, OLE, RPC, WMI, DirectX, etc.)
OS is the remaining set of other high-level essential and non-essential features that may, or may not, be installed by the OEM/user/etc. (e.g. Explorer, Silverlight, .NET, Media Center, IIS, etc.)

WP7开发

每个层面进行开发采用的环境和工具。

环境/ 开发语言/ 开发工具/ 部署工具

应用程序层 CLR C#/VB Visual Studio 2010 for Windows Phone Visual Studio 2010 for Windows Phone

OS层 Native Code C/C++ Visual Studio C++ 2008 sp1 or other tools Platform Builder for Windows Phone

Kernel层(主要是BSP) Native C

开发工具下载
Visual Studio 2010 for Windows Phone可以通过微软网站免费下载 (http://www.microsoft.com/visualstudio/en-us/products/2010-editions/windows-phone-developer-tools)

Visual Studio C++ 2008 sp1是需要花钱买的

Platform Builder for Windows Mobile的时候是可以公开下载的,但是for Windows Phone版本只面向OEM厂商开放,做ROM就是用这个工具。

开发资料下载
应用程序开发的资料微软提供的非常丰富,推荐WP7 Jump Start Video (http://create.msdn.com/en-US/education/catalog/article/wp7_jump_start),Training Kit(http://go.microsoft.com/?linkid=9723028) 和Developer Document(http://create.msdn.com/en-US/education/basics/developer_resources)
Microsoft Press eBook Programming Windows Phone 7 (http://download.microsoft.com/download/5/0/A/50A39509-D015-410F-A8F2-A5511E5A988D/Microsoft_Press_ebook_Programming_Windows_Phone_7_PDF.pdf)

OS和Driver开发,这个资源只向OEM开放,不过你可以这个链接获取到操作系统相关的以下资料(需要***,相信很多对底层感兴趣的人很有帮助)
Windows phone 7 architecture Guide
Windows phone 7 Customization Guide
Windows phone 7 OEM application development Guide

WP7应用程序开发

相信博客园的高手们最感兴趣的还是应用程序开发,即Silverlight和XNA的开发。其实在这个两天的培训中,主要涉及的也是将Windows Phone 7作为一个黑盒子展开的,即上面软件架构图中浅蓝色内的灰色部分,应用程序开发,我们从这些方面展开介绍Windows Phone 7。
Platform Overview (WP7的硬件标准,软件架构,生态系统)
Metro UI (UI设计样式,Tile,Glance&Go, Panaroma)
Build WP7 App PPT (开发工具VS + Blend)
Page Navigation (程序内和程序间导航)
Execution Model (程序生命周期,休眠和墓碑)
Data Binding(MVVM,数据绑定)
Sensor and Gesture(重力感应器,陀螺仪,指南针,GPS)
XNA (2维和3维游戏)
Push Notification(Tile,Toast,Raw)
Mango New Feature (中文,SQL,后台服务【15秒每30分钟】…)

详细的开发过程,我想大家可以通过微软的教程进行阅读,而且基本上就是和桌面应用开发一样,所以如果你曾经开发过Silverlight/WPF或XNA的话,那基本上不需要花费什么功夫就可以开发WP7应用。在这里我想讲几点或许对你有用的地方。

1. Xaml Tree

WP7中主要的LOB应用都是Silverlight应用,对于没有接触过XAML的开发人员来说,深刻理解它需要一个过程,因为这个和WinForm的界面表达方式不一样。在Silverlight中,我觉得Logical Tree和Visual Tree是非常重要的一个环节,简单理解XAML就是, 通过Xml的方式来构造对象,再具体一点就是
每个Xaml中的XmlElement元素都可以在.Net framework中找到相应的Class,你每在Xaml中加入一个XmlElement,等价于你在C#代码中new一个这个类的一个实例,同时通过XmlAttribute来设置该对象的Property的值
通过XmlElement的层级结构来体现父亲儿子的控件关系,等价于你在代码中parentControl.Children.Add(childControl)

更多关于Tree的信息,请阅读MSDN。

2. Page Stack

WP7的每个Silverlight应用程序由多个Page构成,后退键可能在你的程序内部的不同页面跳转,也可能在不同程序间跳转。在理解WP7的Page Navigation的时候,可以通过Stack的方式来理解。
后退键:出栈。
开始键(包括通过开始中打开的程序)和搜索键:入栈。
程序切换(长按后退键):将栈中某一个应用程序在栈中左右的页面移到栈顶。

通过这样的规则可以比较方便的理解和分析在任何时候用户点击后退键将发生什么情况。还有一个事实需要说明一下,在WP7中,同一个应用程序在系统中只能有一个实例,意味着你如果开着应用程序,通过开始键再打开一个,系统会把你原来那个实例杀掉。

3. Data Binding

Data Binding是微软实现将两个对象的属性之间建立桥接关系的一种便捷方式,Target和Source有三种绑定方式,OneTime,OneWay和TwoWay,一般来说你开发的应用程序通过MVVM的模式来进行设计,将数据和界面分离,然后通过Data Binding的方式自动关联界面的空间和你Model的数据。所以一般Target是你的UIElement,Source是你的ViewModel,当然你也可以将UIElement作为Source绑定到另外一个UIElement进行联动,更多信息请参考MSDN.

4. Execution Model

关于应用程序执行过程,新的7.1Mango版本差别比较大是引入和Dormant(休眠)状态,即当你的应用层被中断(例如来电话,或者用户点击开始键、搜索键等)时,你的程序线程将被终止,但内存还将保存,这点比7.0中直接进入Tombstone(墓碑,即内存也释放)好很多。
任何时候只有一个前台程序在跑
你的程序运行在Sandbox中,所以你不能进行跨进程操作,同时7.1所谓的“多进程”,也是对于你来说并不知道后台程序它现在是否在运行,因为每30分钟只分配了15秒给你的后台程序
你的后台程序和前台程序是在两个进程中,它们不能通行.

5. XNA

XNA和Silverlight这两种应用程序变成模型是不一样的。 Silverlight XNA
Model Event-based Loop-based
UI Metro UI, common controls No UI standard
Presentation Vector-based Bitmap-based
Tools VS and Blend WYSIWYG UI tools no drag and drop UI tools, need code to render

XNA game framework简单理解就是一个死循环,默认每秒钟调用你的Update和Draw方法30次。
对于二维XNA游戏,游戏中的元素简单理解为都是一些小图片,Load为Sprite,一般你在Update方法中更新Sprite的X和Y的坐标,在Draw方法中绘制;
对于三维XNA游戏,游戏中的元素简单理解为都是三维模型+贴图,Load为Model,一般你在Update方法中更新Model的X和Y和Z的坐标,在Draw方法建立Camara进行投影;三维模型一般通过3DMax或者AutoCAD等专业工具生成fbx文件作为XNA的游戏资源

6. Sensors

微软对于WP7硬件Sensor的API还是非常简单易用的,例如重力(加速度)感应器、陀螺仪等,同时在7.1版本中还引入了Spatial Framework(Motion)来简化开发者的工作,这些API还是需要一点点三维空间矢量及分解的知识的。

This entry was posted in Computer science. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s