【问题标题】:Advice on web services without HTTP关于没有 HTTP 的 Web 服务的建议
【发布时间】:2009-09-15 16:40:33
【问题描述】:

我的公司正计划实施远程编程工具来配置现场的嵌入式设备。我假设这些设备上会有一个 HTTP 客户端,并计划实现一些 REST 服务供他们访问。不幸的是,我发现他们有一个 TCP 堆栈但没有 HTTP 客户端。我的一位同事建议我们尝试在没有 HTTP 客户端的情况下通过端口 80 发送“肥皂包”。这些设备也没有任何 SOAP 客户端。这可能吗?如果在设备连接的网络上运行 Web 服务器,是否会产生影响?对于如何实现此类功能的任何建议或最佳实践,我将不胜感激。

【问题讨论】:

  • 感谢您的回复...我使用 WebGet 方法实现了一个简单的 WCF 服务,并使用 Fiddler 演示了它如何处理 HTTP GET 请求。我假设当嵌入式开发人员编写一个原始的 HTTP 客户端时,它会以同样的方式工作。

标签: web-services


【解决方案1】:

如果你的服务器提供简单的文件,嵌入式设备真的只需要发送一个HTTP GET request(可能带有一些额外的数据来识别设备,这样服务器就可以知道要发送哪个固件版本)。

从那里,读取来自嵌入式设备套接字的原始数据几乎是一件简单的事情——您可能只需要忽略响应中的 HTTP 标头,或者您可以将服务器配置为不发送它对于这些请求。

【讨论】:

    【解决方案2】:

    您本身并不真正需要 HTTP 客户端。 HTTP 是一个非常简单的基于文本的协议,您可以根据需要自行实现。

    也就是说,您可能不需要自己实现它。如果他们有 TCP 堆栈和标准套接字库,您可能会找到一个简单的 C 库(例如 this one),它为您包装了 HTTP 或 SOAP 功能。然后,您可以将该库构建到您的应用程序中。

    【讨论】:

      【解决方案3】:

      基本 HTTP 并不是一个特别难以手动实现的协议。这是一个基于文本和行的协议,除了有效负载,服务器与“原始的、笨拙的”客户端配合得很好,这是一个简单的客户端所需要的。

      如果您可能只使用一个子集,那么只需编写它并完成。

      【讨论】:

        【解决方案4】:

        您可以通过套接字实现一个简单的 http 客户端(这里是如何在 ruby​​ 中实现的示例:http://www.tutorialspoint.com/ruby/ruby_socket_programming.htm

        这可能取决于您在嵌入式设备上使用的技术 - 如果您可以轻松使用 JSON 或 XML,那么使用上述方法的 Web 服务方法可能适合您。

        【讨论】:

          猜你喜欢
          • 2011-10-09
          • 1970-01-01
          • 1970-01-01
          • 2011-08-25
          • 1970-01-01
          • 2013-10-14
          • 1970-01-01
          • 2014-07-09
          • 2014-07-10
          相关资源
          最近更新 更多