套接字编程或REST服务

本文关键字:服务 REST 编程 套接字 | 更新日期: 2023-09-27 18:26:16

我的任务是编写一个服务器套接字,它将响应不同的url路径。每个url路径都应该在服务器上调用一个特定的方法。例如:

http://localhost/init
http://localhost/method1
http://localhost/method2

我不知道套接字是否可以做到这一点,我还认为web(REST)服务也应该可以做到。插座也可以这样做吗?

查看服务器端套接字示例[1],它们都有一个固定的url。

套接字编程或REST服务

我不是C#专家,但我已经用Java Sockets编程了一些小型Web服务器。从本质上讲,http请求使用TCP套接字。因此,从技术上讲,REST服务是通过使用这些套接字来实现的。

http://localhost/init将向localhost发送带有http-get标头的http请求。标题看起来像这样:

GET /init HTTP/1.1
Host: localhost

您可以看到,您可以读取第一行并决定您请求的URL(在本例中为"init")。在您开始在套接字上编写小型Web服务器之前,您应该明确地阅读一些关于http协议和http标头的内容。

你链接到的教程很糟糕,不要用它来学习套接字。套接字与编程语言无关,所以如果你真的想学习一些东西,就买一本关于网络编程的好书。

然后,您将了解到网络是通过使用层来可视化和抽象的。套接字为您抽象了所有混乱的网络层,为您提供了一个可读取和写入的字节流。

仅此一点并不能让两个应用程序进行对话。您需要一个在此套接字上分层的应用程序协议来构建消息。HTTP就是这样一种协议。

因此,不存在"套接字而非HTTP"这样的东西。没有套接字就不能使用HTTP(技术上可以,但没有人能做到)。反过来,REST是在HTTP之上分层的。

所以您只想使用ASP.NET Web API。这为您提供了一个易于编程的REST接口,隐藏了HTTP、套接字和下面的所有细节。