2014-02-21 66 views
2

我需要开发一个简约的web服务。 它应该有两个功能:Delphi中最简单的Web服务

  1. senduserdata(远程应用程序将调用“senduserdata”送信息有关用户,如“ID”和“量”)
  2. sendconfirmation(远程应用程序会告诉“所有确定为proccess ID = X,注意事项有:NOTES

在过去,我没有一个SOAP DLL需要IIS运行,因为部署是在我的情况至关重要,IIS并不总是可用的是它可能有一个独立的EXE,揭露th e SOAP(或REST)接口?

+0

我不确定你是在寻找外部库还是用捆绑的东西来做到这一点。 RemObjects有一个很好的付费解决方案,既可以作为ISAPI DLL,也可以作为独立的应用程序使用。很久以前,我和Indy做过一些工作,但我认为你需要在那里做点什么。它看起来像Datasnap也有一个解决方案http://edn.embarcadero.com/article/41305。也许还可以看一下Delphi Web Script(DWS)。他们可能有一些东西。 – Graymatter

+0

听起来像你可以用http://xxm.sf.net/做的事情,特别是REST(因为xxm中的SOAP支持仍然需要一些工作)。 –

+0

另一种选择,非常接近例如到WCF RestFul Json http://blog.synopse.info/post/2012/03/07/Interface-based-services –

回答

0

我在几分钟内使用RemObjects试用并在服务器+客户端项目组中设置了SOAP作为通信协议(注意:我仅需要服务器)。我有很多的客户,并且访问他们的IIS来安装一个DLL有时太难了。

-1

是的,你可以使用Delphi的任何TCP库,包括一个HTTP服务器,例如Internet Direct (Indy)。通过Indy,您可以创建独立的应用程序(或更好的,Windows服务),而无需IIS。

在RESTful Web应用程序中,senduserdata命令将通过URL来实现像

http://example.com/api/users 

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

甲senduserdate呼叫用户ID 774422将写成像

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组分然后监听用于/休息/用户的资源,并在OnCommandOther HTTP请求事件处理程序,它会提取请求主体字符串,解析它,然后使用资源路径(/ 774422)中给出的ID将更改应用到用户。

+1

...恕我直言,不是一个很好的建议,重新发明weel。构建Rest服务器不仅仅是通过http返回一些“hello world”内容。 –

+1

那些想要避开SOAP东西及其讨厌的长头信封的伟大方法。对Indy规则的RESTful东西! –