Windows 8/RT和Windows Phone使用的类库有许多相似之处,但实际开发中,仍存在许多的不同,下面举出几个关键异同。
1.Runtime不完全一样,Windows 8/RT采用完整的Windows Runtime以及完整的.NET Framework 4.5支持,而Windows Phone 8 采用精简版的Windows Runtime以及.NET For Windows Phone,支持的类库并不实现.NET Framework 4.5所描述的所有功能和方法。详见我之前的一篇关于.NET 4.5的文章http://blog.csdn.net/yuanguozhengjust/article/details/19181931。于是就造成了一些Windows 8/RT可以实现,而WP8无法实现的功能缺陷,如:
▲ 不完整的异步编程(特指async/await关键字的应用)支持
▲ ZIP文件操作
▲ 文件的操作
……
不过好在WP8功能目前比较少,有些实现不了的也无关紧要,但是老这么差一点,未必有点掉开发者的胃口。
2.几个基本的不同
(1)对话框
Windows Phone 8类似传统的C#编程:
Message.show("Hello");
Windows 8:
var ms = new MessageDialog("服务器错误!","错误"); await ms.ShowAsync();
而且需要using Windows.UI.Popups;才能使用,调用对话框的方法也必须添加async关键字。
(2)独立存储(特指应用程序参数设置)
Windows Phone 8:
IsolatedStorageSettings.ApplicationSettings["WebSetting"] = true;
Windows 8:
Windows.ApplicationModel.Core.CoreApplication.Properties["id"] = id.Text;
(3)使用HttpWebRequest的网络请求
Windows Phone 8:
private void Button_Click(object sender, EventArgs e) { ... HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL); request.BeginGetResponse(new AsyncCallback(getResponse), request); ... } void getResponse(IAsyncResult result) { HttpWebRequest req = (HttpWebRequest)result.AsyncState; HttpWebResponse response = (HttpWebResponse)req.EndGetResponse(result); Stream stream = response.GetResponseStream(); using (StreamReader reader = new StreamReader(stream)) { string str = reader.ReadToEnd(); ... } }
Windows 8:
HttpWebRequest request = HttpWebRequest.Create(new Uri(URL)) as HttpWebRequest; WebResponse rq = await request.GetResponseAsync(); using (StreamReader r = new StreamReader(rq.GetResponseStream())) { info = await r.ReadToEndAsync(); } rq.Dispose();
(4)页面跳转:
Windows Phone 8:
this.NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
Windows 8:
this.Frame.Navigate(typeof(Main),info);
3.此外,两个平台的后台机制也有所不同,所能使用的编程语言也有不一样的地方,微软的WP8.1据说与RT统一度提升,不知道具体能给开发者带什么样的福利或者噩梦,让我们拭目以待吧!
转载请注明出处:http://blog.csdn.net/yuanguozhengjust/article/details/19183839