2

我有一个使用 WCF 回调合同开发的聊天应用程序。这使用 netTcp 绑定进行客户端服务器通信。

客户端是一个 Windows 窗体应用程序,将在客户端机器(XP 或 Windows8 机器)上运行

这个 WCF 服务作为 Windows 服务托管在服务器机器中。我在服务中维护一个客户端会话列表,这将存储有关连接到服务器的每个客户端的详细信息,这个列表是静态变量。

工作流程是,每当客户端使用连接操作连接到服务器时,客户端详细信息将被添加到客户端会话列表中,服务器将使用此会话列表在需要时将消息发送回客户端。

在单服务器环境中一切正常,现在我想知道如何在负载平衡场景中处理这个问题,这意味着我有两台服务器机器,一次一台服务器将处于活动状态。如果服务器 1 发生故障,服务器 2将是活跃的。在这种情况下,如何管理我的客户端会话在两台服务器之间共享并照常工作而不打扰我的客户端?

4

1 回答 1

2

一种选择是使用会话状态存储提供程序,它将为服务器服务的两个实例提供会话状态。

正如 MSDN 所述:http: //msdn.microsoft.com/en-us/library/z414bbk9 (v=vs.100).aspx

对于 Web 场配置,可以使用 ASP.NET 状态服务或 Microsoft SQL Server 数据库将其存储在进程外。

ASP.NET 状态服务有很好的文档http://msdn.microsoft.com/en-us/library/ms178581(v=vs.100).aspx

至于数据库解决方案……嗯……您必须分析由于数据库访问而增加的开销。

此外,如果您使用 IIS 托管服务,您可以考虑使用进程外会话状态 ( http://technet.microsoft.com/en-us/library/cc754032%28v=ws.10%29.aspx)。

这些只是一些想法。您可以查看可用于 Microsoft 技术的其他 Web 场同步技术。

于 2013-04-23T08:52:55.413 回答