Windows 8 ‘Contracts’ 研究——为何、是什么以及如何实现?






4.53/5 (9投票s)
本文研究 Windows 8 的“契约”——它们为何被引入?它们到底是什么?以及如何创建它们?
引言
据微软开发团队称,Windows 8 是对现有 Windows 操作系统的全面革新。微软不遗余力地增强现有操作系统的功能,以实现跨不同硬件架构的流畅、快速、一致的操作系统,并充分利用云计算的优势来实现个性化使用。
列举一些 Windows 8 的特性,我们有以下几点:
- 支持 x86 PC 和 ARM 平板电脑
- Windows To Go,Windows 8 中的一项新功能,它允许企业管理员创建包含完整、受管理的 Windows 映像的 U 盘,用户可以使用这些 U 盘在任何支持 Windows 7 或 Windows 8 的计算机上启动和运行 Windows。
- Windows 应用商店,为了与苹果竞争,Windows 已确认将推出 Windows 应用商店,类似于 Mac App Store,它允许用户浏览 Windows 应用程序,同时开发人员可以将他们的 Metro 风格应用发布到 Windows 8 设备上。
- 流畅、快速且最佳的用户界面。谈到 UI,Windows 8 绝对拥有令人惊叹的交互式 UI,它已被广泛重新设计为“Metro 风格”设计,向您展示最重要的信息,体现简洁性,并让您完全掌控它。该 UI 设计旨在提供流畅直观的交互和导航,支持(多)点触控、鼠标和键盘。
- 合同
- 等等。
此列表并非详尽无遗,在本文中,我们将重点介绍 Windows 8 中引入的第五个特性“Contracts”,该特性使应用程序(由不同的未知开发人员开发)能够相互通信。 简单来说,这里的 contracts 是开发人员的剪贴板,一个应用的通用剪贴板和服务的集合,它们都回溯到 Internet Explorer 10。
注意:在深入探讨 contracts 之前,如果您是 Windows 8 环境的新手,我建议您先充分了解 Windows 8 Metro 风格 UI 以及它将为开发人员提供哪些新特性和职责。
为什么是“Contracts”?
这个问题的答案很简单;“因为用户经常遇到他们渴望与他人分享或在其他应用程序中使用信息”。在 Windows 8 的 Metro 界面中,一次只有一个应用程序占据屏幕,这将是开发人员和用户的福音,有助于提高在 一次只有一个应用占据屏幕是必要情况下的实用性。
那么“Contracts”到底是什么?
Windows 部门总裁 Steven Sinofsky 在 Build 大会上的主题演讲中提到 contracts 是 Windows 8 开发平台的一个关键要素。
据他的话说,“应用程序应该能够在彼此一无所知的情况下协同工作”。他举了一个例子,使用了 Windows 8 中一些不同的“charms”(即主图标)。(五个 charms 是 Devices、Settings、Share、Search 和 Start。)实现 contracts 的应用程序和服务(包括即将推出的 Windows Live 应用/服务混合体)将能够利用 Internet Explorer 10 的数据包,使用户能够停留在他们正在共享、搜索等的应用程序中。在 Windows 8 中,有共享 contracts、搜索 contracts 和“选择器”contracts。
Sinofsky 还暗示,“contract”最接近的比喻是剪贴板。(据历史记载,前微软首席软件架构师 Ray Ozzie 早在 2006 年就提出了“通用剪贴板”的概念——Ozzie 的通用剪贴板是在知识共享许可下发布的,它专注于通过 RSS 提要、其他 XML 数据和桌面剪贴板的组合来连接网站和桌面应用程序。目前尚不清楚 Windows 8 团队是否依赖 Ozzie 的愿景和代码,如果依赖的话。)
在 Windows 8 中,应用程序可以通过 contract 公开功能。contract 详细说明了提供的功能需要什么才能工作以及它将产生什么。将其视为 Apple 的 Automator 中的输入/输出范例;但它可以被系统上的任何应用程序调用,而不仅仅是通过像 Automator 这样的单一中央机构。更重要的是,这些功能可以无缝调用,用户不必离开当前应用程序,但仍然能够利用其设备上的全部功能。
关于“Contracts”的一点技术性
在 Share contract 中,“货币”(这里的货币指的是源应用程序和目标应用程序之间的交易项)被称为 DataPackage
。数据可以以多种不同格式捕获和共享,包括文本、URI、HTML、图像和其他可扩展格式。
在 Share 场景中,源应用程序可以包括新闻、杂志、媒体、游戏、社交网络数据、通过笔记程序捕获的笔记以及存储在云中的数据。微软期望开发人员关注的目标类别包括社交网络、通信、娱乐、打印服务、“设备连接”场景、笔记和云存储。
在这里,Windows 负责繁重的工作,这样应用程序就不需要互相了解太多,就能创造出惊人的体验!
Contracts 的实现涉及三方
- 源应用程序:这是数据的来源。
- Share Broker:这是一个与源应用程序和目标应用程序通信的中间层。
- 目标应用程序:这些是数据的接收者,并在它们的 UI 上下文中显示。
注意:在理想情况下,每个应用程序都应该是完美的源和最佳目标。因此,有时我们将源应用程序称为“共享源应用程序”,将目标应用程序称为“共享目标应用程序”。
因此,“Share target”指的是同时充当目标并共享信息的应用程序。成为 Share target 将增加您的应用程序或服务的可用性,并为您的服务提供用户关心的内容。
从源到目标的共享涉及的四个步骤如下图所示:
步骤 1
源应用程序必须使用 datatransfer manager 注册自身。 现在,Share Broker(作为源应用程序和目标应用程序之间的中介)将在用户请求时代表目标应用程序向源应用程序发送一个事件。源应用程序通过开始填充 datapackage 来响应该事件。
第二步
源应用程序在完成所有异步操作后,通过 datapackage 完成填充,然后向 Share Broker 返回 datapackage。Share Broker 会进一步过滤从源应用程序接收到的数据,并根据用户的标准将其建模为链接。
步骤 3
现在,用户可以在屏幕上看到来自源应用程序的搜索结果。此时,用户可以单击他们想要探索的所需结果。因此,一旦他单击链接,Share Broker 就会将数据通知目标应用程序,目标应用程序会准备其用户界面以显示其在用户界面上接收到的结果。
步骤 4
这是最后一步,目标应用程序显示由源应用程序数据组成的结果,并向 Share Broker 报告完成通知。
更多关于 ‘datapackage’
数据包可以包含任何数据。源应用程序应包含尽可能多的数据表示形式,以最大化目标应用程序的集合。
代表 datapackage 构建的伪代码如下:
源应用程序的注意事项
应避免过度使用此 contract。例如,“查找”在工作表中的功能不应与“Search”charm 相关联。源应用程序应满足的功能子集是:
- 监听并处理 Share 事件以参与
- 内容应以两种方式共享:
- 隐式 – 用户选择 Share 而不进行选择
- 显式 – 用户在应用程序中选择内容,然后选择 Share
- 构建最佳结果的数据包
最受期待的源应用程序类别包括新闻、杂志、媒体、游戏、社交网络、笔记、云存储等。
设置共享源应用程序的伪代码
共享目标应用程序的注意事项
共享目标应用程序应满足的功能子集是:
- 注册为 Share target 并指定您接受的格式
- 构建您的应用程序 UI,使其在 Share 体验中表现最佳
- 在您的应用程序中选择要共享的人或地点
- 快速、轻量级的体验
- 使用
DataPackage
定制用户体验 - 报告完成
- 返回 Quicklink
预期的共享目标应用程序是社交网络、通信、娱乐、打印服务、设备连接、笔记、云存储等。
设置共享目标应用程序的伪代码
结论
以上文章并非 contracts 的精确实现,因为该概念本身是新的,但它将概述 contracts 是什么以及我们将在未来几天内如何处理它们。伪代码并非精确实现的组成部分,而是我们将在 Metro 世界中开发应用程序时看到的图景的快照。