Web service that handle BLOB data Web service that handle BLOB data oracle oracle

Web service that handle BLOB data


I would recommended you to use RemObjects SDK for develop server & client web services applications, it has many features not available on Delphi & .Net, also they support different messaging, so you can use binary message instead of SOAP to transfer the BLOB data, which is much faster and more compact.

They also .Net version of server and client so you can mix between them.


A nice and standard way of handling BLOB fields is the REST protocol.

Thanks to the REST protocol, you can GET, POST, PUT or DELETE a binary BLOB from its URI. That is, if your URI is dedicated to the BLOB field, you'll be able to use raw binary transmission, and no MTOM or Base64 transmission.

For instance, you can get a BLOB content with ID=123 with a GET at such an URI:

  http://servername/service/123/blob

It will work also from a standard web browser. So if the BLOB is a picture, it should be displayed directly in the browser.

With a POST at the same URI, you add a new blob, or with a PUT you update the blob. With a DELETE verb... you delete it. This is what RESTful means over HTTP.

This is, for instance, how our mORMot framework works. It is also able to fast have direct access to the Oracle database on the server side, with some dedicated classes. What is nice with such an ORM-based framework, is that high-level clients can use objects, and handle much more than only BLOBs, and that it handles URL-level security and authentication.

But you can easily write your own service using some units available in mORMot, if you don't need the whole RESTful ORM feature:

This is all Open-Source, working from Delphi 5 and later. There is a lot of documentation available (more than 600 pages), including high-level presentation of such concepts as REST, ORM or n-Tier.


This is fairly high-level, but so is the question:

If it is a "raw socket" it isn't really a "web service"; although there is of course the middle ground of REST or a HTTP POST.

If you are looking at a web-service, and the data is non-trivial, then you probably want to look at MTOM to avoid the base-64 overhead (which is supported in WSE 3, or (simpler) WCF via basicHttpBinding). I would expect most tools to have a reasonable comprehension of a basic web-service with MTOM.