我正在使用WebSites
启动Windows Azure,现在我面临着我的网站需要Crystal Reports
的情况,所以我正在寻找一种方法来安装Redistribute文件以供使用它在我的网页上生成报告。
我按照这个页面:
http://dotnetspeak.com/2012/07/running-crystal-reports-on-windows-azure
因此,我不会使用简单的网站,而是使用云端应用。不幸的是,我经常更新我的网站(Windows Azure项目中的角色)。
每次更新MVC项目时,是否需要重新部署我的云应用程序?因为它需要很长时间(比如一小时,因为我包含了一个msi安装程序)
谢谢
答案 0 :(得分:0)
除非您使用一些非常强大的依赖注入在应用程序中构建一些自定义可扩展性,是的,您必须重新部署。
答案 1 :(得分:0)
编辑:再次重新阅读您的问题后,我意识到您正在使用Windows Azure网站。
实现此目的的正确方法是使用webrole而不是网站
您需要做的是将安装程序存储为云存储中的Blob。
然后,您可以从blob下载Azure启动任务的一部分并执行安装程序。
如果可能,您还可以使用WebPICmdline(即Web平台安装程序命令行)从启动任务下载并安装。
史蒂夫·马克思已经就使用Azure启动任务发了几篇文章。以下是其中一个http://blog.smarx.com/posts/windows-azure-startup-tasks-tips-tricks-and-gotchas
答案 2 :(得分:0)
为@ Robert的回答添加一点:如果MSI的实际执行需要一个小时,那么对于Web / worker角色来说这不是一个很好的用例。任何花费超过几分钟的东西都不适合无状态可扩展模型。如果是这种情况,则应考虑运行虚拟机以运行Crystal Reports。然后,您可以将您的Web角色用于其他所有事情。
另一方面,如果上传MSI主要消耗一小时的时间,那么我完全与Robert保持一致:将MSI存储在blob中,然后将其下载到您的角色实例在启动时。
答案 3 :(得分:0)
我建议将您的单个Cloud项目拆分为两个 - 仅适用于Crystal Reports。这样您就可以从MVC站点单独部署它。您还可以在启动任务中构建额外的智能,也许可以检查是否已安装Crystal。但是,我认为将它们拆分应该足够好了
答案 4 :(得分:0)
通常,更新过程不会导致您的webrole完全重新映像,只有批准才会被销毁!在这里,您可以找到有关更新和部署的更多详细信息:http://msdn.microsoft.com/en-us/library/windowsazure/hh472157.aspx
这对您的问题意味着什么?代码部署是一种“就地更新”过程。如果您在驱动器C:或D中安装Crystal Reports,它将不会在每次部署时被销毁。
在启动任务中,您必须检查软件是否已安装。如果没有安装,只需安装它,如上面在驱动器C:或D:
上所述编辑:我得到了点:由于MSI的文件大小,您的更新过程需要这么长时间吗?如果是这样,我还建议将MSI上传到Blob-Storage。