需要開發一些「服務」程序來接收和處理來自Oracle DB服務器的BLOB數據。客戶將使用Delphi 2010編寫。我可以自由選擇使用哪些技術來生成此項目的服務器部分。這就是爲什麼我在這裏發佈這個問題。你們能否指點我一些博客文章,文章,論壇,我可以獲得有關創建此類服務的各種信息?我有微軟WCF服務的經驗,但它通過WSDL與Delphi客戶端進行了一體化。現在我停止使用C#編寫的ASMX Web服務,並且需要獲取一些示例,如何在服務器和客戶端之間傳輸BLOB數據。如果服務器和客戶端通過原始套接字進行通信,而不是封裝SOAP中的所有數據,那將會更好。在此先感謝您,並且非常希望您能提供幫助,夥計們!處理BLOB數據的Web服務
回答
這是相當高級的,但如此這樣的問題:
如果它是一個「原始套接字」,它是不是一個真正的「網絡服務」;雖然當然有REST或HTTP POST的中間立場。
如果你正在尋找一個web服務,並且數據是不平凡的,那麼你可能想要看看MTOM以避免base-64開銷(這在WSE 3中支持,或者(簡單的)WCF通過basicHttpBinding)。我希望大多數工具能夠合理理解使用MTOM的基本Web服務。
我會建議你使用RemObjects SDK用於開發服務器端& Web服務應用程序,它具有德爾福&淨沒有的許多功能,也支持他們不同的消息,這樣你就可以使用二進制消息而不是SOAP來傳輸BLOB數據更快,更緊湊。
它們也是.Net版本的服務器和客戶端,所以你可以在它們之間進行混合。
處理BLOB字段的好方法是REST協議。
感謝REST協議,您可以從其URI獲取,POST,放置或刪除二進制BLOB。也就是說,如果您的URI專用於BLOB字段,則可以使用原始二進制傳輸,而不需要MTOM或Base64傳輸。
舉例來說,你可以在這樣一個URI得到BLOB內容與ID = 123用GET:
http://servername/service/123/blob
它會從一個標準的Web瀏覽器也行。所以如果BLOB是一張圖片,它應該直接在瀏覽器中顯示。
使用同一個URI的POST,添加一個新的blob,或者使用PUT更新blob。用DELETE動詞...刪除它。這就是RESTful通過HTTP的含義。例如,這是我們的mORMot框架的工作原理。它也能夠fast have direct access to the Oracle database on the server side,以及一些專門的課程。這種基於ORM的框架的好處在於,高級客戶可以使用對象,並且處理的不僅僅是BLOB,而且它可以處理URL-level security and authentication。
但是你可以很容易地使用一些mORMot可用的單位,如果你不需要整個REST風格的ORM功能,編寫自己的服務:
- 對於一個快速HTTP.SYS基於HTTP/1.1服務器,take a look at SynCrtSock ;
- 對於HTTP/1。1個客戶端訪問,the same SynCrtSock unit defines some client classes;
- 對於非常快速的直接訪問Oracle,see SynOracle。
這是所有開放源代碼,從Delphi 5和更高版本開始工作。有a lot of documentation available (more than 600 pages),其中包括REST,ORM或n-Tier等概念的高級表示。
如果您想將數據庫中的某些數據(本例中爲Oracle中的blob數據)公開爲Web服務WSO2 DSS [1]提供了一種更簡單的解決方案。這是在Apache許可下的,它是免費的。由於所有WSO2產品都基於WSO2碳平臺,因此您創建的服務也支持MTOM,WS-Security和其他Web服務相關功能。
- 1. web服務處理protobuf
- 2. Web服務異常處理
- 3. 處理動態Web服務
- 4. Web服務異常處理
- 5. 處理來自Web服務
- 6. 處理/清理Web服務代理
- 7. 的Grails:在不同格式的RESTful Web服務數據處理
- 8. MVC3門戶網站處理來自Web服務的JSON數據
- 9. 春天RESTful Web服務 - 高容量的數據處理
- 10. 用於處理數據的MySQL vs Web服務器
- 11. Flex中的服務處理數據
- 12. 處理大量的服務器數據
- 13. 處理來自服務器的數據
- 14. Web服務未處理的異常
- 15. Web服務中的錯誤處理
- 16. Web服務的全局錯誤處理
- 17. ASP.Net web服務同步調用來處理數據庫隊列
- 18. 如何處理Web服務和數據模型/控制器
- 19. 我正在處理數據同步服務,使用web api
- 20. 如何連接wsdl soap web服務並處理數據
- 21. 在碎片中處理web服務調用和緩存數據
- 22. 用REST Web服務處理大量數據
- 23. 從Web服務處理數據庫 - 如何提高性能?
- 24. 通過ContentValues處理Blob數據類型
- 25. 處理微服務架構中的Web服務的API網關
- 26. 處理需要Web服務的應用程序 - 處理EndpointNotFoundExceptions
- 27. 數據表服務器端處理
- 28. 數據庫與服務器端處理
- 29. 數據表服務器端處理
- 30. 微服務順序數據處理
感謝您的回答Marc!基本上我需要Web服務,因爲會有另一種內部方法來提供額外的數據。你能給我發送一些我應該閱讀的鏈接嗎? – kseen
使用REST風格的方法,使用Base-64或MTOM不是必需的。您可以爲主RESTful URI內的blob字段指定一個sub-url地址。 HTTP喜歡二進制。如果您可以使用URI,則不必使其變得更加複雜。 –