【问题标题】:client-server application design客户端-服务器应用程序设计
【发布时间】:2010-06-15 16:48:08
【问题描述】:

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

【问题讨论】:

  • 如果您告诉我们更多关于您想要完成的工作,您将获得更多关于您正在做的事情的具体信息。

标签: c# .net network-programming client-server


【解决方案1】:

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

WCF 允许异步回调,这将是实现您描述的架构类型的一种方式。我的大部分关于 WCF 的学习都是通过 Michele Bustamante 所著的Learning WCF 一书完成的。 WCF 非常广泛,我建议不要在没有良好参考的情况下从臀部射击。

【讨论】:

  • 米歇尔·布斯塔曼特很棒。这本书很好,她的网络广播也很棒。她的网站上有很多很棒的信息thatindigogirl.com
  • 在什么情况下你会选择经典套接字而不是 wcf ?
  • @nelly:这些天我很难找到使用经典套接字编程的充分理由,除非您正在与旧服务交谈
【解决方案2】:

当我为一个项目编写 Web 服务器时,我这样做的方式是在服务器上设置主线程来监听新请求。一旦请求进来,就会产生一个新线程并从不同的端口响应客户端。只要您的客户端/服务器正在通信,您就可以保持第二个线程处于活动状态。这要多久取决于很多事情。你会有成百上千的客户吗?如果是这样,您应该经常关闭线程/端口。但是,如果您只有几个客户,请让他们延长营业时间。

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

【讨论】:

    【解决方案3】:

    这将取决于。您的应用程序是否依赖于传入的输入,是否可以将其简化为代码块,是否可以按任何顺序处理它,...,还有很多关于您的情况尚不清楚的事情。

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

    阻塞套接字也有优点,更易于概念化和实现,并且有很多应用用途。

    您需要首先确定您的需求,这将决定您今后如何实施。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多