.net 套接字与WCF
我在一个类似聊天的应用程序上工作,在客户端使用Silverlight,在服务器端使用wpf。现在的通信是基于套接字的:我有不同的消息类,通过TCP序列化和发送 <>我开始意识到,为每个可能的通信场景创建一个分离的消息类是一个很大的开销,并考虑移动到WCF。 因此,我需要知道以下几点:.net 套接字与WCF,.net,wcf,sockets,.net,Wcf,Sockets,我在一个类似聊天的应用程序上工作,在客户端使用Silverlight,在服务器端使用wpf。现在的通信是基于套接字的:我有不同的消息类,通过TCP序列化和发送 我开始意识到,为每个可能的通信场景创建一个分离的消息类是一个很大的开销,并考虑移动到WCF。 因此,我需要知道以下几点: 似乎使用WCF的整个通信都是基于客户端调用我的WCF服务中公开的方法。有没有办法知道哪个客户机调用某个方法?这对我的申请很重要 当客户端与服务器断开连接(例如关闭Silverlight客户端运行的浏览器窗口)时,WCF
Andrej对于3,我知道您可以调用async 对于4是的,他们有自己的线程。WCF是相当“大”和复杂的,你应该买一本书来更好地理解它。我的答案:
我没有确切的答案给你,所以我会在评论中留下这个。我强烈建议你买一本Juval Lowy的“编程WCF服务第二版”。他的书应该能回答你所有的问题。简短回答:您当然可以使用WCF处理所有场景。在我提到的书中可以找到how's。更多参考资料:感谢您的详细回答:)最后一个问题:我当前的方法(使用套接字)在性能方面是否远远优于WCF?如果你说,WCF可以同时处理1000个连接,那么套接字大约可以处理多少客户端?2000、5000甚至10000?我希望每个客户端每1到5秒发送一条消息。就像这样,每个连接的客户端都有一个会话id,每个发送的消息都有一个唯一的id,因此理论上,您应该能够发送尽可能多的同步消息,服务器可以反序列化、工作,然后序列化响应(带宽限制为)。使用tcp套接字意味着通过http上的二进制编码进行序列化的内容要少得多,因为没有http,去掉了应用层的中间人,并在代码中创建了自己的leightweigth层。这意味着反序列化工作和序列化工作更少,因此您可以更快地响应更多消息