Веб-сервис, который обрабатывает данные BLOB - PullRequest
4 голосов
/ 13 сентября 2011

Необходимо разработать некую «Сервисную» программу, которая будет получать и обрабатывать BLOB-данные с сервера БД Oracle.Клиенты будут написаны на Delphi 2010. У меня есть свобода выбора, какие технологии я буду использовать для создания серверной части этого проекта.И именно поэтому я разместил этот вопрос здесь.Не могли бы вы, ребята, указать мне несколько блогов, статей, форумов, где я могу получить различную информацию о создании таких услуг?У меня есть опыт работы с сервисами Microsoft WCF, но он имеет базовую интеграцию с клиентами Delphi через WSDL.Теперь я остановился на веб-службе ASMX, написанной на C #, и мне нужно получить несколько примеров, как я могу передавать BLOB-данные между сервером и клиентом.Было бы лучше, если бы сервер и клиент связывались через сырой сокет, а не инкапсулировали все данные в SOAP.Заранее спасибо и очень надеюсь на вашу помощь, ребята!

Ответы [ 4 ]

5 голосов
/ 13 сентября 2011

Я бы порекомендовал вам использовать RemObjects SDK для разработки приложений веб-служб для серверов и клиентов, он имеет множество функций, недоступных в Delphi & .Net, также они поддерживают различные сообщения, поэтому вы можете использовать двоичные сообщениявместо SOAP для передачи BLOB-данных, что намного быстрее и компактнее.

Они также. Net версия сервера и клиента, так что вы можете смешивать между ними.

2 голосов
/ 13 сентября 2011

Хорошим и стандартным способом обработки полей BLOB является протокол REST.

Благодаря протоколу REST вы можете получить, POST, PUT или DELETE двоичный BLOB из его URI. То есть, если ваш URI выделен для поля BLOB, вы сможете использовать необработанную двоичную передачу, а не передачу MTOM или Base64.

Например, вы можете получить BLOB-контент с ID = 123 с помощью GET по такому URI:

  http://servername/service/123/blob

Он будет работать также из стандартного веб-браузера. Поэтому, если BLOB - это картинка, она должна отображаться прямо в браузере.

Используя POST для того же URI, вы добавляете новый BLOB-объект или PUT обновляете BLOB-объект. С глаголом DELETE ... вы удаляете его. Это то, что RESTful означает через HTTP.

Вот, например, как работает наша платформа mORMot. Он также может быстро иметь прямой доступ к базе данных Oracle на стороне сервера с некоторыми выделенными классами. Что хорошо с такой платформой на основе ORM, так это то, что высокоуровневые клиенты могут использовать объекты и обрабатывать гораздо больше, чем только большие двоичные объекты, и что она обрабатывает безопасность и аутентификацию на уровне URL .

Но вы можете легко написать свой собственный сервис, используя некоторые модули, доступные в mORMot, если вам не нужна вся функция RESTful ORM:

Это все с открытым исходным кодом, работает с Delphi 5 и более поздних версий. доступно много документации (более 600 страниц) , включая высокоуровневое представление таких концепций, как REST, ORM или n-Tier.

1 голос
/ 13 сентября 2011

Это довольно высокий уровень, но вопрос таков:

Если это «сырой сокет», то на самом деле это не «веб-сервис»; хотя, конечно, есть середина REST или HTTP POST.

Если вы смотрите на веб-сервис, и данные нетривиальны, то вы, вероятно, захотите взглянуть на MTOM, чтобы избежать издержек base-64 (которая поддерживается в WSE 3, или (проще) WCF через BasicHttpBinding). Я ожидаю, что большинство инструментов будут иметь разумное понимание базового веб-сервиса с MTOM.

0 голосов
/ 14 сентября 2011

, если вы хотите представить некоторые данные в базе данных (в данном случае данные BLOB-объектов в Oracle) в качестве веб-службы WSO2 DSS [1] предоставляет более простое решение.Это по лицензии Apache и доступно бесплатно.Поскольку все продукты WSO2 основаны на углеродной платформе WSO2, создаваемые вами сервисы также поддерживают функции, связанные с MTOM, WS-Security и другими веб-сервисами.

[1] http://wso2.org/library/dss

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...