2014-02-21 65 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東西! –