写点什么

Adobe AIR 1.0——本地操作系统集成问题

  • 2008-02-03
  • 本文字数:1189 字

    阅读完需:约 4 分钟

Adobe AIR 平台经常被人诟病的是它缺乏与本地操作系统的集成,而这一点对于构建桌面应用程序通常都是必不可少的。随着 AIR 1.0 版的发布日趋临近,Adobe 的 Mike Chambers 上周发表了一个概念性的演示,告诉开发者们如何绕过这个问题。

Adobe AIR 最常被请求增加的两项特性,一是从 AIR 应用程序里启动本地可执行文件,另一项是在 AIP 应用程序里集成本地库的能力。但很不幸,这两项特性都不包含在 Adobe AIR 1.0 当中。 然而,这并不意味着你就无法让 AIR 应用程序与底层操作系统集成得更加紧密了。

……

这个项目名为 CommandProxy,它在 AIR 应用程序和底层操作系统之间充当了一个通信代理,理论上它也可以作用于其他基于 Web 的桌面运行时(例如 Mozilla Prism)。不过注意,这个项目完全没有得到 Adobe 的支持。它仅仅是我搞起来的一个验证性的项目,目的是帮助开发者们理解扩展 AIR 功能的一种可行途径,让 AIR 不再局限于运行时所提供的功能。。

Chambers 所作的演示相当直观且易于理解,不过它是否充分地揭示了 AIR 的整个本地问题了呢?Microsoft 传道士 Scott Barnes 认为答案是否定的,他在给 Chambers 的回应中批评了 AIR 平台在本地支持上的不足。

我不知道为什么 AIR 不想向本地 OS 开放它的边境,这简直是捡芝麻丢西瓜的写照。要想凭同一个代码包走遍 N 种平台,肯定有些东西是不得不放弃的。对操作系统的本地访问就是其中之一。任何打算超越自娱自乐阶段的桌面平台,都必须严肃地关注(决定性的)安全问题,并确保建立起行之有效的方案。

Barnes 在跟贴中进一步详述了他对 Chambers 介绍的 CommandProxy 的顾虑:

命令代理和 AIR 应用程序之间的信道是一个潜在的弱点。应用程序的开发者应该对机器中遍布着不安全的跨进程通信机制而感到担忧。假设一个进程正监听着一个命名管道,而这个命名管道没有 ACL 也没有对传入通信的任何验证,那么当有人向管道发送一些垃圾的时候,监听中的进程就完全暴露在所有类型的攻击之下。在使用命令代理的时候,你怎样保护它,防止它变成一个通用的进程启动器呢?

接着 Chambers又详细回应了 Barnes ,一开头就对他自己的概念演示进行了直率的分析:

实际地去构建并部署一个使用了命令代理的应用程序到底可行性如何呢?我的想法是在大多数情况下,由于开发和分发上的复杂性,这种方法是不可行的,虽然在某些情况下它会很有用。

Chambers 最后提到了 Adobe 对这个影响深远的问题的解决计划:

最后,长期的方案(和计划)是让 AIR 运行时本身提供开发者所需的低级功能。AIR 1.0 已经通过若干 API 提供了对底层操作系统的访问,这些 API 的覆盖范围会随着新版本的发布一步步地扩大。

那么 InfoQ 社区中的开发者和架构师们,这方面的顾虑是否阻碍了你将 Adobe AIR 平台纳入考虑呢?你是否要等到 Adobe 完全解决了本地集成问题,才会考虑用 AIR 平台实现桌面应用?

查看英文原文: Adobe AIR 1.0 - Native OS Integration Problem

2008-02-03 17:001814
用户头像

发布了 225 篇内容, 共 65.2 次阅读, 收获喜欢 50 次。

关注

评论

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

【愚公系列】2022年10月 Go教学课程 036-类型断言

愚公搬代码

10月月更

谈谈曾经做的一个测试报告平台(1)

MegaQi

Python 测试平台 10月月更

云计算商业周期超过其他产业,技术的天花板是商业机遇

B Impact

【ArchSummit】众安金融微服务架构演进实战

小明Java问道之路

架构 微服务 全球架构师峰会 ArchSummit 10月月更

git fetch&pull讲解 | Git

Appleex

git

数据湖(八):Iceberg数据存储格式

Lansonli

数据湖 10月月更

AfterShip 国际化获客冷启动经验:痛点、借力、连接

B Impact

中东地区被低估,沙特偏好企业服务和云,新加坡稳定,东南亚复杂|出海

B Impact

如何提高Docker容器的安全性

乌龟哥哥

10月月更

docker数据卷使用

忙着长大#

,docker

阿里云无影向RPA开闸,金智维、影刀、弘玑已落地|生态商机

B Impact

JS事件,你真的懂吗(捕获,冒泡)?

乌龟哥哥

10月月更

趁年少,多读书

暮春零贰

读书笔记 10月月更

golang中的字符串

六月的

golang 字符串

一起学习 Go 语言设计模式之设计模式概述

宇宙之一粟

设计模式 Go 语言 10月月更

微服务的常见架构方式

乌龟哥哥

10月月更

“程”风破浪的开发者|区块链与Web3.0辨析

timerring

区块链 Web3.0 10月月更 “程”风破浪的开发者 Web2.0

C++精通之路:红黑树的应用(模拟实现map/set)

雪芙花

c c++ 10月月更

【web 开发基础】PHP 快速入门(7)-PHP 运算符之比较运算符详解

迷彩

10月月更 PHP基础 比较运算符

ubuntu使用apt-get安装docker

忙着长大#

Ubuntu20.04

消息推送渠道那么多,该怎么设计消息中心?

产品海豚湾

产品经理 产品设计 消息系统 产品架构 10月月更

“程”风破浪的开发者 | 基建及团队建设的方法论

甜点cc

团队管理 学习方法 基建 “程”风破浪的开发者

liunx:进程概念

雪芙花

c c++ 10月月更

[HCTF 2018]WarmUp题解(较为详细的)

w010w

Web CTF 每日一题 10月月更

“程”风破浪的开发者 | 关于web3.0远离银手镯比什么都重要!

王中阳Go

区块链 NFT Web3.0 10月月更 “程”风破浪的开发者

HashMap 源码分析(五)

知识浅谈

HashMap底层原理 10月月更

再聊加班的感受

李印

成长感悟

C++进阶之哈希(unordered_map/set的使用及其模拟)

雪芙花

c c++ 10月月更

2022年中国数字疗法市场洞察

易观分析

医疗

Web3.0杂谈-#008(55/100)

hackstoic

Web3.0

极客时间运维进阶训练营第一周作业

老曹

Adobe AIR 1.0——本地操作系统集成问题_Java_Jon Rose_InfoQ精选文章