我想在WCF中创建一个简单的客户端 - 服务器示例。我用回调做了一些测试,到目前为止效果很好。我打得四处一点点有以下接口:WCF - 客户端回调与轮询“保留订户列表”
[ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(IStringCallback))]
public interface ISubscribeableService
{
[OperationContract]
void ExecuteStringCallBack(string value);
[OperationContract]
ServerInformation Subscribe(ClientInformation c);
[OperationContract]
ServerInformation Unsubscribe(ClientInformation c);
}
它是一个简单的例子。稍微调整一下。您可以要求服务器“执行字符串回调”,在这种情况下,服务器反转字符串并调用所有订阅的客户端回调。
现在,问题来了:如果我想实现一个系统,其中所有客户端都向服务器“注册”,并且服务器可以“询问”客户端是否还活着,您是否会使用回调函数所以不是这个“stringcallback”,而是一种TellTheClientThatIAmStillHereCallback)。通过检查回调中的通信状态,我还可以“知道”客户端是否已经死亡。这种类似的东西:
Subscribers.ForEach(delegate(IStringCallback callback)
{
if (((ICommunicationObject)callback).State == CommunicationState.Opened)
{
callback.StringCallbackFunction(new string(retVal));
}
else
{
Subscribers.Remove(callback);
}
});
我的问题,以另一种方式:
- 服务器可能有3个客户
- 客户端A死了(我拉的笔记本电脑的插头)
- 服务器死亡并重新联机
- 新客户端出现
所以基本上,你会使用回调来验证客户的“仍然活着的状态”,或者你会使用轮询和跟踪“多久我没有听说过客户端”...
如何连接到WCF Sever的?你使用TCP吗?这将改变如何实施联营。 – 2009-12-15 17:33:39