0

这个问题询问如何传达查询和接收响应。我也想发送行动和信息请求。其中一些请求将带参数,大多数不会。在回复中,几乎所有回复都会发回“OK”,但其他人会向我发送信息。链路的两端除了这个命令协议外,彼此一无所知。OP 得到了答案,告诉他如何包装他的代码。

我被这样的回复淹没了,告诉我要使用什么技术,如何包装代码等等;并且由于我正在使用最新工具进行全新开发,因此我发现并接受了我想使用 TAP,因为 Jon Skeet 回答了该问题的 OP。我想我现在知道如何包装我的代码了。不过,我的问题不是使用什么技术,而不是如何使用 async/await。

但是这段代码是什么样的?使用什么方法/参数等来发送查询并获得答案?找不到对方的两端如何建立通信?如何包含参数?等等。

我想使用一种策略模式,以便在一种情况下,两端是表单,命令是按钮按下的结果,文本框的参数。这种形式存在。第二种策略,尚未编写,是让两端在计算机之间通过网络进行通信。服务器将是一个 Windows 服务,命令模块是一个表单,将发送命令以响应生产线自动化。

说“使用 RPC”或“使用套接字”对我没有帮助。什么是 RPC?套接字代码与发送命令的部分有什么关系……代码是什么样的?

说我有:

    public async void SendCommandAsync(Command c, Parameters p)
    {
        string response;
        await response = SendAsync(c, p);
    }

在调用此函数之前需要准备什么?SendAsync() 是什么?它如何与远程侦听器通信?两种策略之间有什么并行性,其中一种通过网络通信,使用 SOAP 或 HTTP,另一种在同一台计算机上,一种形式到另一种形式?

谢谢你容忍我的无知。

4

1 回答 1

0

HTTP 协议似乎是您正在寻找的。它通过 TCP 与远程主机执行单个请求/响应对。各个请求和相应的答复是独立的。HTTP 本质上为您提供了以下形式的功能:

byte[] response = Request(string remoteUrl, byte[] request);

此函数中的所有内容都由库自动化。服务器也是如此。

如果您想使用结构化数据(对象树)进行通信,您可能应该使用 Web 服务(可能基于 SOAP)。它们是 HTTP 之上的一层,允许您发送/接收对象而不是字节数组。

关于策略模式:您可以将模式放置在不同的层。

  • 如果您愿意假设 TCP(也适用于 localhost 环回),您只需要更改远程端点 ip 和端口
  • 如果您不愿意假设 TCP,您可以假设Stream存在双向交换消息。HTTP 可以在任何流上工作。在 localhost 连接上,您可以使用命名管道。您可以在进程中使用MemoryStream.
  • 或者,您通过假设表单的功能object response = Request(object request);存在来完全抽象出所有传输方面。该功能可以由 SOAP-over-HTTP 或任何其他自定义传输支持。
于 2013-10-08T16:36:49.750 回答