并发签出和更改系统定义模型 (SDM) 文档

更新:2007 年 11 月

在分布式系统设计器中,考虑到 SDM 文档(包括 .sdm 文件和分布式系统关系图 .ad、.sd、.dd 和 .ldd 文件)包含的元数据的结构和复杂性,不推荐合并或从源代码管理同时签出 SDM 文档。如果使用的是 Visual Studio 的源代码管理版本(Team Foundation 或 Visual SourceSafe),默认情况下将启用以独占方式签出,并一次只允许一个用户签出文件。

说明:

在应用程序关系图上实现支持实现的应用程序时,将生成相应的项目并显示在解决方案中。实现的应用程序的 SDM 定义存储在 .sdm 文件中,并包含在相应的项目中。有关更多信息,请参见系统定义模型 (SDM) 概述系统定义模型 (SDM) 文档之间的关系

应用程序关系图不应被合并。实现应用程序后,代码将成为应用程序的主定义,而对关系图和代码所做的更改也将互相保持同步。由于应用程序代码文件和配置文件是 SDM 定义的源文件,因此合并代码文件或配置文件产生的结果将最终决定 SDM 定义在 .sdm 文件中的最终版本。

说明:

在 Team Foundation 中,可以搁置或取消挂起的更改。但是,如果此操作将导致需要合并 SDM 文档,则不建议进行此操作。例如,如果要更改配置文件中的设置或约束,搁置这些更改,然后对这些设置和约束进行其他更改,则必须合并 SDM 文档。有关更多信息,请参见使用版本控制搁置集

只要打开或关闭应用程序关系图,对项目代码所做的相关更改都将与 .sdm 文件和应用程序关系图保持同步。因此,如果应用程序关系图 (.ad) 文件或 .sdm 文件与代码不同步,则可以通过关闭并重新打开应用程序关系图使其重新同步。有关更多信息,请参见跨系统定义模型 (SDM) 文档的同步

说明:

如果删除了 SDM 文档,或如果合并操作导致信息丢失,则 SDM 文档中无法从其他源重新创建的数据(例如仅存储在 .sdm 文件中的演示数据或 SDM 信息)将永久丢失。只有在这种情况下,不合并关系图或 .sdm 文件也可能会导致信息丢失。出于这个原因,强烈建议不要同时操作或合并仅存储在 .sdm 文件中的定义。例如,为已删除的 .sdm 文件(包含 ASP.NET 应用程序上的 Web 内容终结点的 SDM 信息)重新生成新的 .sdm 文件时,不会对这些终结点进行反向工程。有关更多信息,请参见应用程序关系图疑难解答

并发签出和更改应用程序项目文件

如果您的工作组选择同时更改项目文件,则可以启用共享签出(尽管不推荐这么做)。但是,有时可能需要在签入项目文件时合并这些更改。可能会发生合并冲突,而需要解决这些冲突。有关更多信息,请参见如何:配置签出设置(如果使用 Team Foundation)。

最常见的一种情况是多个开发人员在共享项目中使用不同源代码文件。此项目可以在多个解决方案之间共享,而每个解决方案又可能包含其自己的应用程序关系图。如果解决方案包含一个应用程序关系图,而项目包含一个 .sdm 文件,则对项目中的代码文件或配置文件所做的更改或并发更改可能要求对 .sdm 文件进行更新。因此,在签入项目时,必须合并对 .sdm 文件所做的所有并发更改,或放弃对 .sdm 文件所做的一组更改。

例如,假设两个开发人员在同一解决方案中工作。第一个开发人员希望使用 ASP.NET 应用程序的 Web 服务类文件并签出包含该应用程序项目的解决方案。此开发人员无需打开解决方案中可能存在的应用程序关系图或任何其他关系图即可使用项目代码。但是,对代码文件所做的更改仍然会影响这些关系图。如果此开发人员打开应用程序关系图,系统将提示此开发人员签出该关系图和进行同步所需的所有其他项目文件。

说明:

如果该开发人员取消签出,或因故无法签出关系图,则将锁定该关系图。但是,该开发人员可以继续更改代码。有关更多信息,请参见应用程序关系图疑难解答

假设第二个开发人员需要使用同一解决方案中的相同项目并需要签出该项目(取决于所用的特定源代码管理解决方案)。但是,第二个开发人员使用的是相同应用程序上不同 Web 服务的类文件。如果第二个开发人员希望查看应用程序关系图,以了解更改的反映情况,由于该关系图已签出给了第一个开发人员,因此该开发人员只能以只读状态查看该关系图。但是,第二个开发人员可以继续通过代码编辑器更改代码。

两个开发人员更改完毕之后,可以将这些代码签入源代码管理。此时,必须解决同时签出文件的合并冲突。在大多数情况下,将优先选择对 .sdm 文件所做的某些更改,并且应用程序关系图将根据合并的代码与 .sdm 文件保持同步。但是,当第二个开发人员使用不同的 Web 服务类文件时,由于应用程序关系图将与代码保持同步然后与 .sdm 文件保持同步,因此优先接受一个 .sdm 文件是安全的。

有关更多信息,请参见如何:解决系统定义模型 (SDM) 文档中的冲突

请参见

概念

对分布式系统解决方案进行划分以便于实现

其他资源

Team Foundation

团队环境中的分布式系统设计器