Windows Runtime
gnimgnot
这个作者很懒,什么都没留下…
展开
-
WinRT的存储对象模型
IStorageItem接口是核心。IStorageFolder继承自IStorageItem,用于操作文件夹。IStorageFile继承自IStorageItem,用于操作文件。IStorageItemProperties定义的成员暴露存储项的属性,如缩略图,名称,类型等。IStorageFolderQueryOperations用于搜索文件和文件夹。翻译 2014-03-17 14:26:16 · 1337 阅读 · 0 评论 -
商店应用的进程模型 -- 页面跳转
WinRT中有个类叫Windows.UI.Xaml.Controls.Frame,管理所有页面。此类继承于ContontControl类,再往上继承于UIElement类。可以把Frame类的对象赋值给Window类的Content属性,当作绘制窗口。Frame类如下:public class Frame : ContentControl, INavigate {// Clears th翻译 2014-03-17 13:38:38 · 1029 阅读 · 0 评论 -
WinRT的 HttpClient
Windows.Web.Http.HttpClient应该是最常用的http通信类了:public sealed class HttpClient : IDisposable, IStringable {public HttpClient(); // Construct using HttpBaseProtocolFilterpublic HttpClient(IHttpFilter fi翻译 2014-03-17 15:58:00 · 2407 阅读 · 0 评论 -
WinRT的Socket
WinRT支持:StreamSocket,TCP 客户端StreamSocketListener,TCP 服务端StreamWebSocket,WebSocket客户端MessageWebSocket,WebSocket客户端DatagramSocket,UDP 的端Socket定位远程机器:public sealed class HostName : IStringable翻译 2014-03-17 16:24:43 · 2135 阅读 · 0 评论 -
WinRT中读取基础数据类型
可以用Windows.Storage.Streams.DataWriter 和 Windows.Storage.Streams.DataReader 类DataWriter类如下:public sealed class DataWriter : IDataWriter, IDisposable {// Constructs a DataWriter over a growable buf翻译 2014-03-17 15:31:39 · 1683 阅读 · 0 评论 -
WinRT的Stream对象模型
WinRT封装了简单流API,比如FileIO:public static class FileIO {public static IAsyncAction WriteBytesAsync(IStorageFile file, Byte[] buffer);public static IAsyncAction WriteBufferAsync(IStorageFile file, IBuf翻译 2014-03-17 15:11:05 · 1409 阅读 · 0 评论 -
WinRT的HttpBaseProtocolFilter类
HttpClient类实例化的时候内部会创建一个HttpBaseProtocolFilter的对象,用于建立TCP连接,接收返回字节,管理缓存,cookie,证书等:public sealed class HttpBaseProtocolFilter : IHttpFilter, IDisposable {public HttpBaseProtocolFilter();// Gets an翻译 2014-03-17 16:08:57 · 1923 阅读 · 0 评论 -
WinRT的IBuffer
ReadAsync要用到的IBuffer表示一个字节数组,接口如下:public interface IBuffer {UInt32 Capacity { get; } // Maximum size of the buffer (in bytes)UInt32 Length { get; set; } // Number of bytes currently in use by the翻译 2014-03-17 15:20:51 · 1744 阅读 · 0 评论 -
WinRT中 压缩/解压缩,加密/解密
网络传输时通常需要压缩数据,可以用Windows.Storage.Compression.Compressor类:public sealed class Compressor : IOutputStream, IDisposable {// Bytes are compressed in a buffer of 'blocksize' bytes and written to underly翻译 2014-03-17 15:46:46 · 1717 阅读 · 0 评论 -
Windows Runtime 系列文章索引
第一章 Windows Runtime 基础第二章 App 的打包和部署第三章 进程模式第四章 打包数据和漫游数据第五章 存储文件和文件夹第六章 流的输入和输出第七章 网络第八章 磁贴和toast通知第九章 后台任务第十章 在 App 间共享数据第十一章 应用商店翻译 2013-12-25 23:32:54 · 1372 阅读 · 0 评论 -
WinRT的App间共享数据
目标和源App通过DataPackage传输数据:public sealed class DataPackage {public DataPackage(); // Constructs a new DataPackage object// Use to set properties (ApplicationName, Title, Description, Thumbnail, etc.翻译 2014-03-18 23:50:46 · 1274 阅读 · 0 评论 -
商店应用的进程模型 -- 激活
App可以由很多种方式激活,比如从开始屏幕点击磁贴,叫做启动激活,所有的App都支持。还可以从副磁贴或toast激活,也叫启动激活。所有的激活方式可以从Windows.ApplicationModel.Activation.ActivationKind 枚举。如下:Launch,从主磁贴,副磁贴,或toast。Search,从搜索charm进入。File,另一个App打开的翻译 2014-03-16 18:10:56 · 1187 阅读 · 0 评论 -
商店应用的进程模型 -- 管理App
WinRT提供了一个Windows.ApplicationModel.Core.CoreApplication类:public static class CoreApplication {// Returns the CoreApplicationView associated with the calling threadpublic static CoreApplicationView翻译 2014-03-17 12:22:41 · 1461 阅读 · 0 评论 -
Windows Phone Runtime Component 中的类型转换
Windows Phone Runtime Component 是Windows Phone 平台用来写C++类库的项目类型。主要目的是让C#和C++进行互操作,引用历史的C++代码,保护知识产权,提供性能等。这里要注意可能会涉及到多种类型系统,分别是:标准C++类型系统。可能很少会用到,但也难免。如:char, bool, int 等。微软Win32类型系统。都是一些宏定原创 2013-12-25 23:55:48 · 1226 阅读 · 0 评论 -
Windows Runtime 类型系统映射
不同的编程言是如何知道并且调用winrt api的?每种语言都有关于api的描述。.net中,不同语言间可以互操作是因为有元数据,元数据是programming-language-agnostic信息,用来描述类型和其他成员。微软的winrt团队使用了.net团队使用的相同的元数据格式(ecma-335)。就是说,windows sdk带有一个dll用于描述了winrt组件元数据。 这个dll翻译 2013-12-25 23:01:57 · 1459 阅读 · 0 评论 -
Windows Runtime 类型系统
winrt api 是完全用本地c/C++移植的,因为做为平台代码必须要快速运行且尽量少占用内存。但是,winrt api 可以被 c/c++,C#, vb, js调用。要调用winrt api,必须定义一套简单的类型系统让各种语言调用。下面这些winrt的类型系统的核心概念必须要弄懂:通用基本类型:winrt组件并没有共享一个通用的基类,当用C#调用winrt时,CLR让winrt组件看起来翻译 2013-12-25 22:55:04 · 1405 阅读 · 0 评论 -
Windows Store app 开发语言
从技术上讲,所有的win32,com和winrt api 都可以被桌面应用和商店应用程序调用,但由于商店应用的app容器的安全上下文,好多调用会失败。如果调用了的话,会违反设计原则,将不会通过系统认证。商店应用可以调用的win32和com api在以下的网址:http://msdn . microsoft .com/en-us/library/windows/apps/br205757翻译 2013-12-25 22:52:14 · 2042 阅读 · 0 评论 -
Windows Store App安装包的生成过程
在创建AppPackage的时候,是按照下面的顺序的:MSBuild从XAML生成源代码,比如App.g.i.cs和MainPage.g.i.cs。C#编译器(csc.exe)编译源代码,并动态生成源代码,同时生成托管exe文件。生成商店应用需要用/target:appcontainerexe编译选项,默认情况下,是/platform:anycpu32bit。还需要引用的外部文件,比如翻译 2014-03-16 17:10:14 · 5583 阅读 · 0 评论 -
Windows Runtime 基础
Windows操作系统提供了很多功能,应用程序开发者可以很容易地构建应用。本书阐述了大部分Windows功能并且提供了一些使用的最佳指导实践。Windows通过api暴露这些功能,叫做Windows Runtime(WinRT),WinRT接口可以被很种开发语言调用,包括JavaScript,本地C++和.NET的C#、VB。本书用C#描述。Windows操作系统支持很多应用程序模型。比如,W翻译 2013-12-25 22:48:21 · 2417 阅读 · 0 评论 -
简化异步调用
.NET中,我们System.Threading.tasks命名空间执行异步操作。另外,C#提供了async和await关键字,允许你用顺序的编程模型执行异步操作,这就大幅度地简化了代码。来看一下C#开发人员如何使用异步的winrt api。下面的代码用WinrtasyncIntro 重新写了,但是,这个版本引入了一些.net框架的映射(扩展方法),这段代码不提供进度汇报(因为GetFilea翻译 2014-03-16 12:38:10 · 1225 阅读 · 0 评论 -
商店应用的企业部署
企业级商店应用通常不希望在商店被大众下载,而只能通过sideloading的方式安装。要sideload安装,就需要从受信任的证书颁发机构获取一个SPC(就是那个App_TemporaryKey.pfx文件)。Windows信任很多证书颁发机构。如果appx包中已经有一个证书,就不用安装部署其他证书了。或者还可以从公司的内部CA(认证授权机构)签名一个包,如果选择这样做,IT人员需要把CA证书翻译 2014-03-16 17:56:26 · 1129 阅读 · 0 评论 -
在.NET代码中调用WinRT api
当线程执行同步IO操作时,线程可以阻塞一段不确定的时间。当GUI线程阻塞IO操作直到完成时,用户界面就停止响应用户输入了,比如触摸,鼠标,触笔事件等,让用户失败感。为了保持app可响应,winrt组件通过异步api暴露IO操作的函数。事件上,如果cpu操作大于50毫秒,winrt组件执行计算操作也是通过异步api。具体参考clr via c#第四版第四部分“线程”。因为winrt api更多的翻译 2014-03-16 12:36:52 · 1792 阅读 · 2 评论 -
进度和取消
之前展示的是调用一个异步winrt api的常见场景,但之前的代码忽略了取消和进度更新。为了合理地处理取消和进度更新,就不显式让编译器调用Getawaiter 扩展方法了,而是用WindowsruntimeSystemextensions 类提供的AsTask扩展方法namespace System { public static class WindowsruntimeSystemex翻译 2014-03-16 12:40:30 · 1176 阅读 · 0 评论 -
Winrt 延迟加载
很多winrt组件都提供了虚函数或接口供实现,另外,很多winrt的类暴露了一些事件让你的app注册回调。当你的app返回时,windows相信你的代码已经完成,而后windows可能做一些操作。比如:当你的app将要挂起时,windows会给app一个事件,收到通知后,你的app可能想保持一些app的状态到用户的硬盘。当你异步执行这些操作时,线程在异步操作完成前返回。但是,当线程返回到windo翻译 2014-03-16 12:44:34 · 1253 阅读 · 0 评论 -
WinRT的BackgroundTask
BackgroundTask与主进程是不同的进程,所以BackgroundTask不能更新主UI,但是可以更新tile,发toast消息和读写文件。至少要执行一次主进程以激活BackgroundTask。实现步骤:1,实现后台任务的逻辑代码,必须是一个WinRt Component,例如:namespace MyApp.BackgroundTasks { // NOTE: de翻译 2014-03-18 23:38:47 · 1926 阅读 · 0 评论