发布网站与Azure云服务发布

时间:2015-04-19 14:19:52

标签: c# asp.net-mvc azure publish azure-cloud-services

将网站发布到Azure有两种方法 - 通过简单的发布功能和部署为云服务。我在解决方案中也有一个辅助角色,因此,我选择了Cloud Service而不是简单的Publish网站功能。

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

我认为只有云端员工角色和网站部署为网站,没有云服务......

1 个答案:

答案 0 :(得分:4)

首先,我强烈建议您通过此问题比较Azure网站和云服务:What is the difference between an Azure Web Site and an Azure Web Role

现在回答你的问题:

  

首先,部署为云服务需要10倍的时间,   而不是简单的发布网站。

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

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

这两件事都不会发生在网站上。

  

第二个问题 - 每当我想部署时,我都要改变   web.config中的连接字符串到SQL Azure(而不是我的本地SQL)   服务器)。网站发布能够设置必要的SQL连接   部署的字符串。也许我做错了什么,部署可以做到   10秒并且存在设置不同连接字符串的能力(如   网站发布)?

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

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

  

我认为只将云工作者角色和网站部署为   网站,没有云服务......

这当然是一个可行的选择。另一种选择是研究WebJobs。与Worker Roles一样,它们用于处理后台处理工作负载,但在部署时具有相同的网站便利性。您也可以发现此博客文章也很有用:http://www.hanselman.com/blog/IntroducingWindowsAzureWebJobs.aspx