[深入浅出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 应用开发》
WP8.1 Runtime文章列表:http://www.cnblogs.com/linzheng/p/3998037.html
源代码下载:http://vdisk.weibo.com/s/zt_pyrfNHb99O
欢迎关注我的微博@WP林政 微信公众号:wp开发(号:wpkaifa)
WP8.1技术交流群:372552293
[深入浅出WP8.1(Runtime)]Windows Phone 8.1和Silverlight 8.1的区别的更多相关文章
- [深入浅出WP8.1(Runtime)]Socket编程之UDP协议
13.3 Socket编程之UDP协议 UDP协议和TCP协议都是Socket编程的协议,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议.UDP适用于一次只 ...
- [深入浅出WP8.1(Runtime)]网络编程之HttpClient类
12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...
- [深入浅出WP8.1(Runtime)]数据绑定的基础
11.1 数据绑定的基础 数据绑定是一种XAML界面和后台数据通信的方式,因为界面和后台数据的通信的场景有多种,并且数据于数据之间也存在着不一样的关联关系,所以数据绑定的实现技巧和方式也是多种多样的. ...
- [深入浅出WP8.1(Runtime)]应用实例——移动截图
10.2应用实例——移动截图 移动截图例子是实现一个把一张图片的某个部分截取出来的功能,并且用户可以选定截取的图片区间.那个该例子会使用ManipulationDelta事件来实现对截取区间的选择.然 ...
- [深入浅出WP8.1(Runtime)]Toast通知
9.1 Toast通知 Toast通知是在屏幕最顶上弹出来的临时通知,是Windows Phone通用的弹出式短暂的通知,默认的系统消息都是采用Toast通知的形式,比如当你手机收到短信的时候,在手机 ...
- [深入浅出WP8.1(Runtime)]生成图片和存储生成的图片文件
7.2.3 使用RenderTargetBitmap类生成图片 RenderTargetBitmap类可以将可视化对象转换为位图,也就是说它可以将任意的UIElement以位图的形式呈现.那么我们在实 ...
- [深入浅出WP8.1(Runtime)]应用文件的URI方案
6.2.4 应用文件的URI方案 在上文我们获取文件的方式都是通过应用程序的三个跟目录的文件夹对象来获取文件夹对象和文件对象,那么我们这一小节来讲解一种新的获取文件对象的方式,这种方式就是通过Uri地 ...
- [深入浅出WP8.1(Runtime)]浮出控件(Flyout)
4.15 浮出控件(Flyout) 浮出控件(Flyout)是一个轻型的辅助型的弹出控件,通常会作为提示或者要求用户进行相关的交互来使用.Flyout控件与Windows Phone里面的弹出框Mes ...
- [深入浅出WP8.1(Runtime)]文本框(TextBox)
4.4 文本框(TextBox) 文本框(TextBox)控件是表示一个可用于显示和编辑单格式.多行文本的控件.TextBox控件常用于在表单中编辑非格式化文本,例如,如果一个表单要求输入用户姓名.电 ...
随机推荐
- mysql binlog日志优化及思路
在数据库安装完毕,对于binlog日志参数设置,有一些参数的调整,来满足业务需求或使性能最大化.Mysql日志主要对io性能产生影响,本次主要关注binlog 日志. 查一下二进制日志相关的参数 ...
- thinkphp语言包
1.config.php语言包相关配置. //开启语言包 'LANG_SWITCH_ON' => true, 'LANG_AUTO_DETECT' => true, // 自动侦测语言 开 ...
- 简单的STM32 汇编程序—闪烁LED
要移植操作系统,汇编是道不得不跨过去的坎.所以承接上篇的思路,我准备用汇编写一个简单的闪烁LED灯的程式.以此练习汇编,为操作系统做准备. 第一步,还是和上篇一样,建立一个空的文件夹. 第二步,因为是 ...
- C语言基础(6)-char类型
1. char常量.变量 使用单引号‘’引起来的就是char的常量 ‘a’是一个char类型的常量 “a”是一个字符串类型的常量 1是一个int型的常量 ‘1’是一个char型的常量 char a; ...
- MathType 6.9 介绍安装
1.介绍 MathType是强大的数学公式编辑器,与常见的文字处理软件和演示程序配合使用,能够在各种文档中加入复杂的数学公式和符号,可用在编辑数学试卷.书籍.报刊.论文.幻灯演示等方面,是编辑数学资料 ...
- 代码质量管理工具 sonar 配置
代码检查工具有很多findBugs等等 sonar配置: 1.下载sonar 5.5, 解压,运行 sonarqube-5.5\bin\windows-x86-64\StartSonar.bat , ...
- ps批量处理图片
刚刚有朋友问,ps咋做批量动作呢,其实特别简单,基本一劳永逸,用尺寸做个例子,大家看看就知道了.
- Apache 启动.htaccess 的操作方法
配置apache主配置文件(httpd.conf) 1.查找“#LoadModule rewrite_module modules/mod_rewrite.so” 去掉前面的#号 2.把AllowOv ...
- rabbitmq 简单梳理
概念: 生产者(Producer,简写P),负责发布消息. “交换机”(Exchange, 简写X), 负责中转消息. 路由(Route, 简写R), 即 X->Q的路线名. 消息队列 (Que ...
- phpcms
phpcms 织梦 帝国cms