2

我目前正在开发 WCF 服务并且有一个小问题。该服务是轮询双工服务。我通过发送到服务器的消息启动数据传输。然后,服务器通过回调通道将大数据包相当快地发送回客户端。

为了停止,我向服务器发送一条消息,告诉它停止。然后它通过回调通道发送一条消息,确认这一点,让客户端知道。

问题是一堆数据包被缓冲起来通过回调通道发送到客户端。这会导致等待确认返回的时间很长,因为它必须等待所有数据首先通过。

有什么方法可以清除服务器端回调通道的缓冲区?我无需担心丢失数据,只需将其丢弃并立即发送确认消息即可。

4

1 回答 1

1

我不确定这是否可以引导您进入正确的方向......我有一个类似的服务,当我查看我的 Subscribe() 方法时,我可以访问它:

var context = OperationContext.Current;
var sessionId = context.SessionId;
var currentClient = context.GetCallbackChannel<IClient>();
context.OutgoingMessageHeaders.Clear();
context.OutgoingMessageProperties.Clear();

现在,如果您有一种使用 IClient 对象的方法,并且可以访问从中获取 IClient 实例的上下文(解析它的上下文),那么运行以下两个语句是否可以满足您的要求?

context.OutgoingMessageHeaders.Clear();
context.OutgoingMessageProperties.Clear();

只是从我的想法中快速漫步。很想知道这是否会解决它,如果没有其他信息,请提供个人信息。您能否将 OperationContext 缓存为包含 2 个属性的 SubscriptionObject 的一部分,第一个是 OperationContext,第二个是您的 IClient 对象。

于 2012-05-07T18:40:13.753 回答