2012-01-04 233 views
1

我的应用程序包含25个C#项目,这些项目分为5个解决方案。Windows Azure Visual Studio解决方案

现在我想将这些项目迁移到Windows Azure下运行,我意识到我应该创建一个包含我所有Web角色和工作角色的解决方案。

这是这样做的正确方法,或者仍然可以将我的项目分成几个解决方案。

项目如下所示:

  • 一个Web应用程序。
  • 5 Windows服务。
  • 其他都是类库。

回答

1

最重要的问题是:这25个项目中有多少是实际的WebSites/Web应用程序或Windows服务,其中有多少只是类库。

对于类库,您不必转换任何东西。

现在为Cloud项目。你必须决定你将创建多少托管服务。如果需要,您可以阅读my blog post以熟悉“托管服务”,“角色”,“角色实例”等术语。

一旦您确定了您的云架构 - 每个服务托管的服务和角色数量,您可以为每个托管服务创建一个新的解决方案。

您也可以决定您可以将多个网站托管到单个WebRole中,这是完全受支持且可能的,因为WebRoles自SDK 1.3以后在完整的IIS环境中运行。您阅读了关于在单个Web角色herehere中托管多个网站的更多信息,甚至使用了Windows Azure Accelerator for Web Roles

如果您有多个Windows服务或后台工作进程,可以将它们合并为一个工作人员角色,或者为每个单独的工作进程定义一个工作角色,如果您希望每个进程都有独立的弹性,或者您的工作人员需要大量的计算能力和内存。

UPDATE至于问题的更新:

因此,Web应用程序是明确的 - 它关系到一个Web角色。现在用于Windows服务。有迹象表明,你必须要回答两个主要的考虑因素,以寻找是否将它们放到一个或多个工作角色:

  1. 是否有您的Windows服务的需要过多的资源(即大量的计算能力,或者 大量的RAM)?
  2. 您的任何Windows服务是否需要独立规模?

如果任何问题的答案是“是”,那么将此Windows服务置于单一工作者角色中。将所有Windows服务的问题都解答为“否”。这意味着你可以缩放全部或全部缩放(通过操作实例的数量)。

对于云服务(或托管服务),由您决定是否使用单个云服务部署所有角色(Web和工作人员)或使用一个托管服务部署Web角色并另一个部署工人角色。与计费预期完全没有区别。您仍将拥有Web角色和工作者角色,并且您将根据实例数量和数据流量收费。您可以独立扩展任何角色(更改特定角色的实例数),无论其部署情况如何(在同一托管服务或其他托管服务中)。

最后,我建议您为每个托管服务(云计划)提供单一解决方案。因此,如果您决定将Web角色和工作人员角色放入单个托管服务中,那么您将拥有单一解决方案。如果您有两个托管服务(云计划),您将拥有两个解决方案。

希望这会有所帮助。

+0

请找到我更新的问题。 – 2012-01-04 11:51:28

+0

请阅读答案的更新。 – astaykov 2012-01-04 12:48:33

1

你是对的!并且如果您只为您的所有卷轴和辅助角色项目创建一个云项目,则所有项目都将归入1托管服务下

您仍然可以将项目划分为多个解决方案,并且必须在其上创建多少云项目和托管服务天蓝色的平台

+0

谢谢,但我怎样才能将我的项目分成几个解决方案?我只想发布一个应用程序,或者我应该自行发布每个解决方案。 – 2012-01-04 11:41:34

+0

如果你想在Azure门户下的一个托管服务,所有的东西,那么你需要收集所有的项目在一个解决方案,并创建只有一个云计算项目 否则将你的项目在不同的解决方案,你需要创建很多云,项目和同托管服务(应用程序)在azure – 2012-01-04 11:52:34

1

你可以做到这一点。

您可以保留5个单独的解决方案。然后,创建一个包含全部25个项目的新解决方案。

您选择包含Cloud(ccproj)项目的解决方案取决于您希望如何分发您的应用程序。

每个CCPROJ对应1个托管服务。因此,您可以将您的所有网络和工作人员整合到一个托管服务中。或者,您可以将每个Web角色作为不同的托管服务,并将您的所有工作角色组合在另一个托管服务上。或者你可以做这些的组合。一个明确的答案需要更多关于你的应用程序的信息,但是在VS中,一个项目可以属于多个解决方案。

2

其他答案很好。让我多添加一点与多个托管服务:如果Web和Worker角色需要直接交互(例如,通过从Web角色实例到特定工作者角色实例的TCP连接),那么这些角色确实应该放置在相同的托管服务。在部署外部,您的托管服务监听器(web,wcf等)由IP +端口访问;除非还启用Azure Connect(VPN),否则无法访问特定的实例。

如果您的Web和辅助角色通过Azure的队列或者服务总线交互,那么必须部署它们分开托管服务,仍然有它们之间进行通信的能力的选项。

+0

我的web角色和工作者角色使用WSHttpBinding绑定通过WCF进行通信。所以我想我应该将它们添加到相同的托管服务中,对吗? – 2012-01-04 13:56:42

+1

不一定。如果您的WCF服务是无状态的,那么您可以将WCF服务部署为单独的部署,并通过公共IP +端口(以及任何必要的安全措施)进行访问,因为WCF服务的哪个实例处理每个呼叫都无关紧要。如果您的Web应用程序需要访问您的WCF服务的特定实例(可能是因为它们是有状态的,或者您正在做自己的负载平衡),那么您需要一起部署您的Web和WCF服务。 – 2012-01-04 14:22:52

相关问题