首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#阻塞等待响应,再次

C#阻塞等待响应,再次
EN

Stack Overflow用户
提问于 2013-10-08 15:45:14
回答 1查看 700关注 0票数 0

This question询问如何传递查询和接收响应。我也想请求采取行动和提供信息。其中一些请求将采用参数,而大多数则不会。在回复中,几乎所有的回复都会回复"OK“,而其他人则会给我发送信息。除了这个命令协议之外,链路的两端对彼此一无所知。OP得到了他的答案,告诉他如何包装他的代码。

这样的回答告诉我应该使用什么技术,如何包装代码等等,这让我不知所措;由于我正在用最新的工具进行全新的开发,我发现并接受了我想使用TAP的想法,Jon回答了这个问题的执行部分。我现在知道如何包装我的代码了。不过,我的问题不是使用什么技术,也不是如何使用异步/等待。

但是这段代码是什么样子的呢?使用哪些方法/参数等来发送查询并获得答案?如何在无法找到彼此的两端之间建立沟通?如何包含参数?等。

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

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

说我有:

代码语言:javascript
复制
    public async void SendCommandAsync(Command c, Parameters p)
    {
        string response;
        await response = SendAsync(c, p);
    }

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

谢谢你容忍我的无知。

EN

回答 1

Stack Overflow用户

发布于 2013-10-08 16:36:49

HTTP协议似乎是您要寻找的。它通过TCP与远程主机执行单个请求/响应对。个别请求和相应的答复是独立的。HTTP实际上给出了表单的一个函数:

代码语言:javascript
复制
byte[] response = Request(string remoteUrl, byte[] request);

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

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

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

  • 如果您愿意承担TCP (它也适用于本地主机回送),则只需更改远程端点ip和端口。
  • 如果不愿意使用TCP,则可以假设存在双向Stream来交换消息。HTTP完全可以在任何流上工作。在本地主机连接上,可以使用命名管道。进程中您可以使用MemoryStream
  • 或者,假设表单object response = Request(object request);的函数存在,从而完全抽象出所有传输方面。该函数可以由SOAP支持,也可以由任何其他自定义传输支持。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19252331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档