【问题标题】:providing HTTP interface提供HTTP接口
【发布时间】:2011-05-11 00:08:30
【问题描述】:
我正在从事一项基本上是“提供 HTTP 接口并移出 TCP”的任务。这就是我目前所知道的。
我正在寻找的是:
1] “提供 HTTP 接口” 这具体是什么意思。我的意思是在完成哪些步骤后,我可以得出结论,这项任务可以完成?
2] 为了完成这项工作,我还需要了解/询问哪些信息/问题。
我要做的是更好地了解问题空间,并寻找广泛用于以“正确”方式解决此问题的任何解决方案[模式]。
任何建议/指针都会很棒。
谢谢。
【问题讨论】:
标签:
http
networking
https
tcp
network-programming
【解决方案1】:
很明显,您被要求迁移当前通过 TCP/IP 上的专有应用程序协议提供的服务。
正如一位成员已经指出的那样,您永远不会“退出 TCP”,因为 HTTP 版本很可能无论如何都使用 TCP/IP。但我们都明白你的老板/客户想说什么。所请求的可能是我们今天所知的 Web 服务。是的,使用 HTTP 作为基础是正确的方法。
知道了这一点,您现在面临两种选择:
1) 呈现面向功能的服务
这里列出了服务可以处理的命令,并按照经典的function(argument) => result 样式实现它们。
对于这种方法,我建议使用JSON-RPC model
2) 提供面向数据的服务
您在此处列出正在移入和移出服务的信息,并按照 REST 循环 data OPERATION response 实现对这些信息片段进行的操作
对于这种方法,我建议使用REST style
如何选择?
简而言之:
- 如果您必须为少数客户端提供服务,并且命令集又小又简单,请使用 RPC。
- 如果您必须为许多客户提供服务,或者问题域很复杂,请使用 REST。
无论您采用哪种方法,除非强制使用 XML,否则始终首选 JSON 而不是 XML。
【解决方案2】:
您当前的进程是否在进行原始 TCP 套接字连接?
听起来他们几乎想要一个 HTTP Web 服务而不是原始 TCP。
但我认为需要更多信息。
【解决方案3】:
一个粗略的猜测是,有人想要一个 Web 前端来完成现在可能在命令行级别完成的事情......你真的应该询问更多细节,或者发布你得到的细节。 .
【解决方案4】:
提供HTTP接口并移出TCP
HTTP 运行在OSI model 的应用层,而 TCP 运行在传输层。这基本上意味着 HTTP 在 TCP 之上运行。
这到底是什么意思
HTTP 1.1 规范在RFC 2616 中定义。要真正符合 HTTP 1.1,您必须实现此 RFC 中定义的协议。
为了完成这项工作,我还需要了解/询问哪些信息/问题
我还想知道什么样的客户端将连接到这个服务器(浏览器、自定义客户端、其他服务)。获取一份包含尽可能多详细信息的规格表,并让客户承诺他们需要哪些功能:没有什么比因为 CEO 今天早上在他的邮箱中看到一个新的首字母缩写词而不得不一时兴起重写内容更糟糕的了。