C# NET服务器/客户端应用程序

4

我正在开发一个相对基础的服务器/客户端应用程序(逻辑上),但是我有些困惑,不知道应该使用什么技术来满足我的需求。看起来有几个选项,但基本上我将拥有一个主服务器和X个客户端应用程序(每个专用机器一个)。此设置的主要目的是使我能够基本上执行以下操作...

- 通过ASP前端向服务器(控制台应用程序)发送命令,以便安装软件到其中一个远程客户端。 - 服务器告诉客户端从各种FTP网站下载zip包到指定路径并进行解压。

我不确定,但好像C#具有套接字和某种WebClient类型的东西。我假设Sockets会是最好的路线,并使用异步方式(每个远程客户端都在其自己的线程中连接,单独处理与服务器的通信)。

如果有关此问题的任何信息都很棒!


1
套接字对于您的情况几乎肯定过于低级。WCF听起来是一个不错的选择。 - driis
2个回答

8

不详细说明您的具体要求,我建议您一定要考虑使用WCF

它涵盖了现有远程调用、客户端/服务器、Web服务等很多场景,在一个非常完整和安全的框架中实现。

使用WCF进行客户端/服务器编程


有趣的是,在研究C# NET中的服务器/客户端时,我还没有遇到过这个。基本上,我正在创建一个部署/管理面板。我们在世界各地拥有约40台机器,以及一台用于托管主服务器的中央机器。远程机器需要处理拉取安装包、安装它们、将它们变成Windows服务等任务。WCF看起来非常适合这个任务。 - user470760
正如Jon所说,WCF仅适用于.NET 2.0之后的版本,但我之前已经单独使用了WCF所涵盖的许多技术,现在在我的大部分.NET开发中都使用WCF。 - PMC
我想我会咬咬牙开始学习WCF。它看起来非常令人困惑,但应该是值得的。仅从阅读其优点列表中,它比.NET远程调用更具优势,听起来就像是我需要的东西。 - user470760
了解WCF的ABC,使用基本绑定保持简单,然后根据您的安全需求选择正确的绑定级别,并使用Visual Studios WCF配置编辑器和WCFTestClient使其运行起来。 - PMC

2
WebClient允许您进行HTTP请求,因此我认为它在这里并不相关。
对于这个应用程序,您可以采用许多方法。
其中一种方法当然是使用WCF,它提供的选项比您需要的要多得多。但是,WCF具有学习曲线,特别是如果没有先前的经验,很难理解所有抽象背后到底隐藏了什么。此外,如果您的目标是.NET 2.0,则无法使用此解决方案。
您还可以使用套接字实现简单的TCP客户端/服务器模型。虽然您可以针对原始套接字编程,但.NET还提供了方便的类System.Net.Sockets.TcpListener用于服务器和System.Net.Sockets.TcpClient用于客户端。这种方法更接近金属,但这是一个权衡:更容易理解您正在做什么,但您将不得不自己实现大量功能。

我很感激,我对WebClient、原始套接字、便利类等之间的区别并不确定。 - user470760

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接