2010-03-29 76 views
3

因此,很容易对ASP.NET Web应用程序进行负载平衡。您在两台服务器之间建立一个负载均衡器,并且如果Web服务器在端口80上没有响应,它将不会收到请求。对控制台应用程序或服务进行负载均衡

对于C#控制台应用程序或Windows服务执行此操作的操作是否有任何已证实的技术?是否有任何框架知道对等进程是活着还是死亡,做心跳等?

我一直在尝试一下NServiceBus,对于某些类型的应用程序来说,它似乎有助于将大部分工作作为对事件的响应来完成,这使得它更像Web应用程序,实际上,因此更容易通过多个流程进行扩展和负载平衡,但我觉得这是一个半解决方案,因为在大多数情况下,通常需要有一个“主”流程的概念,负责开始工作。

+0

WCF具有一些负载均衡功能。除了存在以外,我对此知之甚少。鉴于独立于配置的WCF是怎样的,我敢打赌,这可以与运行服务的多个服务器或同一服务器上的多个进程(如果使用命名管道)一起工作。只是一个想法 - 希望你能比这更深入... – Jaxidian 2010-03-29 13:28:09

回答

3

NServiceBus确实通过其分销商流程为您处理(在此描述:http://docs.particular.net/nservicebus/scalability-and-ha/distributor/)。 NServiceBus附带的通用主机允许您使用完全相同的代码和配置作为控制台应用程序和Windows服务运行(如下所述:http://docs.particular.net/nservicebus/hosting/nservicebus-host/)。

您可以对事件以及常规命令消息进行此操作。

如果您希望“主”进程决定在所有负载均衡工作完成时要执行什么操作,则以saga基础架构的形式提供给您(如下所述:http://docs.particular.net/nservicebus/sagas/并在制造示例中进行演示附带NServiceBus)。

总之,你应该几乎被覆盖。

+0

乌迪,感谢您的回答!你知道任何使用Sagas创建主进程功能的例子吗?不幸的是,我的制造样品正在破裂 - 当我尝试运行它时,Visual Studio要求找到我没有的D驱动器上的FacadeToIsolatedServiceController.cs的源代码。当我找不到它时,我得到一个未完成装配的设置 - 探测在OrderService中终止。 (NServiceBus 2.0.0.1145) – 2010-03-29 14:59:59

+0

我发现问题是我有一个64位的操作系统,并没有注意到System.Data.SQLite.dll有一个x64版本。制造样品现在正在运行,我会尽力了解我能做些什么,但是如果您知道任何链接,那么肯定还是会被赞赏的。 – 2010-03-29 15:43:17