公告:由于近期本站访问量增加,单核VPS不足以提供足够的性能为各位服务,网站访问速度较慢。请考虑向我们捐赠,帮助我们升级服务器!

WinFS,虚拟文件夹与库:WinFS常用组件

来自BetaWorld 百科
跳转到导航 跳转到搜索

所有“我”均指对应文章作者,请仔细分辨。

有对引用原文作改动,删减。

文章结构系MacAdmin整理调整

WinFS Store

传统的文件系统将信息存储在目录结构中。除了作为文件系统之外,WinFS还提供将各种项(对象实例)存储在项数据存储中的功能,WinFS将这些数据存储在关系后端中。为数据提供对象或项表示形式会在平面文件中灌输行为。

同时,由于WinFS还附带了新的文件系统驱动程序(RsFxDrv.sys),因此WinFS项也作为文件支持的项提供。这允许你通过Win32 API作为文件流或通过WinFS API作为项访问WinFS项。项的两种表示形式(基于文件和基于项)使用WinFS基础结构保持同步。同步过程包括两个不同的步骤:

从文件中提取数据并填充项目(也称为升级) 将逐项数据保存到基础文件的流中(也称为降级) 这允许WinFS向后兼容基于NTFS和FAT的文件系统。这意味着用户永远不知道他或她是在WinFS上工作还是只是在NTFS上工作,因为更改是无缝的。您可以获得新文件系统的额外功能,同时完全向后兼容。[1]

Microsoft Rave

Microsoft Rave旨在让您能够使用WinFS轻松同步数据。您可以在运行WinFS的多台计算机之间以及在不同用户之间进行同步,同时仅向要与其同步数据的计算机授予访问权限。WinFS能够同步您的任何数据(联系人、电子邮件、文档、照片等),无论哪个应用程序创建这些数据。Rave允许您使用Windows 资源管理器选择数据,并设置其进行同步。然后,您可以邀请同时安装了WinFS的朋友和同事同步您的数据。因此,您可以轻松地共享照片、联系人和文档,并自动将更改复制到其他人。

Microsoft Rave的文档包含在CD中,因此我不会谈论很多实际使用Rave的信息。相反,我将重点介绍在WinFS顶部开发Rave的经验。首先,我们认识到在不同用户之间提供安全共享体验的重要性。接下来,我们希望确保当任何计算机上发生对数据的更改时自动执行复制。此外,有必要给予对数据的各种访问级别。但是,关键是,一旦设置了同步,就不需要进一步管理,并且数据应始终在所有计算机上保持最新。

