发布网站与 Azure 云服务发布

Publish web-site vs Azure Cloud service publish

有两种方法可以将网站发布到 Azure - 通过简单的发布功能与部署为云服务。我在解决方案中也有一个工作者角色,因此,我选择了云服务而不是简单的发布网站功能。

但是我对云服务很失望。首先,部署为云服务比简单的发布网站花费的时间多 10 倍。第二个问题——每次我想部署时,我都必须将 web.config 中的连接字符串更改为 SQL Azure(而不是我的本地 SQL 服务器)。网站发布能够为部署设置必要的 SQL 连接字符串。也许我做错了什么,部署可以在 10 秒内完成,并且可以设置不同的连接字符串(比如网站发布)?

我考虑只将工作人员角色和网站部署为网站,没有云服务...

首先,我强烈建议您完成这个比较 Azure 网站和云服务的问题:What is the difference between an Azure Web Site and an Azure Web Role

现在开始回答您的问题:

First at all, deploy as cloud service takes in 10 times more time, than simple Publish website.

这是必然发生的,因为当您部署云服务时(比如通过 Visual Studio),以下情况会导致延迟:

  • 作为云服务构建过程的一部分,Visual Studio 创建一个包文件并将其上传到 blob 存储中。然后使用此包创建云服务。
  • 负责管理云服务生命周期的 Azure Fabric Controller 会为您创建一个全新的虚拟机,安装必要的软件(例如 IIS),然后从包文件中部署您的代码。

这两种情况都不会发生在网站上。

Second problem - I have to each time, when I want to deploy, change connection strings in web.config to SQL Azure (instead of my local SQL Server). Website Publish has ability to set necessary SQL connection strings for deploy. Maybe I do something wrong and deploy can doing in 10 sec and exist ability to set different connection strings (like Website publish)?

你本身并没有做错任何事。您的 web.config 文件被捆绑到包文件中,因此在您对 web.config 文件进行任何更改后,您需要重新创建包并更新部署(这将包括上传到 blob 存储)。

您的问题的一个可能解决方案是使用 config transformation 并让您的 web.config.release 文件包含生产数据库的连接字符串。当您在发布模式下构建项目时,您的 web.config 文件中会有正确的连接字符串。

I think about put to Cloud only worker role and website deploy as website, without Cloud service...

这当然是一个可行的选择。另一种选择是研究 WebJobs. Like Worker Roles, they are meant for handling background processing workloads but have the same convenience of a website when it comes to deployment. You may also find this blog post useful as well: http://www.hanselman.com/blog/IntroducingWindowsAzureWebJobs.aspx.