0

在调用 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)

但是,如果可能的话,我想要一个更好的解决方案。

对不起这个长长的问题。

4

2 回答 2

1

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

于 2017-12-13T22:54:12.613 回答
0

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

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

public class MyStickyService : IMyStickyService, IDisposable
{
}

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

于 2017-12-13T19:27:37.873 回答