.net 再次阻塞等待响应
询问如何传达查询和接收回复。我也想发送行动和信息请求。其中一些请求将采用参数,而大多数不会。在所有的回复中,几乎所有回复都会回复“OK”,但其他回复会向我发送信息。除了这个命令协议之外,链路的两端对彼此一无所知。OP得到了他的答案,告诉他如何包装代码 这些回答告诉我应该使用什么技术,如何包装代码,等等,让我不知所措。;由于我正在使用最新的工具进行全新的开发,我发现并接受了我想要使用TAP的想法,Jon Skeet回答了这个问题。我想我现在知道如何包装我的代码了。不过,我的问题不是使用什么技术,也不是如何使用async/await 但是这个代码看起来像什么?使用什么方法/参数等发送查询并获得答案?如何在找不到对方的两端建立通信?如何包含参数?等等 我想使用一种策略模式,这样在一种情况下,两端是表单,命令是按钮按下的结果,文本框的参数。这种形式存在。第二种策略尚未编写,即两端通过计算机之间的网络进行通信。服务器将是一个Windows服务,命令模块是一个表单,它将发送命令以响应生产线自动化 说“使用RPC”或“使用套接字”对我没有帮助。什么是RPC?套接字代码与发送命令的部分有什么关系。。。代码是什么样子的 假设我有:.net 再次阻塞等待响应,.net,multithreading,events,blocking,c#-5.0,.net,Multithreading,Events,Blocking,C# 5.0,询问如何传达查询和接收回复。我也想发送行动和信息请求。其中一些请求将采用参数,而大多数不会。在所有的回复中,几乎所有回复都会回复“OK”,但其他回复会向我发送信息。除了这个命令协议之外,链路的两端对彼此一无所知。OP得到了他的答案,告诉他如何包装代码 这些回答告诉我应该使用什么技术,如何包装代码,等等,让我不知所措。;由于我正在使用最新的工具进行全新的开发,我发现并接受了我想要使用TAP的想法,Jon Skeet回答了这个问题。我想我现在知道如何包装我的代码了。不过,我的问题不是使用什么技术,也
public async void SendCommandAsync(Command c, Parameters p)
{
string response;
await response = SendAsync(c, p);
}
在调用此函数之前,需要准备什么?什么是SendAsync()?它如何与远程侦听器通信?两种策略之间有什么并行性,一种通过网络与SOAP或HTTP通信,另一种在同一台计算机上,一种形式与另一种形式通信
谢谢你容忍我的无知。HTTP协议似乎正是你想要的。它通过TCP与远程主机执行单个请求/响应对。单独的请求和相应的答复是独立的。HTTP本质上为您提供了以下形式的函数:
byte[] response = Request(string remoteUrl, byte[] request);
此函数中的所有内容都由库自动完成。服务器也是如此
如果您想使用结构化数据(对象树)进行通信,您可能应该使用Web服务(可能基于SOAP)。它们是HTTP之上的一层,允许您发送/接收对象,而不是字节数组
关于策略模式:您可以将模式放置在不同的层次上
- 如果您愿意采用TCP(也适用于本地主机环回),则只需更改远程端点ip和端口
- 如果您不愿意采用TCP,可以假定存在双向
流来交换消息。HTTP完全可以在任何流上工作。在本地主机连接上,可以使用命名管道。在此过程中,您可以使用
MemoryStream
- 或者,通过假设函数的形式
objectresponse=Request(objectrequest),您可以完全抽象掉所有传输方面代码>存在。该功能可以通过HTTP上的SOAP或任何其他自定义传输来支持
等待新的WebClient()。下载StringTaskAsync(”http://example.org/“”
取决于项目的结构以及使用的技术。它们执行完全相同的操作:下载一个字符串(该代码是完整的、可执行的,顺便说一句,它执行HTTP请求)。