在客户端和服务器之间的每个 WCF 调用中共享常量
Share constants across each WCF call between Client and Server
WCF 客户端在调用 WCF 服务之前计算了几个整数常量。我希望这些整数常量在 WCF 服务上可用。请注意,我不希望将它们用作方法参数,因为无论服务中的方法如何,都需要这些常量。对每个方法使用相同的参数是多余的。
明确地说,客户端在进行 WCF 服务调用之前会计算 'a' 和 'b' 的值。调用完成后,在整个调用过程中 'a' 和 'b' 都可以被服务访问。这类似于将它们用作方法的参数。这里唯一的区别是,WCF 服务中的每个方法都需要 'a' 和 'b'。因此,我希望有一个更好的解决方案,而不是将 'a' 和 'b' 作为参数添加到 WCF 调用中的每个方法。
所以,假设我在 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 服务的正常模式,但是,您可以创建一个 "sticky" 服务 class 在客户端持续期间。请注意,InstanceContextMode
设置为会话,这意味着只要客户端没有 disconnected/abandoned 或未发生超时,此 class 实例就会挂起(您需要定期发送脉搏,以便在您的客户不健谈时保持清醒)。另外,注意 ConcurrencyMode
.
[ServiceBehavior(Name = "MyStickyServicee",
InstanceContextMode = InstanceContextMode.PerSession,
ConcurrencyMode = ConcurrencyMode.Single)]
public class MyStickyService : IMyStickyService, IDisposable
{
}
这里有一些关于 instancing in wcf 的更多信息。
您可以为您的服务创建一个 "Request" class 作为数据合同,并在此请求中包含 a
、b
和任何其他值你可能想从客户那里得到。基本请求只会保留 a
和 b
,但其他请求可能会从中派生。
这样一来,您只需为每种方法向服务发送一个参数。
WCF 客户端在调用 WCF 服务之前计算了几个整数常量。我希望这些整数常量在 WCF 服务上可用。请注意,我不希望将它们用作方法参数,因为无论服务中的方法如何,都需要这些常量。对每个方法使用相同的参数是多余的。
明确地说,客户端在进行 WCF 服务调用之前会计算 'a' 和 'b' 的值。调用完成后,在整个调用过程中 'a' 和 'b' 都可以被服务访问。这类似于将它们用作方法的参数。这里唯一的区别是,WCF 服务中的每个方法都需要 'a' 和 'b'。因此,我希望有一个更好的解决方案,而不是将 'a' 和 'b' 作为参数添加到 WCF 调用中的每个方法。
所以,假设我在 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 服务的正常模式,但是,您可以创建一个 "sticky" 服务 class 在客户端持续期间。请注意,InstanceContextMode
设置为会话,这意味着只要客户端没有 disconnected/abandoned 或未发生超时,此 class 实例就会挂起(您需要定期发送脉搏,以便在您的客户不健谈时保持清醒)。另外,注意 ConcurrencyMode
.
[ServiceBehavior(Name = "MyStickyServicee",
InstanceContextMode = InstanceContextMode.PerSession,
ConcurrencyMode = ConcurrencyMode.Single)]
public class MyStickyService : IMyStickyService, IDisposable
{
}
这里有一些关于 instancing in wcf 的更多信息。
您可以为您的服务创建一个 "Request" class 作为数据合同,并在此请求中包含 a
、b
和任何其他值你可能想从客户那里得到。基本请求只会保留 a
和 b
,但其他请求可能会从中派生。
这样一来,您只需为每种方法向服务发送一个参数。