【发布时间】:2012-06-16 06:07:58
【问题描述】:
我正面临在会话实例模式下托管 WCF 的情况。我正在封装实际情况并提出一个示例来复制它......如下所示。
要托管的服务是“MyService”。我正在使用 Windows 服务来托管它。使用 http 端点。
它将需要支持 500 个并发会话。(单例和 Percall 无法完成,因为合同是基于工作流的...登录...Function1,Function2,Logout..)
我有 4 台服务器,每台都具有支持 200 个并发会话的硬件能力。
因此,我将一台服务器上的服务配置为路由器(ServiceHost S = new ServiceHost(RouterService)),其托管路径为“http://myserver/MyService”。我设置了一个简单的负载平衡机制,并应用路由器表将传入请求重定向到托管实际服务副本的其他三台服务器...("http://myserver/MyService1","http://myserver/MyService2 ","http://myserver/MyService3")
它仍然不工作...一旦点击超过 200...通信错误开始...我想是因为当进行 500 个并发调用时,路由器(能力 200)也需要保持连接与实际服务服务器一起发送给客户端......(在会话调用模式下)......我的想法正确吗??
我的问题是……
1) 我的方法是正确的还是概念上有缺陷...我应该要求硬件团队设置 NLB...
2) 我们是否应该专门重新设计合同以确保可以通过 PerCall 以某种方式发出请求...
3) 有人建议此类系统应托管在云 (Windows Azure) 上...需要查看所涉及的成本...但它是否正确...
4) 托管 WCF 处理基于会话的调用时涉及的最佳实践是什么。
我知道我的问题很复杂,不会有一个“正确”的答案......但任何帮助和见解将不胜感激。
谢谢
【问题讨论】:
标签: wcf session concurrency load-balancing