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

C# 在客户端和服务器之间的每个WCF调用中共享常量,c#,wcf,.net-4.5,wcf-proxy,C#,Wcf,.net 4.5,Wcf Proxy,在调用WCF服务之前,WCF客户端会计算两个整数常量。我希望这些整数常量在WCF服务上可用。请注意,我不希望将它们用作方法参数,因为无论服务中的方法如何,这些常量都是必需的。每个方法都有相同的参数是多余的 需要明确的是,客户端在进行WCF服务调用之前会一直计算“a”和“b”的值。呼叫完成后,整个呼叫过程中服务都可以访问“a”和“b”。这类似于将它们用作方法的参数。这里唯一的区别是,WCF服务中的每个方法都需要“a”和“b”。因此,我更喜欢一个更好的解决方案,而不是在WCF调用中的每个方法中添加'

在调用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)
但是,如果可能的话,我想要一个更好的解决方案


很抱歉,这个问题太长。

这不是WCF服务的正常模式,但是,您可以创建一个在客户端期间持续的“粘性”服务类。请注意,
InstanceContextMode
被设置为session,这意味着只要客户端没有断开连接/放弃,或者没有发生超时,该类实例就会挂起(如果客户端不健谈,则需要发送周期性脉冲以保持其唤醒)。另外,请注意
并发模式

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

public class MyStickyService : IMyStickyService, IDisposable
{
}
以下是有关的更多信息。

您可以为您的服务创建一个“请求”类作为数据契约,并在该请求中包含
a
b
以及您可能希望从客户端获得的任何其他值。一个基本请求只会保留
A
b
,但其他请求可能会从中派生出来。

这样,每个方法只向服务发送一个参数。

计算完参数后发送,并将其保存在WCF中的某个静态位置(作为静态成员或MemoryCache中,甚至数据库或文本文件中-所有这些都取决于您的需要)。@ZoharPeled当您说“发送它们”时,是指作为参数吗?我不想在WCF中的所有方法中添加2个参数。所有方法都需要这些参数。我需要一个更干净的解决方案。是的,作为论据,但只有一次。当你将它们放入WCF时,将它们存储在服务器端。你应该共享更多信息以获得更好的帮助。现在你说它们是在每次调用WCF之前计算的-在你写的问题中,它们是常量(因此我认为你在客户端计算一次,然后继续使用相同的值)。请回答你的问题以澄清这一点。