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的区别的更多相关文章

  1. [深入浅出WP8.1(Runtime)]Socket编程之UDP协议

    13.3 Socket编程之UDP协议 UDP协议和TCP协议都是Socket编程的协议,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议.UDP适用于一次只 ...

  2. [深入浅出WP8.1(Runtime)]网络编程之HttpClient类

    12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...

  3. [深入浅出WP8.1(Runtime)]数据绑定的基础

    11.1 数据绑定的基础 数据绑定是一种XAML界面和后台数据通信的方式,因为界面和后台数据的通信的场景有多种,并且数据于数据之间也存在着不一样的关联关系,所以数据绑定的实现技巧和方式也是多种多样的. ...

  4. [深入浅出WP8.1(Runtime)]应用实例——移动截图

    10.2应用实例——移动截图 移动截图例子是实现一个把一张图片的某个部分截取出来的功能,并且用户可以选定截取的图片区间.那个该例子会使用ManipulationDelta事件来实现对截取区间的选择.然 ...

  5. [深入浅出WP8.1(Runtime)]Toast通知

    9.1 Toast通知 Toast通知是在屏幕最顶上弹出来的临时通知,是Windows Phone通用的弹出式短暂的通知,默认的系统消息都是采用Toast通知的形式,比如当你手机收到短信的时候,在手机 ...

  6. [深入浅出WP8.1(Runtime)]生成图片和存储生成的图片文件

    7.2.3 使用RenderTargetBitmap类生成图片 RenderTargetBitmap类可以将可视化对象转换为位图,也就是说它可以将任意的UIElement以位图的形式呈现.那么我们在实 ...

  7. [深入浅出WP8.1(Runtime)]应用文件的URI方案

    6.2.4 应用文件的URI方案 在上文我们获取文件的方式都是通过应用程序的三个跟目录的文件夹对象来获取文件夹对象和文件对象,那么我们这一小节来讲解一种新的获取文件对象的方式,这种方式就是通过Uri地 ...

  8. [深入浅出WP8.1(Runtime)]浮出控件(Flyout)

    4.15 浮出控件(Flyout) 浮出控件(Flyout)是一个轻型的辅助型的弹出控件,通常会作为提示或者要求用户进行相关的交互来使用.Flyout控件与Windows Phone里面的弹出框Mes ...

  9. [深入浅出WP8.1(Runtime)]文本框(TextBox)

    4.4 文本框(TextBox) 文本框(TextBox)控件是表示一个可用于显示和编辑单格式.多行文本的控件.TextBox控件常用于在表单中编辑非格式化文本,例如,如果一个表单要求输入用户姓名.电 ...

随机推荐

  1. yuv420p转为emgucv的图像格式Emgu.CV.Image<Bgr, Byte>

    GCHandle handle = GCHandle.Alloc(yuvs, GCHandleType.Pinned); Emgu.CV.Image<Bgr, Byte> image = ...

  2. centos apache svn配置

    单独安装svn服务: 安装svn软件 yum install subversion 创建根目录 mkdir -p /var/www/svn 创建版本库repos svnadmin create /va ...

  3. 深入理解java异常处理机制

       异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的 ...

  4. [译]git的那些flag

    git add -p console有一个交互式的界面(如下图),让你一个一个文件的选择是add还是不add.注意这些文件必须是tracked过的, 也就是说如果你的新的文件从来没有add过,那么他不 ...

  5. phpcms v9图片生成缩略图变成黑色解决方法

    今天客户反映,上传的图片生成缩略图有的图片变成黑色,出现问题就百度了一下,有不少网友也遇到这样的问题,但是官方论坛也没有给出解决办法,那还得靠自己解决了,于是就研究phpcms v9 图片压缩代码.打 ...

  6. 错误 Metadata file 'C:\Common\bin\Debug\Common.dll' could not be found

    一个通用方法de类库/总是报这个错误/很明显就是没有成功生成程序集... 但是就是找不到哪里的错误!!!! 如果是代码写错的话,可能会直接提示在哪个文件中哪行代码写错了,然后dll生成不了,但是这个错 ...

  7. NOSDK--一键打包的实现(三)

    1.3 编译及拷贝资源的脚本介绍 这一节介绍编译及拷贝资源的shell脚本,即: tools:                                             //保存通用的功 ...

  8. nyoj 448 寻找最大数(贪心专题)

    寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...

  9. html页面的CSS、DIV命名规则

    CSS命名规则 头:header 内容:content/containe 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:l ...

  10. linux mingling

    grep 文本搜索工具 -i 忽略大小写 -v 不显示匹配行 -c 显示符合条件的行数值 文本搜索支持正则表达式 1 2 3 cat /etc/passwd | grep root // 显示包含ro ...