0

我正在使用 启动 Windows Azure WebSites,现在我面临着Crystal Reports我的网站需要的情况,所以我正在寻找一种方法来安装重新分发文件以在我的网页中使用它来生成报告。

我关注这个页面:

http://dotnetspeak.com/2012/07/running-crystal-reports-on-windows-azure

因此,我将使用云应用程序,而不是拥有一个简单的网站。不幸的是,我经常更新我的网站(在 Windows Azure 项目中的角色)。

每次更新我的 MVC 项目时,我是否需要一直重新部署我的云应用程序?因为它需要很长时间(比如一个小时,因为我包含了一个 msi 安装程序)

谢谢

4

5 回答 5

0

除非您通过一些非常健壮的依赖注入在您的应用程序中构建一些自定义可扩展性,否则您必须重新部署。

于 2013-05-28T19:17:13.023 回答
0

在@Robert 的回答中添加一点:如果 MSI 的实际执行需要一个小时,那么这对于 web/worker 角色来说不是一个很好的用例。任何耗时超过几分钟的事情都不太适合无状态可扩展模型。如果是这种情况,您应该考虑运行虚拟机来运行 Crystal Reports。然后,您可以将您的网络角色用于其他一切。

另一方面,如果一小时的时间主要用于上传 MSI,那么我完全同意 Robert:将 MSI 存储在一个 blob 中,然后在启动时将其下载到您的角色实例。

于 2013-05-28T20:51:51.923 回答
0

编辑:再次阅读您的问题后,我意识到您正在使用 Windows Azure 网站。

实现此目的的正确方法是使用 webrole 而不是网站

您需要做的是将安装程序作为 blob 存储在 Cloud Storage 中。

然后,您可以从 blob 下载 Azure 启动任务的一部分并执行安装程序。

如果可能,您还可以使用 WebPICmdline(即 Web 平台安装程序命令行)从启动任务中为您下载和安装。

Steve Marx 发表了几篇关于使用 Azure 启动任务的文章。这是其中之一http://blog.smarx.com/posts/windows-azure-startup-tasks-tips-tricks-and-gotchas

于 2013-05-28T19:30:17.030 回答
0

通常更新过程不会导致您的 webrole 完全重新映像,只有 approot 被破坏!在这里,您可以找到有关更新和部署情况的非常详细的信息:http: //msdn.microsoft.com/en-us/library/windowsazure/hh472157.aspx

这对你的问题意味着什么?代码部署是一个“就地更新”过程。如果您在驱动器 C: 或 D: 中安装 Crystal Reports,它不会在每次部署时被破坏。

在您的启动任务中,您必须检查该软件是否已安装。如果没有安装,只需安装它,如上所述驱动器 C: 或 D:

编辑:我明白了:由于您的 MSI 的文件大小,您的更新过程需要这么长时间吗?如果是这样,我还建议将 MSI 上传到 Blob-Storage。

于 2013-05-29T08:01:42.683 回答
0

我建议将您的单个 Cloud 项目分成两个 - 一个仅用于 Crystal Reports。这样您就可以将它与 MVC 站点分开部署。您还可以在启动任务中构建额外的智能,例如检查 Crystal 是否已安装。但是,我认为将它们分开对您来说应该已经足够了

于 2013-05-29T02:34:23.567 回答