提高WCF服务并发能力的简单处理办法
2008-11-28 09:41
302 查看
步骤:
1.把同样的WCF服务,在多个端口上"启动"(即同时运行多个wcf的实例,但每个实例都监听不同的端口)
2.用svcutil.exe生成的代理类,里面有N多构造函数的重载版本,观察一下类似下面的这个版本
public AstroServiceClient(string endpointConfigurationName) :
base(endpointConfigurationName)
{
}
即传入配置名生与代码类的实例,我们在web.config中的wcf配置节,做如下处理:
<client>
<endpoint address="http://localhost:8001/Astro/" binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IAstroService" contract="IAstroService"
name="1">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="http://localhost:8002/Astro/" binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IAstroService" contract="IAstroService"
name="2">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="http://localhost:8003/Astro/" binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IAstroService" contract="IAstroService"
name="3">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
即对应多个wcf服务端的实例,配置多个name的endpoint节点
3.修改客户端的调用代码
把原来类似这样的代码:
using (AstroServiceClient _client = new AstroServiceClient())
改成
using (AstroServiceClient _client = new AstroServiceClient(new Random().Next(1, 4).ToString()))
即客户端随机从多个wcf服务端的host中挑一个,生成代码类实例
大功告成,说白了就是把一个wcf的host分身成了3个,并且客户端随机调用3者之一
1.把同样的WCF服务,在多个端口上"启动"(即同时运行多个wcf的实例,但每个实例都监听不同的端口)
2.用svcutil.exe生成的代理类,里面有N多构造函数的重载版本,观察一下类似下面的这个版本
public AstroServiceClient(string endpointConfigurationName) :
base(endpointConfigurationName)
{
}
即传入配置名生与代码类的实例,我们在web.config中的wcf配置节,做如下处理:
<client>
<endpoint address="http://localhost:8001/Astro/" binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IAstroService" contract="IAstroService"
name="1">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="http://localhost:8002/Astro/" binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IAstroService" contract="IAstroService"
name="2">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="http://localhost:8003/Astro/" binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IAstroService" contract="IAstroService"
name="3">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
即对应多个wcf服务端的实例,配置多个name的endpoint节点
3.修改客户端的调用代码
把原来类似这样的代码:
using (AstroServiceClient _client = new AstroServiceClient())
改成
using (AstroServiceClient _client = new AstroServiceClient(new Random().Next(1, 4).ToString()))
即客户端随机从多个wcf服务端的host中挑一个,生成代码类实例
大功告成,说白了就是把一个wcf的host分身成了3个,并且客户端随机调用3者之一
相关文章推荐
- 优化Linux的内核参数来提高服务器并发处理能力
- 如何提高服务器并发处理能力
- 优化Linux内核sysctl.conf参数来提高服务器并发处理能力
- 提高linux并发处理能力 91ri.org团队的成员前几天比赛一个比赛时遇到了个题目。题目要求是:对Centos进行优化,以提高它的并发处理能力。当时没搞懂理解清楚是什么意思,回家查了下资料发现原来
- Linux(Centos )的网络内核参数优化来提高服务器并发处理能力
- 优化Linux的内核参数来提高服务器并发处理能力
- 浅谈如何提高服务器并发处理能力(转自某位大牛博客)
- Linux 网络内核参数优化来提高服务器并发处理能力
- 多套方案来提高python web框架的并发处理能力
- 浅谈如何提高服务器并发处理能力(来自某位大牛的博客)
- 优化Linux的内核参数来提高服务器并发处理能力
- Linux(Centos )的网络内核参数优化来提高服务器并发处理能力
- Linux(Centos )的网络内核参数优化来提高服务器并发处理能力
- WCF并发(Concurrency)的本质:同一个服务实例上下文(InstanceContext)同时处理多个服务调用请求(转)
- 优化Linux的内核参数来提高服务器并发处理能力
- WCF并发(Concurrency)的本质:同一个服务实例上下文(InstanceContext)同时处理多个服务调用请求
- [记录]优化Linux 的内核参数来提高服务器并发处理能力
- 优化Linux内核参数,提高服务器并发处理能力
- 浅谈如何提高服务器并发处理能力(来自某位大牛的博客)
- Linux(Centos )的网络内核参数优化来提高服务器并发处理能力【转】