项目类型设计决策
在创建新项目类型之前,必须就项目类型做出多个设计决策。 必须确定项目将包含的项类型、项目文件将如何持久化以及将使用哪些承诺模型。
项目项
项目会使用文件还是抽象对象? 如果使用文件,它们是基于引用的文件还是基于目录的文件? 文件或抽象对象是本地还是远程对象?
项目中的项可以是文件,也可以是更抽象的对象,例如数据库存储库中的对象或跨 Internet 的数据连接。 如果项是文件,则项目可以是基于引用的项目,也可以是基于目录的项目。
在基于引用的项目中,项可以出现在多个项目中。 但是,项表示的实际文件仅位于一个目录中。 在基于目录的项目中,所有项目项都存在于目录结构中。
本地项存储在安装应用程序的同一台计算机上。 远程项可以存储在本地网络中的单独服务器上,也可以存储在 Internet 上的其他地方。
项目文件持久性
数据会存储在常见的平面文件系统中,还是存储在结构化存储中? 文件是使用标准编辑器还是特定于项目的编辑器打开?
为了保存其数据,大多数应用程序将其数据保存在文件中,然后在用户必须查看或更改信息时重新读回数据。
当多个组件对象模型(COM)对象需要将其持久化数据存储在单个文件中时,通常使用结构化存储(也称为复合文件)。 使用结构化存储,多个不同的软件组件可以共享单个磁盘文件。
有几个选项需要考虑项目中项的持久性。 可以执行以下任一选项:
更改后单独保存每个文件。
在单个 保存 操作中捕获许多事务。
在本地保存文件,然后在项目表示与远程对象的数据连接时使用另一种方法保存项目项。
项目承诺模型
持久化数据对象是否会在直接模式或事务处理模式下打开?
当数据对象以直接模式打开时,对数据所做的更改将立即合并,或者当用户手动保存文件时。
使用事务处理模式打开数据对象时,更改将保存到内存中的临时位置,直到用户手动选择保存文件才会提交。 此时,所有更改必须同时发生,否则不会进行更改。