结构化存储课件.pptVIP

  • 0
  • 0
  • 约5.68千字
  • 约 24页
  • 2022-03-23 发布于山西
  • 举报
十五. 结构化存储;1 概念;结构化存储把文件系统的概念引入到文件内部。从而在存储结构上支持多应用程序的并发访问。 主要思想:在文件内部构造一个树状层次结构。由存储对象和流对象构成。根节点为根存储,根存储下面可以有子存储或流对象。子存储下面可以再有子存储或流对象。存储对象本身不包含信息,它是子存储和流对象的容器。流对象是叶子节点,是数据的载体。这种结构称为文件内部的文件系统,这样的文件称为复合文档。 Word Excel PowerPoint Visio 等文件都是复合文档。 结构化存储使得多用户??便地并发访问一个文件。各个应用访问属于自己的存储对象。 部分访问。增量访问。;1.3 存储对象和流对象;1.4 结构化存储特性;1.4.2 事务机制 创建、打开存储和流时可以指定事务模式。 只有Commit后,所有的变化才提交到上级。revert可以恢复到上次commit以来的状态。 根存储上commit则会写到磁盘。revert会恢复创建、删除、修改子对象到原先的状态。 事务可以嵌套。 事务的嵌套以嵌套标志为基础而不完全取决与层次结构。(中间层次可能不使用事务) 事务针对写模式而不是读模式 事务的实现是在内存中或临时文件中保存文件拷贝的方式。所以消耗资源。 在直接模式下,revert操作没有意义,commit操作仅仅对根存储相当于flush操作。在此模式下,我们不能假设所有的操作会马上影响到文件系统,修改有可能被缓存 ;1.4.3 增量访问 减少保存和打开文件减少操作时间。必要时才访问。 降低了系统对资源的要求。 1.4.4 注意事项: 必须从根存储出发使用Open*或Create*逐个访问才能到达底层。 文件碎片。(调用根存储CopyTo解决);2 复合文档 结构化存储的实现;COM库提供了缺省的基于文件句柄的LockBytes对象。可利用此对象建立复合文件。 COM提供了基于内存的LockBytes对象,可利用此对象建立基于内存的复合文档。 COM允许应用系统实现自定义的LockBytes对象,并建立复合文档。 文件、内存、任何可以抽象称为字节序列的存储设备都可以作为复合文档的载体。不同的载体可以使用统一的存储结构,使用同样的存储对象和流对象。 ;复合文档的模型;2.2 创建基于内存的复合文档;使用缺省的基于文件句柄的LockBytes对象创建一个复合文档。 WINOLEAPI StgCreateDocfile( const OLECHAR FAR* pwcsName, //复合文档路径 DWORD grfMode, //访问模式 DWORD reserved, IStorage * *ppstgOpen);//返回指针 ;2.4.1 打开文件复合文档: WINOLEAPI StgOpenStorage( const OLECHAR FAR* pwcsName, //复合文档路径 IStorage FAR *pstgPriority, //原先打开的复合文档 DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage FAR * FAR *ppstgOpen); //返回指针 2.4.2 打开内存复合文档: WINOLEAPI StgOpenStorageOnILockBytes( ILockBytes FAR *plkbyt, // 底层LockBytes对象 IStorage FAR *pstgPriority, //原先打开的复合文档 DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage FAR * FAR *ppstgOpen); //返回指针 ;3 复合文档的CLSID;4 永久对象;COM定义了四个常用的永久接口。IPersistStorage, IPersistStream, IPersistStreamInit 和IPersistFile(接口定义见p225) 所有的永久接口都包含三个基本的函数IsDirty Load Save,虽然参数各不相同,但含义都一样。Load成员函数使得永久对象从存储介质中装

文档评论(0)

1亿VIP精品文档

相关文档