【发布时间】:2009-06-24 19:01:29
【问题描述】:
我在一个类似聊天的应用程序上工作,我在客户端使用 Silverlight,在服务器端使用 wpf。现在通信是基于套接字的:我有不同的消息类,我序列化并通过 TCP 发送。
我开始意识到为每个可能的通信场景创建一个单独的消息类是一个相当大的开销,并考虑迁移到 WCF。
因此我需要知道以下几点:
似乎使用 WCF 的整个通信都是基于从我的 WCF 服务调用的客户端公开方法。有没有办法知道哪个客户端调用了某个方法?这对我的应用非常重要。
当客户端与服务器断开连接(例如关闭运行 Silverlight 客户端的浏览器窗口)时,WCF 是否会通知我的应用程序?这也很重要。
方法调用是否完全异步?如果是这样,我是否必须将每个方法调用重新路由到服务器应用程序的主线程?
每个客户端连接都有自己的线程吗?如果客户端调用方法每 2 秒说一次,那么服务器(在功率合理的 PC 上运行)可以同时处理多少个连接?我只需要一个估计(10、100、1000 甚至更多)。 “更多”会很棒;)
也许我完全错了,WCF 根本不能基于连接工作。然后我必须找到一种解决方法来仍然管理活动连接列表。
感谢您的帮助! 安德烈
【问题讨论】:
-
我没有可靠的答案给你,所以我会在评论中留下这个。我强烈建议您获取 Juval Lowy 的“Programming WCF Services 2nd Edition”的副本。他的书应该回答你所有的问题。简短的回答:您当然可以使用 WCF 处理所有场景。方法可以在我提到的书中找到。