【问题标题】:What does WCF Client Session mean?WCF 客户端会话是什么意思?
【发布时间】:2013-05-27 10:07:35
【问题描述】:

我在 IIS 中使用 InstanceMode = PerSessionConcurrencyMode = Single 托管 WCF WebService。我正在从 Java Servlet 调用此 wcf 服务并按顺序发送请求(到目前为止一切顺利)。

现在,当我通过 IE/Chrome/Firefox 等访问它时,它应该只为我打开的一个客户端窗口在我的 WCF 服务实例上创建,但 IIS 正在创建它的多个实例,这需要很长时间才能实例化为我的服务在内部连接到旧系统。

还是我完全误解了客户端会话? WCF 客户端会话是什么意思?谁定义了它的边界,我可以从我的网络应用代码中规定它的边界吗?

【问题讨论】:

    标签: wcf session servlets client


    【解决方案1】:

    WCF 中的会话由客户端通过打开通道启动,并在该通道关闭或出现故障后关闭。因此,如果您在服务上看到多个实例(但是,不确定您是如何确认有多个实例的),那是因为有多个连接/通道打开了服务。

    这里的 MSDN 文章可能会有所帮助。粘贴相关摘录, http://msdn.microsoft.com/en-us/library/ms733040.aspx

    WCF 会话具有以下主要概念特征: • 它们由调用应用程序(WCF 客户端)显式启动和终止。

    • 会话期间传递的消息按接收顺序进行处理。

    • 会话将一组消息关联到一个会话中。不同类型的相关性是可能的。例如,一个基于会话的通道可以基于共享的网络连接关联消息,而另一个基于会话的通道可以基于消息主体中的共享标签关联消息。可以从会话派生的特征取决于相关性的性质。

    • 没有与 WCF 会话关联的常规数据存储。

    HTH, 阿米特·巴蒂亚

    【讨论】:

    • 感谢您提供更多信息。实际上,在 WCF 服务构造函数中,我正在实例化一个 Legacy 对象,我在日志中注意到该对象已为每个线程创建了多次(这是正确的),即一个 WCF Instance=One Legacy Object。我想保持这种方式,因为我的遗留对象不能同时被两个线程访问,但它们可以在多个线程中并排重合。目前我的 Java 客户端只是一个破解版本,我正在寻找信息,以便每个客户端连接访问单个 WCF 实例...
    【解决方案2】:

    您可能会发现关于代码项目的文章对这个问题很有用Here

    会话对我们所有人来说都是一个很好理解的术语,并且根据我们的共同理解,它是(嗯,更少或更多)实体相互识别的一段时间。我们中的一些人可能也在 ASP.NET 中使用过它。 WCF 中的概念几乎相似,但技术和用法略有不同。

    在 WCF 中,总是有一个服务类实例来处理传入的服务请求。这些实例可能已经存在(当请求到达时在服务器上)或者可以根据需要创建。在 WCF 中,会话的概念主要是管理这些服务实例,以便以优化的方式利用服务器。在服务器上,有一个名为 InstanceContext 的特殊类,它创建/加载服务类实例并将请求分派给它。相关性可以理解为:

    您可以在此处查看内容是如何参与的。当一些请求到达时,它通过实例上下文被路由到服务实例。假设有一千个请求,那么服务将不得不创建一千个实例上下文(这反过来又会创建一千个服务实例)来处理这些请求。如果以这种方式处理请求,则服务称为 PERCALL 服务,因为每个请求都由新的实例上下文和服务实例对象提供服务(以后将它们称为服务对象)。假设有一个客户端发出了 100 个请求。如果服务识别此客户端并始终通过专用服务对象为其提供服务,则此类服务将被称为 PERSESSION 服务,因为它识别客户端并通过服务对象的单个实例为其提供服务。另一方面,如果所有请求(无论客户端如何)都由服务对象的单个实例提供服务,则该服务将被称为 SINGLETON 服务。下面的图片总结了这个概念:上面的链接会有更多信息。

    【讨论】:

    • 感谢您的最佳答案,很高兴您发现它有用。
    • 我不想对仅链接的答案喋喋不休,但请引用本文的相关部分。这个答案没有让我想去那里 - “你可能会发现......”太棒了!明天它也可能死了。
    • 在答案@Gusdor 中添加了更多注释
    猜你喜欢
    • 1970-01-01
    • 2012-11-19
    • 2016-10-12
    • 2018-11-25
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 2018-05-10
    相关资源
    最近更新 更多