写点什么

座谈:来自微软 WinRT 开发者的答案

  • 2013-01-03
  • 本文字数:1241 字

    阅读完需:约 4 分钟

在 BUILD 2012 大会的 The Windows Runtime Q&A 座谈上, Chris Anderson Chris Guzak Jerry Dunietz Kamen Moutafov Martyn Lovell Elliot H Omiya 等负责 WinRT 不同组件的主要开发者回答了开发者关心的一些 Windows 8 应用程序相关问题,特别是 WinRT 问题。以下是大部分重要问题答案的摘要。

桌面和 Windows 商店的应用程序都有一个 CLR、一组 DLL,但是桌面应用程序的执行不经过 WinRT。

WinRT 异步调用可能导致问题,比如要检查成百上千个文件名时。每个调用会抛出一个异常,致使调试体验非常不好。研发团队考虑以后解决这个问题。

关于.NET 或 WinRT 的未来版本,微软没有公布任何信息,但他们肯定会在未来某个时间公布的。现在他们能说的就是“Windows 8 有一个内置的 WinRT 版本”。

如果文件已经被桌面应用程序以互斥模式打开,Windows 商店应用程序就无法再打开。为了避免这种冲突,我们需要以读模式打开文件。WinRT 和桌面应用程序底层的文件系统是一样的。

异步操作是由 Windows 管理的专用线程池中一个独立线程执行的。从 UI 线程激发大量的异步调用时必须小心翼翼,因为当这些调用全部返回时对应用程序可能有严重的影响。如果一个应用程序要运行很多异步调用,为了避免系统超载,建议采用批处理方式执行。

WinRT 引入了一种新的字符串类型,以便有一种通用方式来支持它上面不同编程语言的需要。一种语言(如 C#、 C++ 和 JavaScript 等)中创建的字符串在向 WinRT 传递时不会被自动复制,出于性能考虑,只是传递一个引用,但必要的时候可以复制字符串本身。

为了确保应用程序与 WinRT 设备(如 Surface)的兼容性,Windows 商店的的认证过程只覆盖了一些基本测试,而且测试也不是非常详尽。要确保应用程序能在一个目标设备上正确运行,还需要执行大量的测试。

在 WinRT 中,微软没有提供可编程的方式来访问系统的某些硬件信息,比如电池剩余电量,这是为了避免开发者利用这种信息来修改 WinRT 应用程序的行为。其理念是让应用程序在不同的设备和系统状态上保持一致的行为。 Windows 8 Dev Portal 提供了一些应用运行的设备和 Windows 版本信息。

针对 WinRT 编写系统管理类应用程序非常困难,甚至是不可能的。系统禁止或限制了对某些系统资源的访问。

没有可编程的方式来查询应用程序是否使用了某一特定协议,也不能强制应用程序采用特定协议,比如通过文件协议设置确定哪个应用程序负责播放 mp3 文件。这个由用户来决定。

至于桌面应用程序和商店应用程序之间的通信,与会的一个开发者谈到:“我们花了很大的力气,就是不让它们通信。”唯一的通信方式是通过协议和文件类型关联,这是由用户控制的。

一个 WinRT 应用程序可以有多个视图,它们分别运行于独立的线程中。Windows 将两个这样的视图看做一个应用程序,这意味着用户无法使用系统的应用程序切换机制进行切换,不过有一个专门为应用程序独立开发的机制。

Windows 商店应用程序能够打开端口并通信,但不能使用 Web 服务器的 80 端口。

查看英文原文 Panel: Answers from Microsoft Developers Who Built WinRT

2013-01-03 06:031846
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 135.4 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

13. 《重学 JAVA》-- 抽象类和接口

杨鹏Geek

Java 25 周年 28天写作 12月日更

云智慧智能运维算法技术黑板报 | 内容合集

云智慧AIOps社区

机器学习 大数据 智能运维 算法实践 技术专题合集

观测云高分通过等保三级认证,信息安全体系建设领先行业

观测云

前端架构师的 git 功力,你有几成火候?

杨成功

git 架构师 GitFlow git 规范 签约计划第二季

卧槽!Spring中竟然有12种定义Bean的方法?

北游学Java

Java、 SP【ring

基于JSX的全新BDD工具 - Crius

RingCentral铃盛

Android C++系列:Linux Socket编程(二)网络套接字函数

轻口味

28天写作 Android; 12月日更

源码超度:String、StringBuffer、StringBuilder

无心水

StringBuilder StringBuffer String字符串

我也想说说日志,但是我不想说漏洞。

why技术

深入浅出 Java 中枚举的实现原理

恒生LIGHT云社区

Java 编程语言 枚举

Linux之rm命令

入门小站

Linux

在线JSON转flow工具

入门小站

工具

华为云消息队列服务荣获首个双擎可信云稳定性最高级认证

华为云开发者联盟

开源 安全 消息队列 可信云 DMS Kafka版

【SpringCloud技术专题】「Gateway网关系列」(1)微服务网关服务的Gateway组件的原理介绍分析

洛神灬殇

Spring Cloud api 网关 SpringCloud Gateway API Gateway 12月日更

百度搜索中“鱼龙混杂”的加盟信息,如何靠AI 解决?

百度Geek说

架构 AI 后端 百度搜索

纯 Git 实现前端 CI/CD

杨成功

架构 前端 CI/CD 签约计划第二季

解析WeNet云端推理部署代码

华为云开发者联盟

gRPC 语音 PyTorch ASR WeNet

前端开发之cypress的自动化实践

@零度

前端 Cypress

Linux一学就会之LVM管理和SSM存储管理器使用

学神来啦

Linux centos 运维 lvm linux云计算

使用 scipy.fft 进行Fourier Transform:Python 信号处理

华为云开发者联盟

Python 音频 信号处理 傅立叶变换 Fourier transform

「可观测产品首发」观测云免费版正式上线!开箱即用,观测无限

观测云

30个类手写Spring核心原理之MVC映射功能(4)

Tom弹架构

Java spring 源码

【软件开发】直播带货App如何开发

青山一叶秋

阿里巴巴、埃森哲、德勤三方圆桌对话——《与数字化先锋共绘创新蓝图》

大咖说

阿里巴巴 大咖说 数字经济 数智化

存储空间降为原来的1/7,TDengine在中移物联网轨迹数据存储中的应用

TDengine

数据库 tdengine 时序数据库

大数据开发之数仓工具Hive(一)

@零度

大数据 hive 数仓工具

iOS 开发者福音:iOS 项目也能支持 MQTT 5.0 啦!

EMQ映云科技

ios mqtt emq tvos osx

拥抱开源,共建生态!观测云 DataFlux-Func 代码全部开源

观测云

30个类手写Spring核心原理之AOP代码织入(5)

Tom弹架构

Java spring 源码

在中国如何打造一个有生命力的开源项目?

Jianmu

DevOps 持续集成 CI/CD 开源社区 持续部署

云原生时代,领域驱动设计思想(DDD)如何落地?

华为云开发者联盟

软件架构 架构设计 建模 领域驱动设计思想 领域模型

座谈:来自微软WinRT开发者的答案_Windows_Abel Avram_InfoQ精选文章