学习开篇,带着疑问学习

在学习WP7之前,我写了一个问题列表,希望能够带着问题学习,同时,在以后的博客系列中也将会围绕这些问题做出解释或是自己的理解。

问题如下:

Ff402531.916128b2-5c36-44c1-8f57-9a5600f2ffd4(en-us,VS.92).jpg

1.WP7的技术构架是什么?

  

wp7的构架基于微软的.NET平台;

在应用的构架上是Sliverlight和XNA共同承担,一般来说,使用Sliverlight来开发应用程序,使用XNA来开发游戏,但是由于Sliverlight是基于3,所以有些4中的技术不能够支持;

对于开发语言,虽然是.NET的子集,但是,只能使用C#来开发;

Ff402531.0793c2c3-bb8a-45cc-88cc-a3e0475d1f2b(en-us,VS.92).jpg

2.WP7中对于.NET 的依赖如何?具体引进了哪些库?将会继续引进哪些库?

WP7是使用的.NET的子集,因此,没有包含全部的引用,微软官方给出了具体引用,Sliverlight

以及XNA

3.WP7中程序的生命周期是如何设计的?

对于一个应用而言,我们一定要知道他的生命周期这样才能正确的处理应用的执行。在WP7中,一个应用如果在10秒钟内未加载完成将会被系统强制关闭,估计是对于耗时程序的一个门槛吧~

WP7中有这样几个术语,需要注意:

  • Tombstoing:程序在导航出时被系统关闭的状态。系统保留程序的的状态,如果返回能够恢复程序状态。
  • Page State:程序的视觉状态。在OnNavigatedTo和OnNavigatedFrom中来添加事件。
  • Application State:程序中无关于某个特定页面的状态,使用PhoneApplicationService类调用。
  • Persitent Data:被程序中的所有实例享用的数据,一般使用isolated storage来保存
  • Transient state: 描述程序中实力的数据,一般存储在PhoneApplicationService提供的State字典数据中。

下面就是对于生命周期的理解:

Ff817008.5e84773d-ae0d-43b8-a956-ffdac77b2922(en-us,VS.92).png

其中可以看到具体的各个状态的转化过程。

一般说来,我们不希望自己的程序不自然的进入Stombtoing,因此,需要注意有哪些东西会引发这个状态(Launchers 和 Choosers):

一定会 可能会

4.WP7应用的执行单元是什么?

我们知道在Android中Activity是基本的执行单元,奥,还有service,而在WP7中,我们通过Frame来控制,一个Frame包含很多Page当然如果使用Metro你也许只需要一个Page就行。

5.WP7如何存贮、读取数据?

因为现在大家都是飘在云上,因此,微软也在大力推广自家的云技术,同时号召大家更多的使用云来保存数据,在WP7中更是体现了这一点,但是,如果我们要一些程序配置设置的存储时难道也要进行连接云吗?显然这是很浪费而且没有必要的,在WP7中与Sliverligt类似,提供了两种方式获取数据:isoloated storage以及state。前者能够长久存储数据,而后者只能够在内存还没有消除你的state的情况下获取数据。

但是,有的程序就是需要大的资源吗,就像本地应用那样,这时候该怎么办呢?还没有看到,也许是我理解错了吧~这依旧是一个疑问。

6.不同的应用之间如何共享数据?

因为在前面就说到过,WP7是单线程的,因此不会出现不同应用同时共享数据的情况,同时,由于WP7中的存储数据方式中的isolated storage是基于程序限制的,因此,别的程序不能调用,而state现在还没有具体了解,现在不能解释。不过,对于一些公共的数据,比如电话本、系统中的图片等等,可以使用Launcher来进行读取。

7.WP7为何不支持多线程?

智能手机的强势体现在多线程,起码,我是这样理解的,因为我们都是贪婪的,我们习惯于在同样的时间内做更多的事情,因此不支持多线程的手机让我们很是无奈,有人说这是对于iPhone的模仿,好吧,他们这样做的原因很可能是内存泄露问题不能有效解决,微软这回学的真是没含量。不过,以后的升级版本中也许会加入吧,毕竟iPhone加入多线程了~

8.WP7对网络的支持?如何获取网络数据、进行网络通信?

因为,集成的是sliverlight的类库,因此,不能使用System.Web来获取网络数据,而在SliverLight中不支持stockt,难道要依靠WebClient?因为,现在看的说明中都是使用的这个类,不了解,不详说。

9.不同的页面之间如何传递数据?

因为我们知道Slivelight是应用的基础,因此,同样在传递数据时不是像Android那样使用Intent,而是使用navigate进行导航,同时,使用类似于URL传值方式进行数据传递,这里有一个疑问,就是如果我要传一个对象过去是不是要进行序列化和反序列化的操作呢?Who me?好吧,如果是这样的话,的确会分麻烦~

10.WP7相比于iPhone、Android、Meego优点以及缺点?

11.WP7中的安全性?

因为没有真实的开发一款可用的程序,还不能详细的说明。

12.WP7如何进行快速开发?

13.WP7构架上如何进行设计?

14.WP7如何与数据库进行交互?

15.WP7中的UI设计原则?

WP7有自己的设计原则,这个可以从微软的官方介绍上看到,你也可以下载PDF版本,看看真正的艺术吧。

对于已经解决的,我将会勾画掉相应的问题,最后做出总结篇。

posted @ 2011-03-09 09:39  simba.liu  阅读(334)  评论(0编辑  收藏  举报