2010-06-15 77 views
2

我想在.net平台上使用套接字创建一个客户端 - 服务器应用程序,并且是网络编程的新手,我有两难困境。 客户端会经常向服务器发送数据,服务器也会经常通知客户端。 什么是最好的设计方法?服务器是否应该保持一个线程与每个客户端通信,直到它退出或仅客户端向服务器发送数据,并定期更新客户端(几秒钟)或不更新客户端? 有些帮助会很大。多谢你们。 PS:客户数量将达到数千人。客户端服务器应用程序设计

+0

如果你告诉我们更多关于你想要完成的事情,你会得到更多关于你在做什么的具体信息。 – 2010-06-15 16:57:39

回答

0

当我为一个项目编写Web服务器时,我做回它的方式是在服务器上有您的主线程来侦听新的请求。一旦有请求产生一个新的线程并从另一个端口响应客户端。只要您的客户端/服务器正在进行通信,您就可以保持第二个线程的活动这需要多长时间取决于很多事情。你会有成千上万的客户吗?如果是这样,你应该经常关闭线程/端口。但是,如果你只有几个客户,让他们打开更长的时间。

我假设发送给客户端的数据对于每个客户端都是不同的。如果它有相同的数据,那么你应该使用UDP将它广播给所有客户端。

3

您所描述的设计类型的.net解决方案称为 Windows Communication Foundation或简称为WCF。

WCF允许异步回调,这将是您实现所描述的体系结构类型的一种方式。我通过Michele Bustamante的书学习WCF了解了关于WCF的大部分知识。 WCF非常广泛,如果没有很好的参考,我会建议不要从臀部射击。

+0

米歇尔布斯塔曼特真棒。这里的书很好,她的网络广播很棒。在她的网站http://www.thatindigogirl.com/ – CkH 2010-06-15 16:55:38

+0

很多很好的信息在什么情况下你会去经典的套接字而不是wcf? – boo 2010-06-15 16:57:31

+0

@nelly:现在我很难提出一个很好的理由来使用传统的套接字编程,除非您正在与传统服务交谈 – 2010-06-15 17:33:48

0

这将取决于。你的应用程序是否依赖于输入,它可以被缩减为大块的代码,它可以以任何顺序处理......,很多事情还不知道你的情况。

异步套接字有优点,但不适用于所有类型的应用程序。

阻塞套接字也有优点,更容易概念化和实现,并有许多应用程序的用途。

您需要首先确定您的需求,这将决定您如何执行前进的任务。