[深入浅出WP8.1(Runtime)]Windows Phone 8.1和Silverlight 8.1的区别

1.2.2 Windows Phone 8.1应用程序模型

    Windows Phone 8.1支持多种开发语言来开发应用程序,包括C#、VB、JavaScript和C++,那么本书的代码主要是采用C#语言来开发,部分章节采用C++。从Windows  Phone 8.1开始,如果是开发普通的应用程序可以选择的应用程序模型有:C#/XAML、VB/XAML、C++/XAML和JavaScript /HTML5。游戏开发还是采用C++的DirectX的框架。在Windows Phone 8之前如果是开发普通的应用程序,只能够采用C#/XAML和VB/XAML这两种开发模型,而在Windows Phone 8.1之后新增了C++/XAML和JavaScript /HTML5这两种开发模型的支持。C#/XAML、VB/XAML和C++/XAML这三种开发模型其实是类似的技术框架,它们都是使用XAML作为界面的编程语言,然后使用C#/ VB/ C++作为后台的开发语言,注意这里的C++是指C++/CX语法的C++,是属于Visual C++ 组件扩展的扩展语法,对于C++/CX更加详细的介绍和讲解可以参考第22章。那么JavaScript /HTML5的开发模型则是使用HTML5作为界面的开发语言,JavaScript作为后台的开发语言。同时在Windows Phone 8.1里面提供了Windows运行时组件来给各种不同的编程语言来共享代码,比如用C++实现的代码或者封装的功能,可以通过Windows运行时组件的方式给C#/XAML模型的应用程序来调用,或者也可以给JavaScript /HTML5模型的应用程序来调用。所在在这些不同的编程模型里面Windows运行时组件会作为一种媒介来实现跨编程语言的代码共享。

    那么对于Windows Phone 8.1所采用的多种应用程序模型,开发者应该如何去选择应用程序的开发模型呢?微软给出的建议了,开发者应该选择自己所熟悉的开发语言来进行开发。如果从应用程序性能的角度去比较,采用XAML(C#、VB和C++)模型的性能会比HTML5的性能高一些。那么对于C#、VB和C++三种编程语言来说在Windows Phone 8.1上面实现的效率是差不多的,因为即使是C++也是采用C++/CX语法来调用Windows运行时的API,Windows运行时的架构则是微软统一采用C/C++语言来封装的。采用C#语言来调用的Windows运行时框架和采用C++调用的是一样的。那么如果你采用标准C++所实现的算法或者图形处理等这些公共的逻辑,肯定是C++的效率更高,不过这种情况C#、VB和JavaScript的应用程序一样也可以通过Windows运行时组件来调用标准C++封装的这些公共的代码。

    在Windows Phone 7、7.5和8.0的时候,Windows Phone是只支持C#/XAML和VB/XAML这两种应用程序开发模式的,同时WPF和Silverlight这两种技术也是只支持C#/XAML和VB/XAML的开发模式,而大部分的开发者都是选择C#/XAML来进行开发,所以目前所C#/XAML这种开发模式所积累下来的技术知识非常丰富,也是Windows Phone开发里面最受欢迎的开发模型。

1.2.3 Windows Phone 8.1和Silverlight 8.1的区别

    那么在上面所讲的开发框架都是属于Windows Phone 8.1的应用程序,这是完全基于Windows运行时框架下的应用程序开发模型,那么除此之外我们还可以创建一种应用程序叫做Windows Phone Silverlight 8.1的应用程序。那么首先了解一下为什么需要有Windows Phone Silverlight 8.1这种模式的应用程序,其实Windows Phone Silverlight 8.1这种模式的应用程序是为了兼容目前的Windows Phone 8的代码方便升级,并且Windows Phone Silverlight 8.1的应用程序会全面支持Windows Phone 8原来的API和功能,注意Windows Phone 8.1的API对Windows Phone 8的API实现了很大的修改,下一小节我们会介绍这种差异。同时Windows Phone Silverlight 8.1的应用程序也会支持部分在Windows Phone 8.1中新增的API和功能。由此可以看出来,Windows Phone Silverlight 8.1项目只是为了暂时兼容目前的Windows Phone 8的代码方便升级,而Windows Phone 8.1的应用开发模式则是Windows Phone未来的发展方向,并且进一步和Windows 8.1的开发模式融合起来。所以本书所有的代码和讲解都是针对Windows Phone 8.1的应用程序的,而不是Windows Phone Silverlight 8.1的应用程序。

1.2.4 Windows Phone 8.1和8.0的API 差异

   Windows Phone 8的UI框架是基于Silverlight 4.0来进行开发的,应用程序的开发框架是基于.NET Framework和一个精简版的Windows运行时框架,而Windows Phone 8.1的应用程序则是完全基于Windows运行时框架的应用程序,所使用的Windows运行时框架是和在Windows 8 / 8.1平台上开发Windows Store的应用程序是统一的框架。Windows Phone 8.1和Windows Store的应用程序都是使用的Windows运行时的UI框架,所以在应用程序里面也可以在Windows Phone 8.1和Windows Store的应用程序之间来共享XAML的UI代码,包括模板、控件、页面等等。下面我们再来看一下,Windows Phone 8.1和8.0的API 有哪些主要的变化和差异:

    (1)8.0的XAML控件是在System.Windows.Controls空间下,而8.1的XAML控件都是在Windows.UI.Xaml命名空间下。

    (2)8.0的应用程序栏为AppBarButtons,而8.1的为CommandBar。

    (3)8.1增加了ListView 和GridView列表控件, 8.0的LongListSelector控件在8.1修改为SemanticZoom。

    (4)8.0的Panorama控件在8.1修改为 Hub控件。

    (5)8.0 的页面基类PhoneApplicationPage类在8.1修改为Page类。

    (6)8.1不再支持RadialGradientBrush画刷。

    (7)8.1的Windows.UI.Xaml.UIElement.Clip 属性只支持RectangleGeometry类型的几何图形,其他的几何图形均不支持。

    (8)8.0的弹窗控件MessageBox 在8.1里面修改为MessageDialog,并且是异步调用的模式。

    (9)8.0的页面导航方式NavigationService.Navigate(Uri source[, object navigationState])在8.1修改为this.Frame.Navigate(typeof(AboutPage));

    (10)在8.1中取消了8.0的WebClient类的Http编程,增加了HttpClient类。

    (11)对于XAML中命名空间的引用,有语法“clr-namespace”改为“using”。

    (12)8.1取消了8.0中的启动器和选择器的API,可以使用Windows.System.Launcher来实现部分的功能。

    (13)8.1重新修改了8.0中的语音API。

    (14)8.1重新修改了8.0中的地理位置API,并增加了地理围栏相关的功能。

    (15)8.1不再支持本地数据库SQL Server CE的使用。

    (16)8.1不再支持独立存储的API,取而代之的只能使用应用文件和应用设置的API。

    (17)8.1的后台任务编程采用新的API和机制,原来8.0的后台任务API和运行机制都取消了。

    (18)8.1的推送通知编程和API也和8.0的不同。

    (19)8.1的Toast通知、磁贴通知、磁贴的实现和8.0的也不同。

    (20)大部分在8.0中所支持的.NET API(非Windows运行时的API)在8.1中都不再支持。

 

本文来源于《深入浅出Windows Phone 8.1 应用开发》

源代码下载:http://vdisk.weibo.com/s/zt_pyrfNHb99O

欢迎关注我的微博@WP林政   微信公众号:wp开发(号:wpkaifa)

WP8.1技术交流群:372552293

[深入浅出WP8.1(Runtime)]Windows Phone 8.1和Silverlight 8.1的区别

上一篇:1.No active profile set, falling back to default profiles: default


下一篇:Windows计划任务执行时不显示窗口的问题