Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过http堆叠本机协议的选项?_C#_Http_Sockets - Fatal编程技术网

C# 通过http堆叠本机协议的选项?

C# 通过http堆叠本机协议的选项?,c#,http,sockets,C#,Http,Sockets,我们有一个客户机/服务器系统,其中所有通信都是通过TCP上的二进制/SSL流使用本机协议完成的。我们所有的代码都是用C#.NET 2.0编写的,有些部分是用3.5编写的。我们的协议旨在支持各种消息传递模式,即请求/响应,并且由于缺少更好的术语,不定期地从客户端或服务器发送单向消息 我们的目标是为我们的系统添加一个功能,通过HTTP传输我们的协议。这样做有几个原因,但我不需要在这里解释。请告诉我是否应该 其思想是使用标准请求方法(即GET、PUT、POST,但不是DELETE)将我们的协议作为应用

我们有一个客户机/服务器系统,其中所有通信都是通过TCP上的二进制/SSL流使用本机协议完成的。我们所有的代码都是用C#.NET 2.0编写的,有些部分是用3.5编写的。我们的协议旨在支持各种消息传递模式,即请求/响应,并且由于缺少更好的术语,不定期地从客户端或服务器发送单向消息

我们的目标是为我们的系统添加一个功能,通过HTTP传输我们的协议。这样做有几个原因,但我不需要在这里解释。请告诉我是否应该

其思想是使用标准请求方法(即GET、PUT、POST,但不是DELETE)将我们的协议作为应用程序/二进制文件嵌入HTTP请求中,并遵循HTTP规范。如果我们的协议只是请求/响应,那么这将是相当直接的。主要问题来自单向消息,更具体地说是来自服务器的未经请求的消息。另一个重要的问题是HTTP不面向持久连接,但我相信使用HTTP/1.1可以克服这一问题。第三个问题是服务器连接不是无状态的

我们已经设计和原型制作了几个星期,我们提出了几个想法:

  • 重构服务器端和客户端的通信层和协议层中的代码。虽然大部分代码都是共享的,但很多工作很可能不会成功。这里的问题是,我们设计拙劣的协议能做到这一点吗
  • 使用代理方法。也就是说,使用WCF创建一个HTTP服务器,打开HTTP消息,并通过持久连接将本机消息中继到服务器和从服务器传出。这需要在客户端上有一个抽象层,它实际上会维护到代理的两个连接。一个连接执行请求/响应,另一个连接使用延迟响应技术承载未经请求的消息
  • 我们还没有研究的HTTP隧道
  • 我们希望有人曾经遇到过这种挑战,并能提供一些合理的建议


    请接受我的歉意,如果这是一个错误的地方来发布这个问题。

    <>对于服务器启动的消息,您可以考虑。根据ASP.NET MVC 4 beta版中的Web套接字的支持,对于服务器启动的消息,

    ,您可以考虑。据了解,ASP.Net MVC 4 beta版中支持web套接字。

    很好的建议,但我们的系统运行在安全网络中,大多数web代理服务器还不支持WebSocket。很好的建议,但我们的系统运行在安全网络中,大多数web代理服务器还不支持WebSocket。