日期:2008-08-02  浏览次数:20474 次

独立存储


独立存储是一种数据存储机制,它在代码与保存的数据之间定义了标准化的关联方式,从而提供隔离性和安全性。同时,标准化也提供了其他好处。管理员可以使用旨在操作独立存储的工具来配置文件存储空间、设置安全策略及删除未使用的数据。通过独立存储,代码不再需要使用唯一的路径来指定文件系统中的安全位置,同时可以保护数据免遭只具有独立存储访问权限的其他应用程序的损坏。不再需要指示应用程序的存储区域位置的“硬编码”信息。通过使用独立存储,可以使部分受信的应用程序以由计算机安全策略控制的方式存储数据。对于用户需慎重运行的 Web 应用程序和下载的组件来说,这尤为有用。安全策略很少向这种代码授予使用标准 I/O 机制访问文件系统的权限,但是默认情况下,会对在本地计算机、本地网络或 Internet 中运行的代码授予使用独立存储的权限。

独立存储介绍


当应用程序在文件中存储数据时,必须小心选择文件名和存储位置,最大程度地减小其他应用程序知道该存储位置的可能性,从而使数据不易受到损坏。如果没有标准的系统来处理这些问题,想开发出最大程度地减少存储冲突的特别技术可能并非易事,而且开发出来的技术也不见得可靠。
通过使用独立存储,数据将始终按用户和程序集进行隔离。程序集的源或强名称等凭据确定程序集的身份。通过使用类似的凭据,数据还可以按应用程序域进行隔离。
当使用独立存储时,应用程序将数据保存到一个与代码标识的某些方面(例如 Web 站点、发行者或签名)相关联的独特数据舱。数据舱是一个抽象的存储位置,而不是具体的存储位置,它由一个或多个独立的存储文件(叫做存储区)组成,这些独立的存储文件包含存储数据的实际目录位置。例如,Web 应用程序可能有一个与其关联的数据舱,文件系统中的某个目录将实现实际保留应用程序数据的存储区。保存在存储区中的数据可以是任意类型的数据,无论是用户首选项信息还是应用程序状态都可以。对于开发人员,数据舱的位置是透明的;存储区通常驻留在客户端,但服务器应用程序可以通过模拟它所服务的用户来使用独立存储区存储信息。独立存储还可以将信息和用户漫游配置文件一起保存在服务器上,这样漫游用户就可以随时使用该信息。
管理员可以根据适当的信任级别限制应用程序或用户可以使用多少独立存储。另外,管理员可以移除用户的所有持久性数据。要创建或访问独立存储,必须授予代码适当的 IsolatedStorageFilePermission。
要访问独立存储,代码必须具有所有必要的本机平台操作系统权限。例如,在 Windows 2000 上必须满足访问控制列表 (ACL),该列表控制哪些用户具有使用文件系统的权限。除非执行(平台特定的)模拟,否则 Microsoft .NET 框架应用程序已经具有访问独立存储的操作系统权限。在这种情况下,应用程序负责确保被模拟的用户标识具有访问独立存储的适当操作系统权限。对于在 Web 上运行或从 Web 下载的代码而言,这种访问为之提供了一种读写与特定用户相关的存储区域的简便方法。
有时候,使用操作系统的文件系统来验证对独立存储进行的更改会非常有帮助。开发人员可能还需要了解独立存储文件的位置。该位置随操作系统的不同而不同。下表显示了在几个常见操作系统上创建独立存储的根位置。在此根位置下查找 Microsoft\IsolatedStorage 目录。您必须更改文件夹设置以显示隐藏文件和文件夹,才能查看到文件系统中的独立存储。

操作系统

在文件系统中的位置

Windows 98、ME
——用户配置文件未启用

启用漫游的存储区 =
<SYSTEMROOT>\Application Data
非漫游存储区 =
WINDOWS\Local Settings\Application Data

Windows 98、ME
——用户配置文件已启用

启用漫游的存储区 =
<SYSTEMROOT>\Profiles\<用户>\Application Data
非漫游存储区 =
Windows\Local Settings\Application Data

Windows NT 4.0

<SYSTEMROOT>\Profiles\<用户>\Application Data

Windows NT 4.0
——Service Pack 4

启用漫游的存储区 =
<SYSTEMROOT>\Profiles\<用户>\Application Data
非漫游存储区 =
<SYSTEMROOT>\Profiles\<用户>\Local Settings\Application Data

Windows 2000
——从 NT 4.0 升级

启用漫游的存储区 =
<SYSTEMROOT>\Profiles\<用户>\Application Data
非漫游存储区 =
<SYSTEMROOT>\Profiles\<用户>\Local Settings\Application Data

Windows 2000
——全新安装(和从 Windows 98 及 NT 3.51 升级)

启用漫游的存储区 =
<SYSTEMDRIVE>\Documents and Settings\<用户>\Application Data
非漫游存储区 =
<SYSTEMDRIVE>\Documents and Settings\<用户>\Local Settings\Application Data

独立存储的情况


独立存储可用于许多情况。以下介绍了五种最典型的情况:
  • 下载的控件。不允许从 Internet 下载的托管代码控件通过正常的 I/O 类写入硬盘,但它们可以使用独立存储来持久保存用户设置和应用程序状态。
  • 持久的 Web 应用程序存储。Web 应用程序也被禁止使用 I/O 类。这些程序可以出于与下载组件相同的目的使用独立存储。
  • 共享组件存储。应用程序间共享的组件可以使用独立存储来提供对数据存储区的有控制的访问。
  • 服务器存储。服务器应用程序可以使用独立存储为请求应用程序的大量用户提供单独的存储区。因为独立存储始终按用户进行隔离,所以服务器必须模拟发出请求的用户。在这种情况下,根据用户的标识隔离数据,该标识与应用程序用来区分其用户的标识是同一个标识。
  • 漫游。应用程序还可以将独立存储和漫游用户配置文件一起使用。这允许用户的独立存储区和配置文件一起漫游。

虽然独立存储非常适合于以上所述的情况,但在少数情况下,您“不”应该使用独立存储:
  • 独立存储不应该用于存储重要机密(例如不加密的密钥或密码),因为对高度受信代码、非托管代码或计算机的受信用户不设防。
  • 独立存储不应该用来存储代码。
  • 独立存储不应该用来存储配置和部署设置,它们是由管理员来控制的。(因为管理员不控制用户首选项,所以用户首选项不被认为是配置设置。)

当今的许多应用程序都使用数据库来存储和隔离数据,在这种情况下,数据库中的一个或多个行可能代表某个特定用户的存储。当用户数较少时、当使用数据库的系统开销非常大时或当不存在数据库功能时,您可以选择使用独立存储而不使用数据库。另外,当应用程序要求比数据库的行所提供的存储更加灵活和复杂的存储时,独立存储也可以提供一个可行的替代方案。

隔离的类型


对独立存储的访问总是限制在创建该存储的用户。要实现这种类型的隔离,公共语言运行库使用的用户标识注记与操作系