WinFS同步处理对等项更改枚举和应用程序、冲突检测、自动冲突解决和冲突日志记录的所有平台级别详细信息。这些在WinFS SDK中介绍。这代表着微软的巨额投资,使应用程序能够轻松地分发其数据。Rave构建在平台级同步服务之上。Rave 实现全网状网络拓扑,使用WinFS同步将每个用户连接到同步文件夹的每个其他用户。相互同步的用户和计算机(共享,确实)列表本身通过"社区"同步。因此,如果我邀请Shishir与WinFS文件夹同步,则成员身份列表将更新为包括Shishir。此成员资格列表将复制到与该文件夹同步的所有现有用户。(对于对详细信息感兴趣的用户,有一个隐藏的WinFS项目(副本),用于存储所有同步元数据。此项目存储在同步文件夹下方。Rave在此副本下存储成员资格列表和其他配置数据。

简言之,复制的数据将保护如下。首次为文件夹启用同步时,Rave会为该文件夹创建新的WinFS共享(类似于Windows共享)。它还创建三个安全组,每个角色都支持 Rave 支持(读者、编写器和管理器 – 这些组在 Rave 应用程序文档中进行说明。如果成员资格列表发生更改(本地或由于对列表的更改已同步),Rave将检测更改(使用WinFS Watcher通知),并更新相应文件夹的安全组的成员身份。如果您已经安装了Rave,您可以使用WinFS存储工具查看共享及其安全权限。您还可以使用"计算机管理"工具查看每个安全组的成员身份,并验证 Rave 是否正确设置它。最后,Rave 还设置了项目级安全性,以仅授予这些安全组访问权限。与Windows共享一样,WinFS访问检查在共享级别和数据级别执行。Rave会自动处理所有这些详细信息。

此外,Rave会使用WinFS观察程序通知API等待数据更改发生。此API使检测数据何时发生变得非常简单。我预计这(与WinFS同步服务一起)能够启用一种易于构建的工作流类型应用程序,这些应用程序可以对在其他计算机上所做的更改做出反应,然后在本地同步。例如,考虑一个工厂,其中每个单元定期将其状态记录到本地WinFS中,然后将这些数据同步到管理计算机中,该管理计算机可以对各种情况做出反应,甚至可能将配置更改同步回各个单元。当然,这样的应用程序可以在没有WinFS的情况下编写,而且实际上存在于今天。但是,WinFS及其丰富的类型系统、通知和同步服务使这种类型的应用程序更易于构建。

有几个东西可以添加到Rave,没有进入测试版。通过使用WinFS文件系统同步适配器在WinFS和外部数据(如文件系统)之间启用同步就是其中之一。另一个领域是丰富的冲突策略和解决用户界面。WinFS对冲突发生时发生的情况提供了非常详细的控制。Rave当前在并发更新的情况下使用最后一个写入者获胜策略(在并发创建的情况下使用合并策略,这是一个我不会进入的主题。

当我考虑在没有像WinFS这样的强大存储平台的情况下开发像Rave这样的对等应用程序时,我认为"几年"而不是实际需要几个月的时间。希望这篇文章有助于描述为什么-没有其他通用存储或文件系统提供同步支持,数据更改通知,和安全的WinFS。在没有这些服务的情况下实现像Rave这样的对等数据同步应用程序确实是一项艰巨的任务。[2]

WinFS类型浏览器

当我开始编写早期WinFS应用程序时,我想快速浏览所有架构类型。文档很有用,但扫描速度并不快。我想"看到"一个类型的所有荣耀(例如,它的类型层次结构,方法,属性,它相关的其他类型等),这样我就可以编程与我的应用/域最相关的WinFS类型。

随着应用的复杂性增加,我发现我需要创建自定义WinFS类型,因为WinFS没有我想要的类型。果然,这次我遇到了一个略有不同的问题:我不完全确定我的基WinFS类型应该是什么。我最后在反射器.NET和VS 2005中查找潜在的WinFS基类型,以决定哪种类型具有可以在自定义类型中"重用"的方法/属性。花了一段时间来理解我的选择,并作出正确的选择。

基于此经验,我写了一个名为WinFS类型浏览器的小工具,以帮助我解决在构建应用程序时遇到的这些问题。这个想法是编写一个工具来帮助我可视化WinFS架构-而不是StoreSpy显示我WinFS数据。我的目标是让开发人员在熟悉的VS样式GUI中可视化WinFS架构,从而帮助减少编写WinFS应用程序的时间。我的队友开始使用WinFS类型浏览器,同时编写他们的应用程序,并给了我大量的反馈,我喂回到工具。WinFS类型浏览器适用于与WinFS一起发货的架构以及您自己的自定义架构。该工具在WinFS Beta 1 CD上的"不受支持的工具"目录中提供,并包含一个简单的帮助文件,帮助您入门。[3]

OPath

对于那些安装了WinFS并有机会针对WinFS API编写一些代码的人,您可能已经注意到使用这种称为OPath的查询语言。

我发现自己必须构造大量的查询。键入查询时,OPath查询字符串中的小错误(如拼写错误、语法错误或额外的括号)可能会导致运行时错误。此外,我发现我必须编写一个测试应用程序,只是为了玩一个查询场景,看看将返回什么结果。这就是OPath出生的原因。

当我创建该工具时,我想要一个GUI接口,在那里我可以快速设置目标对象并开始编写查询,并马上知道查询字符串中的任何错误。使用OPather做到这一点是一个快照。打开该工具,选择要开始查询的目标对象类型,然后开始编写OPath查询。甚至还有一个智能感知功能,可帮助您指导您完成简单的查询。结合从反馈中成长起来的其他功能,如将结果绑定到DataGrid、构建StorageView以及转储所有代码进行书面查询的能力,此工具肯定可以帮助初学者和高级用户编写一个应用程序来查询WinFS Store。

该工具在WinFS Beta 1 CD上的"不受支持的工具"目录中提供,并包含一个简单的帮助文件,帮助您入门。[4]

WinFS Sync

Microsoft Rave的框架,WinFS Store同步平台。

WinFS 数据同步专题

Project Orange

我们正在寻找一个独特的人,可以混合技能从可用性,设计和程序管理,以率先定义这个新的应用程序。成功的应聘者将富有创造力,并致力于以全新的方式解决最终用户交互设计问题。

考生在以用户为中心的界面设计和演示的过程和执行中应具有经验。由于这将是一个小型的、快速移动的团队,因此应聘者应该是能够同时平衡多个领域工作的多任务人员。在UI设计、数据可视化、V1项目/启动和最终用户桌面应用程序方面的经验是一大优势。应聘者应具有设计(交互设计、工业设计、视觉通信或相关领域)、HCI、人为因素或类似领域的学位或重要工作经验。请准备好提供一个投资组合进行审查。计算机科学或相关技术领域的BS/MS学位是奖金,但不需要。[5]

最后还是不知道这究竟是个啥 ——MacAdmin

参考资料