【问题标题】:Simplest Webservice in DelphiDelphi中最简单的Web服务
【发布时间】:2014-02-21 08:52:41
【问题描述】:

我需要开发一个简约的网络服务。 它应该有两个功能:

  1. senduserdata(远程应用会调用“senduserdata”来发送用户信息,例如“ID”和“金额”)
  2. sendconfirmation(远程应用程序会告诉“进程一切正常ID=X,注释是:NOTES

过去我做了一个需要IIS 运行的SOAP dll,因为部署在我的情况下至关重要并且IIS 并不总是可用是否有可能有一个独立的exe 公开SOAP(或@ 987654332@) 接口?

【问题讨论】:

  • 我不确定您是否正在寻找外部库或使用捆绑内容的方法。 RemObjects 有一个很好的付费解决方案,它既可以用作 ISAPI DLL,也可以用作独立应用程序。很久以前我在 Indy 做过一些工作,但我认为你需要在那里自己做一些事情。看起来 Datasnap 也有解决方案edn.embarcadero.com/article/41305。也许还可以看看 Delphi Web Script (DWS)。他们可能有一些东西。
  • 听起来你可以用 xxm.sf.net 做一些事情,尤其是 REST(因为 xxm 中的 SOAP 支持仍然需要一些工作)。
  • 另一个选项,非常接近,例如到 WCF 是 RestFul Json blog.synopse.info/post/2012/03/07/Interface-based-services
  • 在这里你可以找到一些好的建议和替代品stackoverflow.com/questions/3793112/…
  • 看来 RemObjects(或 DataSnap)可能是我需要的工具。由于 RemObjects 比 Datasnap 更容易尝试(对于 Delphi 专业用户),我将从它开始。谢谢。

标签: web-services delphi delphi-xe2


【解决方案1】:

我在几分钟内成功使用 RemObjects 试用版并将 SOAP 设置为服务器 + 客户端项目组中的通信协议(注意:我只需要服务器)。

使用 VCL EXE,我可以更轻松地部署(我有很多客户,访问他们的 IIS 来安装 dll 有时太难了)。

【讨论】:

    【解决方案2】:

    是的,您可以使用任何包含 HTTP 服务器的用于 Delphi 的 TCP 库,例如 Internet Direct (Indy)。使用 Indy,您可以在没有 IIS 的情况下创建独立的应用程序(或者更好的是 Windows 服务)。

    在 RESTful Web 应用程序中,senduserdata 命令将由类似的 URL 实现

        http://example.com/api/users
    

    然后,客户端使用 HTTP PUTPATCH 请求来更新 users 资源。

    用户 id 774422 的 senduserdate 调用会写成这样

        LStream := TStringStream.Create('{ "amount":100.50, "currency":"EUR" }');
        try
          HTTP := TIdHTTP.Create;
          try
            HTTP.Put('http://example.com/api/users/774422', LStream);
          finally
            HTTP.Free;
          end;
        finally
          LStream.Free;
        end;
    

    在服务器端的 Delphi 应用程序中,TIdHTTPServer 组件然后侦听对 /rest/users 资源的 HTTP 请求,并在 OnCommandOther 事件处理程序中提取请求正文字符串,解析它并应用更改给具有资源路径 (/774422) 中给定 ID 的用户。

    【讨论】:

    • ...恕我直言,这不是重新发明轮毂的好建议。构建一个 Rest 服务器不仅仅是通过 http 返回一些“hello world”内容。
    • 对于那些想要远离 SOAP 及其令人讨厌的长而高昂的信封的人来说,这是一种很好的方法。关于 Indy 规则的 RESTful 内容!
    猜你喜欢
    • 2011-05-02
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 2016-05-19
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多