繁体   English   中英

在客户端和服务器之间的每个WCF调用之间共享常量

[英]Share constants across each WCF call between Client and Server

在调用WCF服务之前,WCF客户端会计算几个整数常量。 我希望这些整数常量在WCF服务上可用。 请注意,我不希望将它们用作方法参数,因为无论服务中的方法如何,这些常量都是必需的。 每个方法都具有相同的参数将是多余的。

需要明确的是,客户端在进行WCF服务调用之前会一直为“ a”和“ b”计算值。 拨打电话后,服务可以访问整个通话中的“ a”和“ b”。 这类似于将它们用作方法的参数。 唯一的区别是WCF服务中的每种方法都需要“ a”和“ b”。 因此,我希望有一个更好的解决方案,而不是在WCF调用中为每个方法添加“ a”和“ b”作为参数。

因此,假设我在WCF服务中有3种方法->

void Count1()

void Count2()

void Count3()

客户端将为每个WCF方法调用计算不同的'a'和'b'值。 一种解决方案是使方法保持这种格式。

void Count1(int a, int b)

void Count2(int a, int b)

void Count3(int a, int b)

但是,如果可能,我希望有一个更好的解决方案。

很抱歉这个长问题。

您可以为服务创建一个“请求”类作为数据合同,并在此请求中包括ab以及您可能希望从客户端获取的任何其他值。 基本请求只能保留ab ,但其他请求也可以从中获得。
这样,您只为每种方法向服务发送一个参数。

对于WCF服务,这不是正常的模式,但是,您可以创建一个持续在客户端持续时间的“粘性”服务类。 请注意, InstanceContextMode设置为session,这意味着只要客户端尚未断开连接/放弃或没有发生超时,此类实例将一直挂起(如果您的客户端需要发送定期脉冲以使其保持唤醒状态,不chat不休)。 另外,请注意ConcurrencyMode

[ServiceBehavior(Name = "MyStickyServicee",
    InstanceContextMode = InstanceContextMode.PerSession,
    ConcurrencyMode = ConcurrencyMode.Single)]

public class MyStickyService : IMyStickyService, IDisposable
{
}

这是有关在wcf中实例化的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM