[深入浅出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控件常用于在表单中编辑非格式化文本,例如,如果一个表单要求输入用户姓名.电 ...
随机推荐
- Sybase 出错解决步骤
总结: 1.出错该错误可以先检查一下Sybase BCKServer服务有没有启动 2.在dsedit看能否ping通备份服务 3.检查master库sysservers表的配置 4.如在备份数据库d ...
- 【PHP开发篇】一个统计客户端商机提交的获取IP地址
1.对客服提交数据的ip地址记录. 获取ip地址的方法: public function getIP() { global $ip; if (getenv("HTTP_X_REAL_IP&q ...
- 数位dp模板
#include <bits/stdc++.h> typedef long long LL; const int MOD = (int)1e9 + 7; LL L,R,G,T; int d ...
- MySQL replace into 使用详解 及 注意事项
REPLACE的运行与INSERT很相似.只有一点例外,假如表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除.注意:除非表 ...
- php万年历
最近学习php循环.日期显示.GET方式请求,进而实现了一个小程序. 直接上代码: <?php header("Content-type:text/html; charset=UTF- ...
- CentOS 安装tomcat 7
安装环境:CentOS-6.3 安装方式:源码安装 软件:apache-tomcat-7.0.29.tar.gz 下载地址:http://tomcat.apache.org/download-70.c ...
- oracle中 SELECT INTO 和INSERT INTO ... SELECT区别
在Oracle中,将一张表的数据复制到另外一个对象中.通常会有这两种方法:insert into select 和 select into from. 前者可以将select 出来的N行(0到任意数 ...
- r-cnn学习(八):minibatch
这段代码包括由输入图片随机生成相应的RoIs,并生成相应的blobs,由roidb得到相应的 minibatch.其代码如下. # ---------------------------------- ...
- matlab GUI封装exe文件
学习matlab过程中,有时有些程序处理数据时老是看着代码,也会觉得疲倦,那么要试一试matlab的GUI吗?我就是这么使用matlab的GUI制作一个小程序,并且使用matlab封装成了exe文件. ...
- js框架设计1.2对象扩展笔记
需要一个新的功能添加到我们的命名空间上.这方法在JS中被叫做extend或者mixin,若是遍历属性用一下1.1代码,则会遍历不出原型方法,所以1.2介绍的是mass Framework里的mix方法 ...