Windows Phone SDK 8.0新特性(翻译)
原文地址:What's new in Windows Phone SDK 8.0
欢迎使用Windows Phone SDK 8.0。Windows Phone 8为开发人员提供了一些新特性和升级特性。包括本地代码的游戏开发,手机版的Windows Runtime,以及新的内核。我们把这些介绍都集中在一起,以方便您熟悉Windows Phone 8和Windows Phone SDK 8.0的这些特性。我们对您将会在SDK中用到的这些工具非常得满意。这些工具可以帮助您创建Windows Phone的应用,并使这些应用的用户们更加喜爱Windows Phone。在这里,我们将简单地介绍您在应用开发中可能用到的特性,并给出了进行深入了解的链接。
本主题包含了以下章节:
- SDK工具
- 磁贴和通知
- 锁屏画面
- 地图与导航
- 定位
- 语音
- 钱包
- 多分辨率
- Direct3D和游戏
- 应用模式
- 摄像头和照片
- 多媒体
- 用户界面
- 通信
- 数据和可扩展性
- 商店
- 商务用途
- 全球化定位
- 应用的清单文件
- 应用的兼容性
- CLR
- 相关主题
SDK工具
Windows Phone SDK 8.0包含了以下这些新的工具和特性,用于应用的开发,调试和测试。
开发工具和特性
Visual Studio包含了以下这些新特性。
- Direct3D应用的项目模板。更多项目模板相关的内容,参见How to create a new app project from a template for Windows Phone。更多Direct3D应用的信息,参见本主题的Direct3D and games一节。
- 加强了项目模板对定位的支持。项目模板现在内置了对定位的支持。现在可以很方便的进行定位应用的开发,而不需要进行若干步的设置。更多信息参见How to build a localized app for Windows Phone.
- 调试托管和本地代码。在Project Designer中的Debug页里,您可以选择调试应用的托管代码部分或是本地代码部分。如果应用与后台代理进行了通信,您还可以选择是否独立地调试后台代码部分。您也可以在一个调试会话里面,同时调试应用和后台代理。
- 调试通过磁贴或通知启动的应用。现在,针对Windows Phone 8的应用,不仅可以直接启动调试,也可以在通过磁贴或是推送通知来启动调试。当您在Windows Phone 8模拟器或是手机上启动调试的时候,点击Back按钮退出应用,此时调试工具依然会保持连接。当您通过磁贴或推送通知再次启动应用的时候,可以继续进行调试。更多信息,参见Debugging apps for Windows Phone.
- 对XNA Framework的支持。您不能针对Windows Phone 8开发新的XNA Framework应用了。更多信息,参见XNA Framework and Windows Phone 8 development.
Windows Phone8模拟器包含以下新特性。
- 支持多种分辨率。模拟器有多个版本支持Windows Phone 8所支持的所有三种分辨率。更多信息,参见Multi-resolution apps for Windows Phone 8.
- Windows Phone8模拟器的系统需求。Windows Phone 8模拟器的运行基于Windows Hyper-V,所以它的硬件,软件和配置需求也与Hyper-V相同。如果您的电脑不支持Hyper-V,您依然可以直接在Windows Phone 8手机上进行调试。更多信息,参见System requirements for Windows Phone Emulator.
- Windows Phone 8模拟器所使用的网络。Windows Phone OS 7.1模拟器直接使用开发环境所在计算机的网络。但是,Windows Phone 8模拟器将自身设置为网络上的一个独立设备。关于这个改变所造成影响的更多信息,参见 Windows Phone Emulator.
清单的设计工具。现在可以通过友好的用户界面来添加,移除和修改应用清单文件中的元素了。更多信息,参见How to modify the app manifest file for Windows Phone.
独立存储的资源管理器现在有了新的命令行选项,用于指定目标设备。更多信息,参见How to use the Isolated Storage Explorer tool for Windows Phone.
测试工具和特性
测试应用的本地代码版本。您可以测试应用的本地代码版本,这样得到的性能体验就会和用户的最终体验一致。更多信息,参见 How to test the retail version of your app for Windows Phone 8.
应用监控和性能分析。Windows Phone Application Analysis (原名 Windows Phone Performance Analysis)现在包含了应用监控,并加入了应用性能分析。这个应用监控特性,可以捕捉质量观点上的那些关键性指标,然后根据这些指标对应用进行评估。这个指导信息,可以帮助您在开发过程中保证应用的品质与性能,而不必等待开发完成之后再来进行这个工作。更多信息,参见App monitoring for Windows Phone.
仿真面板。您可以使用Windows Phone 8的仿真面板,来确定您的应用如何应对真实的使用环境。通过这些信息,您可以调整应用,以确保其在各种显示环境中都能表现良好,从而满足用户的需要。
您可以通过仿真面板来测试应用在面对下面这些情况时将会作出的响应:
- 网速很慢或信号不足
- 中断,比如收到一个提醒或是通知
- 锁屏
更多信息,参见Simulation Dashboard for Windows Phone.
截屏。现在,您可以通过一组按键组合来进行真机上的应用截屏了。更多信息参见How to create screenshots for Windows Phone Store.
Store Test Kit。原来的Marketplace Test Kit已经改名为Store Test Kit。这个功能验证测试对面向Windows Phone 8的应用是无效的。
磁贴和通知
Windows Phone 8包含了一些新的磁贴尺寸和磁贴模板,可以通过以下类进行深入了解:
- FlipTileData
- CycleTileData
- IconicTileData
更多关于Windows Phone 8新磁贴的内容参见Tiles for Windows Phone.
锁屏界面
在Windows Phone 8中,用户可以使用应用提供的图片作为锁屏界面的背景,同时也能选择某些应用在锁屏界面的通知区域中进行显示。更多关于Windows Phone 8的新锁屏信息,参见 Lock screen notifications for Windows Phone 8 和Lock screen background for Windows Phone 8.
地图和导航
地图
Windows Phone 8包含了新的地图控件,可以通过以下命名空间进行使用:
- Microsoft.Phone.Maps
- Microsoft.Phone.Maps.Controls
- Microsoft.Phone.Maps.Services
更多地图控件的信息,参见Maps and navigation for Windows Phone 8.
导航
在Windows Phone 8中,您可以使用基于ms-drive-to或ms-walk-to这种Uri命名结构的导航协议来编写应用,请求驾驶或步行方向,或是处理前面这样的请求。更多信息,参见How to request or provide directions for Windows Phone 8.
定位
Windows Phone 8提供了一组的基于Windows Phone Runtime的API集合来获取手机的当前位置。现有的.NET定位API依然是支持的。新API的更多信息,参见Location for Windows Phone 8.
Windows Phone 8提供的另一个新特性是针对的位置追踪类的应用,现在即使用户离开了应用,它们仍然可以在后台运行。这样就允许实现跑步追踪应用和转来转去的导航应用了。
语音
在Windows Phone 8,用户可以通过声音来与应用进行交互。更多关于Windows Phone 8语音特性的信息,参见Speech for Windows Phone 8.
钱包
Windows Phone 8引入了钱包,允许应用完成下面这些事情:
- 将优惠券,信用卡,会员卡,购物狂等类似物品收集在一起。
- 管理应用和音乐商店内的支付工具。
- 将钱包所管理的物品与手机里的应用联系起来。
- 在某些商场里面,使用近场通讯(NFC)技术进行无线支付。
通过把钱包中的物品集成在一起,应用的开发者们可以给用户带来丰富的体验。通过使用Wallet命名空间下的相关函数,您的应用就可以创建,阅读,写入和删除钱包中的物品。有了Windows Phone 8钱包,您可以通过代理来使保证钱包中物品是最新的,并通过状态信息和自定义字段来与用户进行交互。钱包集成了一个附加的功能,通过允许在一个新加的表面区域里面与用户进行交流,从而使您更好地贴近用户。此外,钱包物品允许用户深度地关联应用,这样应用就能提供更有意义的应用内体验了。更多关于Windows Phone 8中钱包的信息,参见Wallet for Windows Phone 8.
多分辨率
Windows Phone 8支持WVGA,WXGA和720p三种设备。下面的表格列出了这些新的分辨率。Windows Phone 8支持所有这些分辨率。
分辨率 | 比例 | 缩小后的分辨率 | |
WVGA | 480x800 | 15:9 | 480x800 |
WXGA | 768x1280 | 15:9 | 480x800 |
720p | 720x1280 | 16:9 | 480x853 |
关于更多Windows Phone 8多分辨率支持的信息,参见Multi-resolution apps for Windows Phone 8.
Direct3D和游戏
除了本地代码开发外,Direct3D也加入到了Windows Phone的技术大家庭。这意味着,基于Direct3D的PC游戏第一次可以与它的手机版本共享绝大部分代码了。开发人员可以使用state-of-the-art中间件和业界最强大的引擎来为Windows Phone开发游戏了。
涉及到Direct3D的这一类应用将完全由本地代码进行编写的,并且只能使用Direct3D来绘制UI。这类应用与托管代码应用使用了完全不同的代码模式,所有就不能使用很多托管代码应用的特性,比如动态磁贴和推送通知。但是,Windows Phone 8也为Direct3D提供了一些新特性,以提供对软键盘输入,设备主题和屏幕分辨率检测的支持,以及一组Launchers和Choosers用来添加许多常见的手机任务。更多关于本地Direct3D应用模式和这类应用所允许的特性,参见Direct3D app development for Windows Phone 8.
此外,您也可以通过DrawingSurface和DrawingSurfaceBackgroundGrid控件在托管应用中混入Direct3D图像,从而以非常小的性能损失来获取托管代码的优秀特性。Windows Phone 8所支持的是Direct3D库的子集,处于9_3的特性水平。更多Direct3D的特性支持和兼容性,参见Direct3D for Windows Phone 8.在托管应用中使用Direct3D的信息,参见 XAML and Direct3D apps for Windows Phone 8.
除了对Direct3D的支持,您也可以通过Microsoft Media Foundation API来回放和捕捉音频和视频。并且,本地的音频库,XAudio2和WASAPI现在也能在手机上使用了。更多信息,参见Walkthrough: Using Microsoft Media Foundation for Windows Phone 8 和 Native audio APIs for Windows Phone 8.
应用模式
Windows Phone 8支持两种独立的应用模式。
托管
托管应用使用XAML来定义用户界面,使用Visual Basic或C#作为编程语言。现有的Windows Phone应用所使用的都是这种技术,完全兼容Windows Phone 8。基于XAML的应用获得了一些新特性,比如新控件,高分辨率自动缩放。Windows Phone 8新加入的托管API,包含了Nokia maps提供的一个新的地图控件和一个用于保管支付方式和允许NFC支付的钱包API。
本地
Windows Phone 8支持本地代码的开发方式,包括Windows 8 SDK的重要子集,允许开发者在Windows 8和手机之间共享相当数量的代码。通过加入对本地代码开发的支持,Windows Phone 8减少了需要移植和维护的组件,比如运算引擎,图形库和API集。
Direct3D+XAML
对于那些既需要Direct3D的图形能力,又想使用那些只针对托管应用特性(比如磁贴和XAML控件)的开发者来说,Direct3D和XAML的混合开发模式是非常有吸引力的。
HTML
Windows Phone 8并不支持基于HTML的手机应用。不过,开发者可以创建一个XAML的托管应用,嵌入浏览器控件,并在其中显示本地的HTML,它也可以通过使用InvokeScript方法和ScriptNotify事件来访问手机的API。在Windows Phone 8中,内置的浏览器也升级到了Internet Explorer Mobile 10,加入了许多的新特性,比如对HTML5/CSS3的完善实现,SVG,ES5,IndexedDB,手势事件,以及加入的高性能脚本引擎。这些都为Windows Phone 8的HTML开发者们开发新的、有趣的应用提供了可能。
更多针对Internet Explorer Mobile 10进行开发的信息,参见Internet Explorer 10 Guide for Developers.
摄像头和照片
Windows Phone 8引入了Lenses,提供了自动上传照片到Web服务的功能,扩展了拍照体验,以及针对Windows Phone Runtime的高级API。此版本还强化了对照片的操作。
Lenses
在Windows Phone 8中,您可以创建一种与内置摄像应用表现一致的,名为lens的应用。lens为用户提供了统一的接口,指向您所编写应用中的取景框。lens特性,对原有的摄像头API所提供的单一功能,进行了有效的扩展。通过lens,您的应用可以通过取景框直接与摄像头进行交互。更多信息,参见Lenses for Windows Phone 8.
照片处理
Picture类已经加入了新的扩展方法,包括GetPreviewImage和GetPath。使用GetPreviewImage可以提高图片显示的性能。该方法将根据用户手机的最佳分辨率,返回WVGA,WXGA或720p尺寸的图片。GetPath方法将返回图片在媒体库中的完整路径,可以把这个路径作为图片的唯一标识。为了使用这些方法,需要引入Microsoft.Xna.Framework.Media.PhoneExtensions.
同时加入的还有一个新的加载器, ShareMediaTask。通过 ShareMediaTask类,应用可以直接访问共享选择器,这样用户可以如同使用内置的图片浏览器一样来分享图片了。更多信息,参见How to use the share media task for Windows Phone.
此外,PhotoChooserTask任务现在返回更加友好的文件名。在这个事件的处理程序中,OriginalFileName属性直接返回照片的实际文件名。更多信息参见How to use the photo chooser task for Windows Phone.
照片的扩展性
Windows Phone 8引入了新的方法来扩展照片的体验。除了对Photoshop Hub,照片应用选择器和共享选择器的扩展之外,您的应用也可以像富媒体编辑器一样,与照片编辑选择器或注册器进行交互。更多信息,参见Photo extensibility for Windows Phone.
自动上传
在Windows Phone 8中,通过使用资源加强后台代理,您的应用可以自动上传图片到某个图片存储服务之中。将您的应用注册为自动上传应用之后,您的后台代理将会始终保持运行。更多信息,参见 Auto-upload apps for Windows Phone 8.
高级捕捉API
对于那些需要对摄像头进行更好控制的应用,Windows Phone Runtime在 Windows.Phone.Media.Capture 命名空间中提供了更为高级的捕捉API,使用Windows.Phone.Media.Capture.PhotoCaptureDevice类来控制照片的属性,比如ISO,白平衡和曝光。甚至还可以程序来调整聚焦的位置。Windows.Phone.Media.Capture.AudioVideoCaptureDevice提供了类似的针对视频和音频的控制。更多关于高级捕捉API的信息,参见 Capturing photos for Windows Phone 和Capturing video for Windows Phone.
除了以上API之外,Windows Phone 8还针对本地代码提供了一组专门的接口。这些接口提供了对未压缩照片数据和编码后的音频/视频样本的访问。这里还有个方法可以使用当前的预览帧来填充Direct3D的2-D材质。更多信息,参见 Camera APIs for native code (Windows Phone 8).
多媒体
音乐媒体库
在Windows Phone 8中,您可以通过MediaLirary类中的SaveSong和Delete方法来添加和移除用户音乐集中的音乐文件。新的API位于Microsoft.Xna.Framework.MediaLibraryExtensions.dll程序集的Microsoft.Xna.Framework.Media.PhoneExtensions命名空间下。
图片媒体库
在Windows Phone 8中,对于每张存储在手机里的图片,会自动创建下面这两种缩略图,并可以通过您的应用进行还原。
- 小型缩略图,您可以通过Picture类下的GetThumbnail方法来检索这种图片。
- 预览图片,拥有和手机屏幕一致的分辨率,您可以通过Picture类中,新的GetPreviewImage扩展方法来检索这种图片。
您可以使用Picture类中新的GetPath扩展方法来获取图片的路径。当用户需要分享图片的时候,这个方法返回的值可以用于ShareMediaTask的FilePath属性。
这个新的API可以在Microsoft.Xna.Framework.MediaLibraryExtensions.dll程序集的Microsoft.Xna.Framework.Media.PhoneExtensions命名空间下找到。
背景音频
在Windows Phone 8中,当BackgroundAudioPlayer的状态改变时,您可以通过 PlayStateChangedEventArgs获得状态转变的信息。您可以确定在音频播放器进入当前播放状态之前的状态,是 CurrentPlayState还是IntermediatePlayState。
关于您可以如何处理新的事件参数所提供的信息,下面是一些等价关系:
- IntermediatePlayState = BufferingStopped
- CurrentPlayState = Playing
- IntermediatePlayState = TrackEnded
- CurrentPlayState = Stopped
更多关于背景音频的信息,参见Background audio overview for Windows Phone.
用户界面
控件
Windows Phone 8提供了下面这些优秀的新控件:
- Windows Phone 8包含了一个LongListSelector控件,可以分组,显示和滚动很长的数据列表。它同时也提供了一种方法,可以使用户跳转到列表的某一段。
- 在Windows Phone 8中,Pivot和Panorama控件已经由SDK中移出,转而直接放置到手机的ROM中。这样,您的应用就可以使用独立的本地输入线程,也就意味着这些控件的响应能力会有极大的提升。对Panorama控件进行内存设置所需工作也得以减少。
- WebBrowser控件现在基于Internet Explorer 10,提供了HTML5和扩展版CSS的支持,从而获得更佳的浏览体验。
- ProgressBar控件的性能也得以提升。您需要用这个控件来显示基于值的进度条和不确定值的进度条。
Launcher
您的Windows Phone 8应用可以通过Launcher来帮助用户执行常用的任务。以下是Windows Phone 8新加入的Launcher
- SaveAppointmentTask
- MapDownloaderTask
- MapsTask
- MapsDirectionsTask
- ShareMediaTask
更多关于Windows Phone 8新Launcher的信息,参见Launchers for Windows Phone.
通信
VoIP
在Windows Phone 8中,您可以创建Voice over IP(VoIP)应用,使用户可以使用数据流量来进行语音和视频通话。VoIP应用集成进了内置的手机体验,这样拨入的电话会像普通的拨入电话一样,使用同样的手机UI进行显示。更多信息,参见VoIP apps for Windows Phone 8.
蓝牙
蓝牙是一种无线通信技术,相关设备可以在10米内彼此进行通信。您可以使用Windows Phone 8新引入的Bluetooth API,通过蓝牙技术与其他手机进行通讯。Windows Phone 8的核心蓝牙使用场景,包括了应用对应用和应用对设备的通讯,这开辟了广泛的可能性,使您的手机能进行更多的连接。更多信息,参见Bluetooth for Windows Phone 8.
Proximity
Windows Phone 8引入的了新的Proximity API,可以用来创建如下的应用:
- 通过NFC来传输数据。
- 使用手机与NFC标签进行交互。
- 在您的应用和临近设备的应用之间建立Wi-Fi或蓝牙连接。
对于两部都拥有NFC芯片的手机,用户只需要把它们防到一起就能完成相关工作。
更多关于Proximity的信息,参见 Proximity for Windows Phone 8。Windows Phone 8中的Porximity也允许使用蓝牙来进行应用对应用的连接。更多关于的Windows Phone 8中蓝牙的信息,参见Bluetooth for Windows Phone 8.
Incoming sockets
Windows Phone 8引入了对incoming socket的增强。 System.Net.Sockets 和Windows.Networking.Sockets都支持incoming socket,这意味着您的应用可以监听传入的网络连接,并绑定到连接上。
支持IPv6
System.Net.Sockets中加入了对网络上128位地址系统设备的支持,Windows.Networking.Sockets也同样支持。
Windows.Net.Networking
Windows Runtime API中的Windows.Networking.Sockets,也加入了Windows Phone 8中。它是作为Windows Phone Runtime API来是实现的,不论您使用的是什么编程语言,都可以很方便地使用它。 虽然我们已经加强了.NET API,System.Net.Sockets,以使其支持IPv6和socket监听等新特性,不过您也可以考虑使用这个新的API来进行socket编程,因为这样更具可移植性。 Windows.Networking.Sockets从无到有,构建了一套干净,安全,易用的API,可以执行最好的方案。更多对Windows Runtime API的信息,参见Windows Phone Runtime API.
Winsock本地API的支持
Windows Phone 8支持Winsock本地API。使用Winsock API的一个优势,是您可以复用以前用过的Winsock代码,这样可以方便您在Windows Phone OS 8.0平台上创建应用。更多关于Winsock本地API的信息,参见Supported Win32 APIs for Windows Phone 8.
Data Sense
Windows Phone 8引入了新的Data Sense特性,可以依据用户所制定的流量限制计划来控制流量,从而节省用户的费用开销。在Data Sense特性中,用户可以指定它们的流量限制计划,然后Data Sense会根据限制来监视流量的使用情况。有了这个信息,当用户接近流量上限的时候,应用可以通过降低对流量的使用来帮助用户节省费用,也可以在超出流量限制的时候,中止对流量的使用。
更多关于Windows Phone 8中Data Sense的信息,参见How to adjust data usage using the Data Sense API for Windows Phone 8.
数据和扩展性
存储
Windows Phone 8和Windows 8一样,支持Windows Runtime和Win32中存储API的子集。此版本还引入了 Microsoft.Phone.Storage命名空间,这个新的.NET API额可以用于SD卡的读取。更多信息,参见Data for Windows Phone 和Reading from the SD card on Windows Phone 8.
用户联系人的存储
您可以设计一个Windows Phone 8应用,创建一组应用内的联系人信息,但又保持与手机内置应用一致的体验。所提供的API可以用来创建,更新,删除和查询应用的联系人信息。也可以把应用的联系人列表和应用的云端服务器中的列表进行同步。更多信息,参见Custom contact store for Windows Phone.
文件和URI的关联
在Windows Phone 8中,您可以建立与文件和URI的关联,这样当其它应用加载某种文件类型或URI语法的时候,就会自动调用您的应用。比如文件关联允许启动你的应用来处理email附件。您也可以通过使用association-launching API来根据某种文件类型或URI语法来加载其它的应用。更多信息,参见Auto-launching apps using file and URI associations for Windows Phone 8.
搜索的扩展
当你扩展了Windows Phone 8的Search体验的时候,Quick card会向您的应用传入更多的信息。这里还有针对事件的新Quick card,Event card。这些改变的概述如下表所示。
Quick card | 新的URI参数 |
Place Card | PhoneNumber |
Movie Card | ReleaseDate |
Event Card (new quick card) | EventName, StartDate, PlaceName, PlaceLatitude, PlaceLongitude,PlaceAddress |
关于这些参数的更多信息,参见Search extensibility for Windows Phone.
商店
应用内购买
应用内购买可以使开发者编写应用或游戏来售卖虚拟物品。Microsoft的服务器承载了所允许进行应用内购买的商品的目录,包括售价和描述性的元数据。Microsoft同时还提供了交易的基础平台,包括对世界190个地区用户的付费支持。
对于每一个用户可以购买的应用内付费产品,开发者都需要在Windows Phone Dev Center中输入描述,除了针对每个地区的不同价格,还需要包括用户可能发生应用内付费的区域。通过使用Windows Phone 8的API,开发者不必编写代码来处理不同的付费产品。应用内购买支持用户在应用和游戏中进行付费的所有可能用到方法。应用或游戏必须承载和并提供与应用内商品相关的所有内容。更多信心,参见In-app purchase for Windows Phone 8.
适用于商用
对于注册到了企业中的Windows Phone 8手机,可以很方便地开发和发布应用。关于在企业里注册手机和分发应用的具体流程信息,参见Company app distribution for Windows Phone 8.
本土化和全球化
在Windows Phone 8中,你可以创建从右至左阅读的应用,和使用双向语言的应用。更多关于在Windows Phone 8中的新本土化和全球化特性的信息,参见Creating bidirectional apps for Windows Phone 8.
现在,您可以为一个应用程序域定义默认的文化。更多信息,参见 CultureInfo类。
应用清单文件
为了支持诸如蓝牙和NFC之类的新功能,应用清单文件中添加了一些新的capability。通过设置清单文件的需求部分,您可以指定应用的硬件需求,以确保用户的手机能够顺利运行应用。更多关于Windows Phone 8新的capability和硬件需求,参见 App capabilities and hardware requirements for Windows Phone.
此外,现在可以很方便地使用Visual Studio集成的Manifest Editor工具来编辑清单文件了。更多关于如何编辑应用清单文件的信息,参见How to modify the app manifest file for Windows Phone.
应用兼容性
Windows Phone 8引入了一些不同于Windows Phone 7.1的API。具体的区别,以及对您将要开发的应用有何影响,参见App platform compatibility for Windows Phone.
在许多情况下,如果一个API在Windows Phone 8和原有系统中有着不同的不同的表现,那么它将会被区别对待。也就是说,如果是针对Windows Phone OS 7.1的应用,这个API就和自动表现为7.1的行为。反之,如果是针对Windows Phone 8的应用,这个API则会表现出新的行为。更多信息,参见 App platform compatibility for Windows Phone中的"Quirks mode behavior in the .NET Framework"一节。
CLR
Windows Phone 8中的CLR提供了以下新特性,同时在以下领域与现有的Windows Phone会有所不同:
代码生成
- Windows Phone 8采用了新的策略,在云端预编译应用,以增强启动性能。为了确保开发者所执行的应用体验与用户的设备一致,Windows Phone SDK 8.0提供了相应的工具。
- Windows Phone 8改进了对代码嵌入的支持;不再需要手工嵌入代码了。
- JIT编译器的代码生成得到了最优化。
线程
- .NET Framework可以感知多核心。应用可以通过线程池,Task Parallel Library,以及所有的同步原语来创建线程,以利用多个核心。
- 对多核心的支持,可能导致诸如Thread.Sleep之类API的表现有所不同。
安全模型
托管的沙盒已被移除。这样的话,在Windows Phone OS 7.1中抛出的安全异常,比如MethodAccessException,可能不会在Windows Phone 8中抛出。
垃圾回收
Windows Phone 8的垃圾回收堆有2个阶段,而不再是Windows Phone OS 7.1中的3个。
- 在Windows Phone 8中,垃圾回收有一个很大的对象堆(LOH)。
- 在Windows Phone 8中,后台垃圾回收无效。
- 手机的资源管理器会在一个应用接近内存上限的时候调用一次垃圾回收,并在超过内存上限的时候终止应用。
- 运行时的自调整垃圾回收触发器,可以被应用的强制垃圾回收调用所影响。
- 在Windows Phone 8中,垃圾回收的每个线程分配性能都得到了提高。
Portable Class Library
- Visual Studio 2012中的Portable Class Library项目允许你编写托管程序集,以运行在多个.NET Framework平台上。您可以使用Portable Class Library项目来选择目标平台(比如Windows Phone 8和.NET for Windows Store apps)。那么项目的可用类型和成员会根据所选的平台而有所限制。
- 面向Windows Phone OS 7.1和Windows Phone 8的Portable class library都可以用于Windows Phone 8。请注意,当一个面向Windows Phone OS 7.1的Portable class library在运行于Windows Phone 8之上时,它的相关表现就和Windows Phone 8应用是一致的。更多信息,参见Cross-Platform Development with the .NET Framework.
交互
- 应用可以通过托管代码来调用Windows Runtime API。
- COM互操作和P/Invoke均不被支持。
总体性能
- 在Windows Phone 8中,使用System.Threading.Tasks命名空间下的类型来进行的同步和异步操作的性能都得到了提升。此外,Stream相关的类现在加入了异步方法,以获取加入到C#和Visual Basic语言中异步特性所带来的优点。更多信息,参见.NET Framework Version 4.5文档中的 Asynchronous File I/O 。
- Windows Phone 8中的虚拟调用性能得到提升。
- Windows Phone 8对Fast Application Switching的实现也得到了提升。当进行当前激活应用切换的时候,它所管理的执行程序会暂停。一旦暂停了一个应用,CLR会保证它的CPU使用率降为0,同时应用的所有超时设定都会被虚拟化。
相关主题
其它资源