65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2015年1月16日

CPOL

5分钟阅读

viewsIcon

9681

本文旨在介绍如何为 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 发布活动。

此时,两个环境都已部署并运行,并且不需要定义或更改每个环境。未来只需要在部署前注意设置正确的环境即可。

注释

    1. 在这种情况下,我们使用 MS_TableConnectionString1 名称来定义连接字符串,而 Azure 门户中定义的默认值 MS_TableConnectionString 将被忽略。

    开发人员可以设置不同的连接字符串甚至更改名称,但它们必须在所有环境中具有相同的名称。

    1. 使用 Visual Studio 2013 – update 4,可以在“设置”分隔符中更改数据库,但在这种情况下,该设置将被忽略!

有关转换文件的更多信息,请阅读以下文章:

如何:在部署 Web 应用程序项目时转换 Web.config

结论

总而言之,为 .Net 后端 – Azure Mobile Service 创建不同的环境是一项轻松的任务,它为开发带来了优势,可以允许在功能发布到生产环境之前进行测试,并确保在本地进行的测试将继续在 Azure Mobile Service 中运行,而不会影响生产环境。

© . All rights reserved.