1

我正在构建一个具有 Web 角色的 Azure 云项目。Web 角色包含 Web API,我的同事一直在通过远程机器测试这些 API。因此,当我在 VS 上运行项目时,模拟器启动并且 Web 角色托管在 IIS 上。但是一旦我在 VS 上停止项目,模拟器也会从 IIS 中删除 Web 角色。很明显为什么会发生这种情况,但是有什么方法可以让 Web 角色在模拟器上持续运行并同时处理我的 VS 中的代码。因为对我来说,每当我的同事想要测试 API 时,我都必须停止在 VS 上工作,这对我来说真的很困难。

有什么解决方法或解决方案吗?

谢谢

编辑:

服务配置.Local.cscfg

<ConfigurationSettings>     
  <Setting name="StorageConnectionString" value="UseDevelopmentStorage=true" />
<ConfigurationSettings>

网络角色:

var cloudStorageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString"));
4

2 回答 2

1

您可以采取几种方法:

  1. 您可以让团队成员在测试部署上测试 API,而不是在您的开发机器上。例如,您可以使用在 Azure 上运行的超小型 Web 角色实例。在 Visual Studio 中,您可以使用 Web 部署功能使用新代码快速更新此实例。只需几秒钟即可使您的更改生效。这种方法的额外好处是,您在开发时所做的重大更改不会影响您同事的测试(例如,让您的项目处于未编译或无法正常工作的状态)。

  2. 您可以在您的计算机上运行两个 Visual Studio 实例:一个在 Azure 模拟器上以调试模式运行 Web 角色,另一个在开发模式下运行。

  3. 您可以在 Visual Studio 中配置项目以与 IIS 集成,以便可以通过计算机的 IIS 服务器(在 Azure 模拟器之外)执行它。只要 Azure 存储模拟器正在运行,您的代码仍然可以访问模拟表服务。事实上,即使是 WinForms 或控制台项目也可以使用存储模拟器的服务。客户端代码本身不需要在 Azure 计算模拟器(这是两个不同的独立模拟器)下运行。在这种情况下,您不会从 Web 角色配置中获取存储连接字符串,而是从 Web.config 或 App.config 等应用程序配置中获取。

我会推荐方法1,即拥有一个单独的测试环境。您甚至可以针对它运行自动化集成测试。您将获得在 Azure 本身而不是模拟器上运行的额外优势。存在一些行为差异,这样您就可以在生命周期的早期检测到它们。

如果您的团队想要更上一层楼,您可以设置持续交付,这样当您的任何项目有任何存储库提交时,都会进行构建、部署到 Azure 和一组自动化测试。

于 2013-02-27T11:01:56.977 回答
1

考虑设置持续交付:使用 Team Foundation Service 持续交付到 Windows Azure

好处:

  • 每次签入(或每天...)后,您的应用程序将自动部署到您的云服务。这样,您的其他开发人员可以使用此版本来使用 API。
  • 您可以毫不费力地继续在本地开发
于 2013-02-27T12:15:49.730 回答