在现有解决方案中进行反向工程时的注意事项
更新:2007 年 11 月
在 Visual Studio Team System Architecture Edition 中,可以使用分布式系统设计器在现有的 Visual Studio 解决方案中定义应用程序和设计应用程序系统。可以通过向解决方案中添加应用程序关系图或系统关系图来执行此任务。执行此任务时,Visual Studio 会对解决方案进行反向工程处理,并向解决方案中适当项目的应用程序关系图添加应用程序定义。随后,您可以使用应用程序设计器可视化、定义、配置和实现应用程序。您可以使用系统设计器设计应用程序系统。有关更多信息,请参见如何:向解决方案添加应用程序关系图和如何:向解决方案添加系统关系图。
以下几节介绍可在现有解决方案中用作反向工程项目的其他更改。这几节还介绍了不支持反向工程处理的项目:
现有解决方案中的反向工程
不支持反向工程的项
您还可以从 Architecture Edition 的早期版本中升级解决方案。但是,此版本不支持 Visual J# 项目。有关更多信息,请参见升级早期版本的 Architecture Edition。
现有解决方案中的反向工程
在向解决方案中添加应用程序关系图后,Visual Studio 将对您向解决方案或其中的项目进行的某些更改进行反向工程处理。在关系图处于打开状态或重新打开关系图时,它将显示下列更改:
为应用程序关系图支持的应用程序类型添加项目。
对于应用程序关系图支持的应用程序类型,您可以对其任何项目进行反向工程处理。应用程序关系图上将显示一个表示该项目的应用程序定义形状。
对项目进行反向工程处理时,请注意下列事项:
如果您没有足够的特权来访问 IIS 元数据库,则无法将 ASP.NET Web 项目反向工程到应用程序关系图上。
经反向工程处理的应用程序的“目标 Framework”属性将显示为空和只读。您可以在项目的属性中查看并更改目标 Framework 的版本。默认情况下,Visual Studio 会将生成的应用程序的“目标 Framework”设置为“.NET Framework 3.5”。请检查此设置,并根据需要予以更新。更改此设置时,应注意一些特定的事项。有关更多信息,请参见如何:为应用程序选择 .NET Framework 版本。
如果对 Office 项目进行反向工程处理,则产生的应用程序的“模板”属性将显示为空和只读。但是,应用程序的“Office 版本”设置将反映项目使用的 Office 版本。有关更多信息,请参见如何:更改应用程序的项目模板。
如果未安装 Web 服务增强 (WSE),则当从包含应用程序关系图的解决方案中打开启用 Web 服务增强 (WSE) 设置的 Web 服务项目或对其进行反向工程处理时,将锁定应用程序关系图。
若要解决此问题,请关闭关系图,安装 WSE,然后重新打开关系图。有关更多信息,请参见应用程序关系图疑难解答。
有关更多信息,请参见下列主题:
不支持反向工程的项
在应用程序关系图上向 ASP.NET 应用程序的项目添加 Web 服务。
Visual Studio 会在应用程序关系图上向相应的 ASP.NET 应用程序定义添加 .NET Web 服务提供方终结点。此外,Visual Studio 还会向解决方案中的项目中添加一个 .asmx 文件和一个 Web 服务类文件。有关更多信息,请参见应用程序关系图上的 ASP.NET 应用程序概述。
在 ASP.NET 应用程序项目中的 Web 服务类文件中添加一个 Web 方法。
Visual Studio 会在应用程序关系图上的 ASP.NET 应用程序定义中向相应的 .NET Web 服务提供方终结点添加操作。此后,您可以在“Web 服务详细信息”窗口中查看或编辑操作。
有关更多信息,请参见下列主题:
在 ASP.NET 应用程序定义上 .NET Web 服务提供方终结点后的 Web 服务类文件中添加、更改或删除 Web 方法、Web 服务或与 WSDL 相关的属性 (Attribute) 或属性 (Property)。
Visual Studio 会更新“Web 服务详细信息”窗口中的相应操作以及任何适当的属性。有关更多信息,请参见如何:编辑 ASP.NET Web 服务的操作。
在应用程序配置文件中添加、编辑或删除项。
Visual Studio 会更新系统定义模型 (SDM) 文档以及设置和约束编辑器中存储的设置。有关更多信息,请参见 系统定义模型 (SDM) 概述 和 设置和约束编辑器。
在应用程序项目的配置文件中,针对自定义 Web 服务客户端代理类或包含 Web 引用和自定义 Web 服务客户端代理类的类库,添加相应的项。
自定义 Web 服务客户端代理类是一个手动创建的代理类,它不与应用程序项目中的 Web 引用关联。只有在将相应的项添加到应用程序的配置文件中之后,应用程序定义才会显示每个 Web 引用或自定义代理类的 Web 服务使用方终结点。
说明: 如果应用程序关系图上存在适当的 .NET Web 服务提供方终结点,则 Web 服务使用方终结点与提供方终结点之间将出现连接。否则,将出现新的外部 Web 服务,并且这些服务将连接到 Web 服务使用方终结点。
有关更多信息,请参见下列主题:
在解决方案中添加对应用程序项目的 Web 引用。
添加对应用程序项目的 Web 引用时,Visual Studio 会将该应用程序连接到现有的 ASP.NET Web 服务或新增/现有的外部 Web 服务,具体则取决于应用程序关系图是否支持该类型的应用程序以及 Web 引用所指定的 Web 服务 URL。
有关更多信息,请参见下列主题:
向应用程序的配置文件中添加数据库连接项。
例如,可以向 ASP.NET 应用程序的 Web.config 文件或者 Microsoft Windows 或 Office 应用程序的 App.config 文件中添加数据库连接项。
Visual Studio 会向应用程序关系图上的应用程序中添加数据库使用方终结点。您可以将该使用方终结点连接到现有的外部数据库或由您添加到关系图中的新外部数据库。可以从数据库使用方终结点查看或编辑数据库连接设置。有关更多信息,请参见 如何:配置到外部数据库的连接。
不支持反向工程的项
对于下列类别中的项目,应用程序设计器已经限制或不支持进行反向工程处理:
应用程序项目
应用程序设计器不支持设计或直接表示类库。
可以将 ASP.NET Web 服务用作类库所实现的功能的外观。这样就可以表示 ASP.NET 应用程序所引用的类库与应用程序关系图上支持实现的应用程序之间的交互。有关更多信息,请参见如何:从应用程序关系图上的应用程序引用类库。通过将相应项添加到使用者应用程序的配置文件中,还可以将对类库中的 Web 服务和自定义 Web 服务客户端代理类的 Web 引用可视化为 Web 服务使用方终结点。有关更多信息,请参见 类库中的 Web 引用和自定义 Web 服务客户端代理类。
应用程序设计器不支持对基于 FTP 或 Microsoft SharePoint 的网站项目进行反向工程处理。它只支持对在 Internet 信息服务 (IIS) 或 ASP.NET Development Server 上运行的网站项目进行反向工程处理。
ASP.NET Web 服务
在 .asmx 文件中内联定义的 Web 服务类定义。
如果与 ASP.NET Web 服务关联的 Web 方法不是完全由单独的代码文件或“代码隐藏”文件中的单个类定义声明的,则“Web 服务详细信息”窗口将不显示相应的操作。此时仍然可以在 ASP.NET 应用程序上将 Web 服务可视化为 .NET Web 服务提供方终结点,并将使用方应用程序连接到该提供方终结点。但是,该 .NET Web 服务提供方终结点显示时将带有一个警告(“!”)图标。有关更多信息,请参见应用程序关系图疑难解答。
说明: 代码隐藏文件是特定于编程语言的类文件,它们通常位于与 ASP.NET 应用程序关联的项目的应用程序代码文件夹中。
Web 服务类所实现的接口的方法上的属性所声明的 Web 方法。
- 或 -
某个类扩展了定义 Web 方法的基类。
在这些方案中,“Web 服务详细信息”窗口只显示与在 .asmx 文件所引用的类中声明的 Web 方法相对应的那些操作。尽管“Web 服务详细信息”窗口并不显示所有的 Web 服务操作,但只要应用程序项目中存在 .asmx 文件,.NET Web 服务提供方终结点就仍会正确显示在 ASP.NET 应用程序上。此外,还将正确实现和配置与 Web 服务终结点的连接。
定义包含多个绑定的 Web 服务的代码。
如果代码隐藏文件定义的 Web 服务具有带不同绑定的 Web 方法,则“Web 服务详细信息”窗口将只显示与第一个绑定关联的那些操作。
说明: WebServiceBinding 属性在 Web 服务级别声明绑定。可以将 SoapDocumentMethod 或 SoapRPCMethod 属性设置为在 Web 方法级别使用这些绑定。有关更多信息,请访问 MSDN Library Online。
包含多个 WSDL 绑定的 WSDL 文件或引用多个 Web 服务的 DISCO 文件。
分布式系统设计器只支持包含单个 WSDL 绑定的 WSDL 文件以及引用单个 Web 服务的 DISCO 文件。
有关更多信息,请参见应用程序关系图上的 ASP.NET 应用程序概述。
活动模板库 (ATL) 服务器。
Web Services Enhancements (WSE) SOAP 消息堆栈。
有关这些项的更多信息,请访问 MSDN Library Online。