Azure Mobile Services:如何创建开发和生产环境





5.00/5 (1投票)
本文旨在介绍如何为 Azure Mobile Services 的 .Net 后端创建开发和生产环境。
范围
本文旨在介绍如何为 Azure Mobile Services 的 .Net 后端创建开发和生产环境。
引言
根据MSDN 文档,
Microsoft Azure Mobile Services 是一项 Azure 服务,旨在简化使用 Azure 构建功能丰富的移动应用程序的过程。Mobile Services 整合了一系列 Azure 服务,为您的应用程序提供后端功能。Mobile Services 在 Azure 中提供以下后端功能来支持您的应用程序:
- 客户端库支持各种设备的移动应用程序开发,包括 Windows 8、Windows Phone 8、iPhone 和 iPad。
- 简单地配置和管理用于存储应用程序数据的表。
- 与通知服务集成,以向您的应用程序发送推送通知。
- 与知名身份提供商集成,用于身份验证。
- 精确控制对表的访问权限。
- 支持脚本将业务逻辑注入数据访问操作。
- 与其他云服务集成。
- 支持扩展移动服务实例的能力。
- 服务监控和日志记录。
这样,Azure Mobile Services 将提高移动应用程序的开发效率,而且它支持主要移动平台是一个加分项。
在某些情况下,尤其是在向商店发布并在用户使用的移动应用程序中提供新功能时,可能需要 Azure Mobile Service 的不同环境,因为每个版本都可能更改甚至破坏 Azure Mobile Service 的上一个后端版本,因此测试并保持生产环境的运行非常重要。Azure Mobile Services 允许在本地测试服务,但无法提供拥有不同环境的方法,并且要创建不同的环境,每个环境都需要一个 Azure Mobile Service,然后为每个环境创建配置。
描述
要为 .Net 后端 - Azure Mobile Services 创建开发和生产环境,需要创建开发和生产后端,然后可以基于转换文件创建开发和生产配置文件。
让我们更详细地看一下。
创建 Azure Mobile Services
在 Azure 门户中,创建两个 .Net 后端 - Azure Mobile Service,我们将其命名如下:
- 用于开发环境
- MyAMSDev – Azure Mobile Service 名称
- MyAMSDev_db – 数据库名称
- 用于生产环境
- MyAMSProd – Azure Mobile Service 名称
- MyAMSProd_db – 数据库名称
在 Azure 门户中,结果将是:
并且
可以使用同一个数据库,但需要使用不同的架构;如果提供不同的数据库,则更容易管理每个环境(更新甚至删除)。使用 Entity Framework Migrations 的后端将从头开始重新创建服务,并且任何时候都可以删除、部署和重新创建它。
要详细了解创建 Azure Mobile Service 所需的步骤,请阅读以下文章:
如何创建 MyMenuApp Azure Mobile Service.
创建转换文件
在 Visual Studio 中,选择解决方案并打开上下文菜单,如下所示:
之后,点击“配置管理器”,如下所示:
然后创建一个新配置,如下所示:
在这种情况下,定义了一个基于 Debug 配置的 Dev 配置,而 Prod 配置应使用 Release 配置,如下所示:
此时,可以定义 Debug、Dev、Prod 和 Release 配置。
对于每个配置,可以定义条件编译。例如,在 Dev 中可以设置:
实际上,这意味着我们可以这样做:
#if Dev
// 例如,可以填充包含假数据的数据库
#else
// 在非 Dev 环境中
#endif
为了利用 Web.Config 中的这些配置,让我们添加如下的配置转换:
结果将是:
现在可以:
- 在 Web.Config 中设置用于本地开发的本地数据库连接字符串。
<connectionStrings>
<add name="MS_TableConnectionString1" connectionString="Data Source=LT114925;Initial Catalog=MyAMSLocal;Integrated Security=True;MultipleActiveResultSets=true" providerName="System.Data.SqlClient" />
</connectionStrings>
- 在 Web.Dev.Config 中设置用于开发环境(甚至本地开发!)的 MyAMSDev_db 数据库连接字符串。
<connectionStrings>
<add name="MS_TableConnectionString1"
connectionString="<connection string from MyAMSDev_db>"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
- 在 Web.Prod.Config 中设置用于生产环境的 MyAMSProd_db 数据库连接字符串。
<connectionStrings>
<add name="MS_TableConnectionString1"
connectionString="<connection string from MyAMSProd_db>"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
在每次部署时,将使用相应的配置。
让我们将服务发布到 Azure。
选择项目,然后使用上下文菜单点击“发布”,如下所示:
然后使用 Azure 帐户连接到 Azure Mobile Service,并选择 MyAMSDev,如下所示:
在“设置”中,设置配置和文件发布选项(仅此而已!)。
然后发布!
对 Prod 执行相同的过程,如下所示:
然后发布!
可以看到显示发布过程的 Web 发布活动。
此时,两个环境都已部署并运行,并且不需要定义或更改每个环境。未来只需要在部署前注意设置正确的环境即可。
注释
-
- 在这种情况下,我们使用 MS_TableConnectionString1 名称来定义连接字符串,而 Azure 门户中定义的默认值 MS_TableConnectionString 将被忽略。
开发人员可以设置不同的连接字符串甚至更改名称,但它们必须在所有环境中具有相同的名称。
- 使用 Visual Studio 2013 – update 4,可以在“设置”分隔符中更改数据库,但在这种情况下,该设置将被忽略!
有关转换文件的更多信息,请阅读以下文章:
如何:在部署 Web 应用程序项目时转换 Web.config
结论
总而言之,为 .Net 后端 – Azure Mobile Service 创建不同的环境是一项轻松的任务,它为开发带来了优势,可以允许在功能发布到生产环境之前进行测试,并确保在本地进行的测试将继续在 Azure Mobile Service 中运行,而不会影响生产环境。