我有一个运行2个线程的客户端,每个线程都尝试访问wcf服务。 使用
的默认行为定义服务AppService = new ServiceHost(typeof(MyService),
new Uri[] { new Uri(netTcpLocalhostSimple) });
AppService .AddServiceEndpoint(
typeof(IMyServiceContract),
new NetTcpBinding(SecurityMode.None),
netTcpLocalhostSimple);
默认情况下 - WCF服务的行为是单连接模式 - 意思是 - 它一次只接受1个呼叫。
但是,当我调试服务器时,我发现有2个工作线程同时处理请求。
如果我没有设置它会怎么样?
答案 0 :(得分:1)
你的默认假设有点偏差;默认情况下,WCF使用会话感知协议的每会话方法,NetTcp使用传输会话。对于非会话感知协议,使用每次呼叫。
因此,每个客户端代理 - 在您的情况下每个线程 - 获取服务类的单独实例,只要会话未被终止,客户端,超时或由一个错误。
重点是:每个请求客户端都有自己的服务实例,这也意味着:每个服务实例只需要处理一个给定的客户端,例如:多线程等不是问题,因此对服务类进行编程就更容易了。
你期待什么/你需要什么?
马克