0

我正处于计划项目的早期阶段。我想知道不涉及实现我自己的协议的常规/简单方法。

我知道 RPC 的概念 - 拥有一个服务器,该服务器公开可以由客户端调用的某些过程。好吧,我有很多客户端,但不幸的是我无法直接连接到它们(NAT/防火墙问题;它们主要是家用 PC)。因此,我正在考虑让客户端直接连接到服务器并调用“轮询操作”方法。我猜这是“向后 RPC”。也就是说,这个方法所做的只是阻塞,直到服务器决定需要做某事(这可能需要几秒钟或几天),然后返回一个指示需要做什么的数据片段,并实际调用适当的代码客户端并将其返回给服务器。注意3个步骤:

  1. 客户端轮询服务器。等待可能很长时间。
  2. 服务器以序列化的形式返回一些操作。例如,“给我发一份文件”
  3. 客户端执行操作并向服务器发送这个

所以我不明白我如何才能真正使用通过 HTTP 的东西来做到这一点,因为使用 HTTP 只有一个请求和响应。我想我可以使用 GET(第 1 步和第 2 步)和 POST(第 3 步)来做到这一点,但我希望有一些更优雅的东西,因为这包括服务器端的大量簿记(每个请求一个 cookie 或东西等)。

我正在寻找一种跨平台的方式来做到这一点。客户端将在 C# 中,但我还没有决定服务器。我不在乎这是否通过 HTTP 完成,所以“网络服务”可能适用也可能不适用。

关于符合我描述的协议/约定的任何想法?你能为我指出正确的方向吗?

4

1 回答 1

1

如果您想建立双向通信并且希望能够导航 NAT/防火墙/等,听起来您可能对WebSocket感兴趣。

于 2013-03-07T18:43:59.830 回答