需要开发一些“服务”程序,该程序将从Oracle DB服务器接收和处理BLOB数据。客户端将使用Delphi 2010编写。我可以自由选择将用于生成此项目的服务器部分的技术。这就是我在这里发布这个问题的原因。你们可以给我一些博客文章,文章,论坛,我可以获得有关创建此类服务的各种信息吗?我有使用Microsoft的WCF服务的经验,但它通过WSDL与Delphi客户端进行了整合。现在我停止使用C#编写的ASMX Web Service,需要获取一些示例如何在服务器和客户端之间传输BLOB数据。如果服务器和客户端通过原始套接字进行通信,而不是封装SOAP中的所有数据,那会更好。先谢谢你们,非常希望能帮到你们,伙计们!
答案 0 :(得分:5)
我建议您使用RemObjects SDK来开发服务器&客户端Web服务应用程序,它具有许多Delphi& .Net,它们也支持不同的消息传递,因此您可以使用二进制消息而不是SOAP来传输BLOB数据,这样更快,更紧凑。
他们也.Net版本的服务器和客户端,所以你可以在它们之间混合。
答案 1 :(得分:1)
这是相当高级别的,但问题也是如此:
如果它是“原始套接字”,它实际上不是“网络服务”;虽然当然有REST或HTTP POST的中间地带。
如果您正在查看Web服务,并且数据非常重要,那么您可能希望查看MTOM以避免base-64开销(WSE 3或(更简单)WCF支持) basicHttpBinding的)。我希望大多数工具能够合理地理解MTOM的基本Web服务。
答案 2 :(得分:1)
处理BLOB字段的一种不错的标准方法是REST协议。
由于REST协议,您可以从其URI中获取,POST,PUT或DELETE二进制BLOB。也就是说,如果您的URI专用于BLOB字段,您将能够使用原始二进制传输,而不使用MTOM或Base64传输。
例如,你可以在这样的URI上获得ID = 123且带有GET的BLOB内容:
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。
但是,如果您不需要整个RESTful ORM功能,则可以使用mORMot中的某些单元轻松编写自己的服务:
这是完全开放源代码,工作于Delphi 5及更高版本。有a lot of documentation available (more than 600 pages),包括REST,ORM或n-tier等概念的高级表示。
答案 3 :(得分:0)
如果你想将数据库中的一些数据(在本例中是oracle中的blob数据)作为Web服务公开,WSO2 DSS [1]提供了一个更简单的解决方案。这是在Apache许可下,它是免费提供的。由于所有WSO2产品均基于WSO2碳平台,因此您创建的服务也支持MTOM,WS-Security和其他与Web服务相关的功能。