快速业务通道

COM原理及应用---- 结构化存储

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29

1、结构化存储

COM的结构化存储(structured storage)机制,也称为永久存储(persistent storage)机制。结构化存储可以说是软件存储技术的一个重要进展,COM针对组件软件的需要,在文件系统的基础上,提出了结构化存储的概念。利用结构化存储,组件程序之间可很好地协同工作,一个组件程序可以与另一个组件程序共享同一个文件,就如同一个应用程序与另一个应用程序共享同一个磁盘文件系统一样。

COM定义了结构化存储的规范,包括一组接口和实现这些接口成员函数的一些规则;同时COM也提供了结构化存储的实现,即复合文档技术。复合文档技术是 OLE的基础。OLE最初的目标是在文档中嵌入或链接对象,当然现在OLE的发展已经超出了这个范围,但复合文档仍然是OLE的基础存储技术。

2、结构化存储的引入

组件化程序设计方法把应用系统设计成多个组件程序,如何在这些组件程序之间以共享方式访问同一个文件是组件化程序设计必须要解决的问题。而多个组件通过文件句柄访问共享文件难以实现,结构化存储技术“借用”文件系统的概念,在文件内部构造了一个类似于文件系统的树状层次结构,解决了这一问题。

结构化存储的层次结构的节点可以是两种对象:存储对象和流对象,每个存储对象或者流对象都是一个可独立进行读写操作的对象,组件程序只对它拥有的节点对象进行操作。从应用系统整体上看,这些组件程序在共享访问同一个文件。

3、文件系统

操作系统的诞生把应用程序与底层存储设备隔离开来,操作系统为应用程序的运行提供了基本的抽象环境,它可以处理所有与存储设备有关的基本操作。同时,操作系统引入了文件系统的概念,允许多个应用程序共享同一个存储设备。而且,操作系统为应用程序提供了一种抽象的流式存储结构,应用程序仍然独立地访问它自己的存储空间,不同应用程序相互之间不受干扰。

4、文件系统与结构化存储的框图

5、存储对象和流对象

对于一个完整的存储操作来说,它被分为两个层次:应用程序调用API函数;操作系统提供API函数的实现。COM库提供了结构化存储的实现,它提供了一组接口和API函数供组件程序调用来完成实际的存储操作。因此,结构化存储定义的存储对象和流对象由COM库实现,应用程序或者组件程序并不需要实现这两个对象,就好比应用程序不需要实现文件句柄或者目录对象一样。

流对象非常类似于单独的磁盘文件,它也是进行数据读写操作的基本对象,利用流对象可以保存各种类型的数据,它有自身的访问权限和一个独立的搜索指针。流对象也用一个字符串作为其名称,就好像文件名一样。流对象是一个由COM实现的组件对象,它实现了基本的COM接口IStream,应用程序通过 IStream接口访问流对象,进行各种数据访问操作。

存储对象类似于目录对象,它也有一个字符串名称,但它本身并没有存储数据信息,它作为其子存储对象和子流对象的容器,只记录了这些子对象的信息。存储对象暴露IStorage接口,客户程序通过IStorage接口对存储对象进行操作。

应用程序或者组件程序可以通过结构化存储机制共享同一个复合文件,存储对象和流对象也可以在这些程序之间被共享访问,即使这些程序运行在不同的进程中。

6、结构化存储特性――访问模式

存储对象和流对象支持两种基本的访问模式:直接访问和事务访问模式。在直接访问模式下,程序对存储对象或者流对象的修改操作马上生效;而在事务模式下,程序对存储对象或者流对象所作的修改被缓存起来,只有当提交(Commit)时才真正有效,如果调用Revert成员函数,则可以恢复到上次提交或刚打开时的状态。

7、结构化存储特性――事务机制

在结构化存储的树状层次结构中,事务特性可以适用于所有层次上的对象,因此,事务特性可以嵌套使用。

事务机制需要消耗较多系统资源。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号