System.IO.Packages 初探

来源:互联网 发布:mac查看icloud备份 编辑:程序博客网 时间:2024/05/22 07:41
作为.Net Framework 3.0 加入的一个新功能,提供一种将数据对象打包访问的方法。
 
提供支持在单个容器内存储多个数据对象。
 
     最新的office2007种就使用了这种方式来保存文件,2007的word格式,保存为*.docx格式文件,这个文件其实就是一个package,.net中默认的package物理格式是zip。如果我们将*.docx改为*.zip,然后解压缩这个zip,就能得到如下目录结构:
_rels
docprops
word
  |-- _rels
  |-- theme
所有目录下,都是若干xml文件,office2007的文件存储都是用xml保存的,具体的xml都在这里边了。具体docx的格式说明 可见 http://msdn.microsoft.com/zh-cn/library/bb943874.aspx;
 
Package给我们提供了一种打包存取数据的方式。就如暴雪使用的MPQ格式的数据文件一般。
 
下面摘自MSDN:
 
  ZIP文件是Package的主要物理格式,其他Package的实现也可以使用其他物理格式,如XML文档、数据库、或 WEB服务。

  Package 为一个抽象类,可用于将对象组织到定义的物理格式的单个实体中,从而实现可移植性与高效访问。

  ZIP 文件是 Package 的主物理格式。其他 Package 实现可以使用其他物理格式(如 XML 文档、数据库或 Web 服务)。

 与文件系统类似,在分层组织的文件夹和文件中引用 Package 中包含的项。

 虽然 Package 是抽象类,但 Package..::.Open 方法默认使用 ZipPackage 派生类。

与文件系统类似,在分层组织的文件夹和文件中引用 Package 中包含的项。

PackagePart(“部件”)是一个抽象类,表示 Package 中存储的对象。

PackageRelationship(“关系”)定义源 Package 或 PackagePart 与目标对象之间的关联。PackageRelationship 可以是两种类型之一,而这两种类型均可以为以下两种形式之一:

  • 包级别关系(由 Package..::.CreateRelationship 创建)

    • 在 Package 与包的目标部件之间。

    • 在 Package 与包外部的目标源之间。

  • 部件级别关系(由 PackagePart..::.CreateRelationship 创建)

    • 在源 PackagePart 与包中的其他目标部件之间。

    • 在源 PackagePart 与包外部的目标资源之间。

关系的源 Package 或源 PackagePart 被视为关系的“所有者”。删除源对象时,也将删除此源对象所拥有的所有关系。创建或删除关系的过程不会以任何方式在物理方面更改源或目标对象。

PackageDigitalSignature(“数字签名”)是部件和关系的组合,表示包含在 Package 中的数字签名。该数字签名标识发信方,并验证包含在 Package 中的签名部件和关系未经修改。

包还支持数字版权管理 (DRM),后者允许使用授予授权用户的特定访问权限对 Package 中的内容元素进行加密。

XpsDocument 基于 Package 体系结构,是一个包类型,旨在基于开放 XML Paper Specification (XPS)(XML 纸张规范 (XPS))存储文档。

默认情况下,Windows Presentation Foundation (WPF) 使用包来为使用标准 ZIP 文件格式的页面和文档存储内容、资源和关系。与任何 ZIP 文件一样,应用程序也可使用 System.IO.Packaging 类在单个可高效访问的容器中存储任意类型和数量的数据文件,并有选择地对它们提供保护。

 

原创粉丝点击