抢先体验微软最新文件系统WINFS( 二 )
对于一个Relationship来说 , 它也可以与Type那样拥有自己的Properties/Fields 。举个例子 , 比如一个Contact与一个Message之间存在一个Participant的关系 , 而这个关系可以有一个nickname的属性 。
在WinFS中 , 有两种Relationship , 一种叫Holding Relationship , 一种叫Reference Relationship 。1.Holding Relationship
在这种关系中 , 几个源实例可以拥有同一个目的实例 , 只要还有源实例存在 , 关系就存在 。其还具有以下几个特点:
(1)每一个实例都必须要有一个以上的Holding Relationship指向它;
(2)具有Holding Relationship的实例间必须是处于同一个store中 。(对于一个WinFS的Item来说 , 它完整的UNC名空间的形式是"Machinestoresharefolder1folder2...folderNitem");
(3)源实例和目的实例必须同时存在 , 不能允许Dangling Relationship的存在 。
(4)实例间的关系不能形成回路 , 构成一个有向非循环图(Directed acyclic graph , DAG) 。
(5)Holding Relationship采用层次式的命名空间(如上所示) , 每一个这样的Relationship都会指明目标实例的名称 , 而每一个拥有这种Relationship的源实例的名字则必须唯一 。
2.Reference Relationship
在这种关系中 , 可以允许存在Dangling Relationship , 可以允许实例分布在同一个store或者不同的store中 , 实例间的关系可以形成回路 。比如一个Document类型的实例用一个author的关系指向一个contact类型的实例 , 而这个contact类型的实例也可以用一个revIEwer的关系指向Document类型的实例 。
以上说的都是一些很理论性的东西 , 这时会想 , 以上说的内容是通过怎样的形式表现出来呢?在操作上 , 在编程上 。
在defaultstore目录下有一个Schemas的目录 , 发现里面是一些Item , 比如Audio、Contact、Mail等等 , 与上面所说的Type的名称相对应 。再翻阅资料 , 发现WinFS有专门的基于XML语法的Schemas Definition Language 。比如Contact类型有Contact.xml作为其类型定义 。而Person的定义为
ExtendsType="Core.Contact" ExtendsVersion="1">
TypeMajorVersion="1">
TypeMajorVersion="1">
...
编程的时候 , 只要将System.Storage加载进来 , 便可进行对WinFS的编程 。比如Contact.ListContacts()方法是将storage中所有的Contact都列出来 , 创建一个contact的代码如下:
//This actually create the person object.
Person person = Person.CreatePersonalContact(context);
person.DisplayName = name;
//This populates the person object with some valuable data
//such as an e-mail address and a phone number
SmtpEmailAddress email = new SmtpEmailAddress("shanede@microsoft.com");
CategoryRef primaryEmailCategory = new CategoryRef(GeneralCategorIEs.Primary);
email.Categories.Add(primaryEmailCategory);
person.PersonalEmailAddresses.Add(email);
TelephoneNumber phone = new TelephoneNumber();
phone.AreaCode="425";
phone.Number="555-1234";
person.PersonalTelephoneNumbers.Add(phone);
//This actually updates "WinFS" with the new data.
context.Update();
可惜 , 在这个目录下的Item都是0字节的无扩展名的 , 不知道到底是什么的东西 , 不象Schema文件 。用搜索查找contact.xml文件也查找不到 。找了一些与WinFS相关的程序 , 有纯C#的 , 也有使用了Avalon的 , 然后用MSBuilding编译 。程序编译成功 , 但是运行出错 。即使是创建新Item、更改Item属性这类简单的程序也不能运行成功 。看来这个版本的Longhorn中的WinFS还有许多的限制 。
推荐阅读
- 3.35升级到4.44版本新鲜体验
- Windows 2003系统加速十四招大法
- R2使用指南之四:DFS 管理
- Windows Server最新路线图抢先看
- 用小5体验moto通用型收音耳机
- Win 2003操作系统14招加速大法
- G118使用后体验
- M6使用体验
- 夏新M6 使用新体验
- LG7050一天的体验报告