System.IO.Packages 初探

介绍.NET Framework 3.0中新增的Package功能,这是一种将多个数据对象存储在单个容器中的方法。Package支持ZIP等不同物理格式,并通过PackagePart和PackageRelationship管理容器内的对象及其相互间的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作为.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(“关系”)定义源 PackagePackagePart 与目标对象之间的关联。PackageRelationship 可以是两种类型之一,而这两种类型均可以为以下两种形式之一:

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

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

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

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值