- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
1-24十五.结构化存储概念文件系统从文件系统到结构化存储存储对象和流对象结构化存储特性复合文档结构化存储的实现LockBytes对象.创建基于内存的复合文档创建基于文件的复合文档打开复合文档复合文档的CLSID永久对象例子:MFC实现永久对象例子:复合文档
2-241概念1.1文件系统在操作系统诞生之前,应用程序处理底层的存储设备。操作系统引入了文件系统。把应用系统和底层的存储设备区分开来。多个应用可以同时使用一个存储设备。操作系统为应用程序提供了抽象的流式的存储结构。文件系统把存储设备按照树状结构重新组织起来。如UNIX的文件系统,Windows文件系统。目录,文件。目录是文件的容器。文件的数据可以存储在不连续的存储区域。文件系统会管理这些区域。操作系统提供了一组系统调用(Unix)或系统API(Windows)给应用系统。应用系统通过系统调用或API来操作文件,从而操作存储设备。应用系统使用文件描述符(Unix)或文件句柄(Windows)来代表打开的文件。多个进程可以同时访问一个文件。这些进程需要采用同步机制来保证操作的一致性。事实上,这种处理很困难。
3-24结构化存储把文件系统的概念引入到文件内部。从而在存储结构上支持多应用程序的并发访问。主要思想:在文件内部构造一个树状层次结构。由存储对象和流对象构成。根节点为根存储,根存储下面可以有子存储或流对象。子存储下面可以再有子存储或流对象。存储对象本身不包含信息,它是子存储和流对象的容器。流对象是叶子节点,是数据的载体。这种结构称为文件内部的文件系统,这样的文件称为复合文档。WordExcelPowerPointVisio等文件都是复合文档。结构化存储使得多用户方便地并发访问一个文件。各个应用访问属于自己的存储对象。部分访问。增量访问。1.2从文件系统到结构化存储
4-241.3存储对象和流对象COM库提供了结构化存储的实现,它提供了一组接口和API函数,应用程序利用这些接口和函数来完成结构化存储操作。结构化存储定义的存储对象和流对象由COM库实现,应用程序不需要实现这两个对象。流对象实现了IStream接口:classIStream::publicIUnknown(P207)Read,Write,Seek,CopyToCommit把所有变化提交到包容该流对象的存储对象。Revertrollback取消上次提交以来的所有操作。针对事务模式的流存储对象实现了IStorage接口:classIStorage:publicIUnknown(P208)CreateStreamOpenStream操作子流对象返回IStream接口指针CreateStorageOpenStorage操作子存储对象,返回IStorage接口指针EnumElements枚举所有的子流对象和子存储对象。commitRevert。针对事务模式的存储。Stat获取存储对象的信息。
5-241.4结构化存储特性创建、打开存储和流时可以指定事务模式。只有Commit后,所有的变化才提交到上级。revert可以恢复到上次commit以来的状态。根存储上commit则会写到磁盘。revert会恢复创建、删除、修改子对象到原先的状态。事务可以嵌套。事务的嵌套以嵌套标志为基础而不完全取决与层次结构。(中间层次可能不使用事务)事务针对写模式而不是读模式事务的实现是在内存中或临时文件中保存文件拷贝的方式。所以消耗资源。增量访问减少保存和打开文件减少操作时间。必要时才访问。降低了系统对资源的要求。
6-242复合文档结构化存储的实现2.1LockBytes对象.实现结构化存储:根存储与底层的存储介质结合实现存储对象和流对象。复合文档(CompoundDocument)提供“LockBytes”对象来实现根存储与底层介质的联系。底层介质可以是磁盘文件、内存或用户自定义的虚拟空间。LockBytes对象是所有存储介质的一种抽象的表达方式。存储介质描述称为一般化的字节流,LockBytes对象负责从字节流中读写字节。LockBytes对象实现了ILockBytes接口以提供基本的读写操作。
7-24COM库提供了缺省的基于文件句柄的LockBytes对象。可利用此对象建立复合文件。COM提供了基于内存的LockBytes对象,可利用此对象建立基于内存的复合文档。COM允许应用系统实现自定义的LockBytes对象,并建立复合文档。文件、内存、任何可以抽象称为字节序列的存储设备都可以作为复合文档的
文档评论(0)