- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是 WCF 的新手,正在尝试了解各种实例管理技术,我能够理解 Per-Call 和 Singleton 实例模式,但我对每个 session 实例模式感到困惑,在这种情况下,对于每个客户端,一个单独的 session 是创建对了吗?但这在我的案例中没有发生:
我的 WCF 服务:-
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession )]
public class CounterService : ICounterService
{
int _counter = 0;
public int GetCount()
{
_counter++;
return _counter;
}
}
客户代码:-
static void Main(string[] args)
{
CounterServiceReference.CounterServiceClient proxy = new CounterServiceReference.CounterServiceClient();
CounterServiceReference.CounterServiceClient proxy1 = new CounterServiceReference.CounterServiceClient();
Console.WriteLine("WCF Instance mode: Per Session");
Console.WriteLine("Invoking WCF service...");
Console.WriteLine("Counter: {0}", proxy.GetCount());
Console.WriteLine("Counter: {0}", proxy.GetCount());
Console.WriteLine("Counter: {0}", proxy.GetCount());
Console.WriteLine("---------------------------------------");
Console.WriteLine("Counter: {0}", proxy1.GetCount());
Console.WriteLine("Counter: {0}", proxy1.GetCount());
Console.WriteLine("Counter: {0}", proxy1.GetCount());
Console.ReadKey();
}
但是,控制台显示结果为 1,1,1---1,1,1 但我认为它应该是 1,2,3---1,2,3我哪里错了吗?请帮忙!时间差
最佳答案
我认为也许最好的解释方法是通过这些图表(借用关于该主题的 CodePlex article):
grock 的主要概念是,当给定客户端在 PerSession 模式下创建服务代理时,从该代理重复调用该服务将调用相同的服务实例(特定于该客户端)。这允许您在客户端的服务对象中存储一些状态,因为每个客户端都有自己的服务对象实例。
这与 PerCall 和 Singleton 的对比如下:
当您创建 PerCall 服务的代理时,您每次调用服务操作时都会获得一个全新的服务对象实例。
当您为 SingleTon 服务创建代理时,该服务只有一个实例处理所有客户端请求。
关于c# - WCF 实例管理 - PerSession 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19664815/
决定是使用 PerSession 还是 PerCall 的一般经验法则是什么? 我有一个稍微繁重(我认为..)的 WCF 服务,包含对大约 80 个表的 CRUD 方法。 我已将 WCF 服务分成 1
WCF 中的 basicHttpBinding 是否支持服务行为中的 PerSession 值? 在哪里可以找到总结每个绑定(bind)及其选项的所有信息的表格? ? 最佳答案 不,由于 HTTP 协
WCF 中的 basicHttpBinding 是否支持服务行为中的 PerSession 值? 我在哪里可以找到总结每个绑定(bind)及其选项的所有信息的表格? ? 最佳答案 不,由于 HTTP
我是 WCF 的新手,正在尝试了解各种实例管理技术,我能够理解 Per-Call 和 Singleton 实例模式,但我对每个 session 实例模式感到困惑,在这种情况下,对于每个客户端,一个单独
无法理解为什么 PerSession/WCF 服务的类型构造函数调用了两次。 ConcurrencyMode 是Multiple。刚刚同时启动五个执行相同 WCF 服务方法调用的客户端,在日志中我看到
我有一个自承载的 WCF 服务,其 InstanceContextMode 设置为 PerSession。 如何从主机应用程序检测到我的服务的新客户端连接( session ),并使用该新 sessi
在 PerSession 中,如何让服务上的 Dispose() 触发?在下面的代码中 Dispose() 没有被调用。当我调用 .Close() 或让 session 超时时都不会。 如果我将服务更
我想在我的 wcf 服务中使用以下内容在日志消息中记录用户: log4net.ThreadContext.Properties["user"] = this.currentUser.LoginName
我有 AJAX 客户端使用 SOAP 1.2 使用的 WCF 服务 网络配置: 据我所知read , 我必须使用 因为使用“wsHttpBinding”绑
1.) 我有一个主要方法 Processing,它以字符串作为参数,该字符串包含一些 x 个任务。 2.) 我有另一种方法 Status,它通过使用两个变量 TotalTests 和 CurrentT
我正在尝试从同一个 session 同时处理多个消息,并希望保证 FIFO,它仅适用于 ServiceBusSessionProcessorOptions 上的处理器 MaxConcurrentCal
我有一个带有静态数据上下文的 WCF 服务,但没有并发性。它已经运行了一年,没有任何问题,但前几天我们看到了一些奇怪的行为,用户正确地传递了数据,但得到了意想不到的不正确的数据。这确实通过了 F5,所
我是一名优秀的程序员,十分优秀!