Delphi dbXmlRpc (VCL). Часть 1. Постановка задачи. Выбор базовых компонентов.

Для реализации “Хотелки №1” необходимо создать прототип библиотеки компонентов для построения среды передачи данных посредством протокола XML-RPC.

Свой проЭкт, на текущем этапе, я буду разрабатывать для платформы Windows. Возможно когда-нибудь я смогу реализовать кроссплатформенность, но это пока из разряда “мечталок”.

Итак, в качестве среды разработки выбираю Delphi 2010, демо-версия которой доступна на сайте производителя.

Составные части проектируемой библиотеки:

  1. Компонент “DdbXmlRpcClient”. (Для построения клиентских приложений).
  2. Компонент “DdbXmlRpcServer”. (Для построения сервера приложений).
  3. Источник данных. (Для обеспечения подключений к “Хранилищу данных”, дальше по тексту - ХД).

В рамках этой задачи необходимо:

  • На стороне клиентского компонента обеспечить формирование и передачу запроса серверному компоненту на получение некоторых данных из ХД;
  • На стороне серверного компонента обеспечить парсинг клиентского запроса, затем сформировать и отправить запрос к ХД;
  • На стороне серверного компонента принять данные из ХД. Сформировать и отправить ответ клиентскому компоненту;
  • На стороне клиентского компонента обеспечить обработку ответа, полученного от серверного компонента, затем отобразить полученные данные на экране пользователя системы.

Реализация “хотелки №1”. Начало.

Для начала я дал Имя нашей новой библиотеке, для последующего использования. Отныне она будет называться Delphi dbXmlRpc (VCL), что на человеческом языке означает – “Delphi Database XmlRpc (Visual Component Library)”. Прошу любить и жаловать...

В качестве базовой библиотеки для реализации задуманного буду использовать компонент Delphi XML-RPC for Windows and Kylix for GNU/Linux (разработчики: Clifford E. Baeseman и Team-DXmlRpc):

  • Последняя версия доступная на сайте - 2.0.0 в CVS - 2.1.0;
  • Дата последнего обновления: 2004-04-20;
  • Поддерживается работа в средах Delphi 6, 7;
  • Для работы необходимы компоненты INDY 9 и XMLParcer от Stefan Heymann (входит в комплект);
  • Компонент уже достаточно давно не обновлялся авторами, но необходимый базовый функционал в нем заложен.
  • Для использования в проЭкте – годен (потребуется относительно небольшая доработка).

Я установил Delphi 2010, а с ним идет INDY 10. Для начала придется "довести до нужной кондиции" используемые сторонние компоненты Delphi XML-RPC, и XMLParcer, а именно:

  • Адаптировать для Delphi 2010 (желательно обеспечить совместимость с предыдущими версиями IDE и RAD Studio);
  • Адаптировать для использования с INDY 10 (желательно сохранить совместимость с предыдущей версией INDY 9).

Я использовал последние доступные версии библиотек 2.1.0 и 1.0.17 соответственно. После некоторых "танцев с бубном" удалось адаптировать код используемых библиотек для работы с UNICODE и собрать все это хозяйство в Delphi 2010. Поддержку предыдущих версий среды буду реализовывать позже...

Сборка получилась на “скорую руку”, по-быстрому, короче – “рыба”, но мне, для испытания  возможностей выбранных базовых компонентов – достаточно.

Кому интересно посмотреть что у меня получилось смотрим: http://www.opensvn.ru/project_info.php?id_project=dbxmlrpc

dXmlRcp

Читатель: "А где же передача данных?"
Писатель: "Вот отшлифую текущие наработки - тогда продолжим..."

За сим прощаюсь.

6 комментариев:

Степа Дятковский комментирует...

Блин я вроде бы оставлял коммент. Для этого можно использозвать уже готовые решения. На java - это JMX, на .NET - это Remotion. Есть еще целый раздел, который называется web сервисы: тут можно использовать и json и xml и т.д. Лично я сейчас копаюсь в исходном коде q3 (параллельно документируя этот код, кстати). У них помимо qvm реализован свой транспортный стек Net Channel. Решил вначале хотябы поверхостно ознакомиться со структурой этой, наверное, гениальной игры, а потом начинать свое...

DremLIN.Ru комментирует...

Вот-вот:
>> На java - это JMX, на .NET - это Remotion. Есть еще целый раздел, который называется web сервисы: тут можно использовать и json и xml и т.д.

А для Delphi ничего стоящего Open или Free НЕТУ!!!

Поэтому и решил заняться этим пробелом, тем более, что сейчас у меня реальный заказ на разработку информационной системы БД на Delphi, где ЭТО нужно.

Так что убью двух зайцев: и компонент напишу и заказ выполню ;)

>> Блин я вроде бы оставлял коммент.

Были непонятки с публикацией комментов. Сейчас вроде настроил премодерацию...

Степа Дятковский комментирует...

Ну только ежели так, то да. Я просто думаю раскрамсать Quake 3 на части и методом отбора взять от него лучшее :-)

DremLIN.Ru комментирует...

В качестве бредового предложения:
Создай блог со страшным названием "КуЭйК-ПОтроШИтеЛь!".
Опиши процесс и дай всему миру почитать про это увлекательнейшее ШОУ ПОТРОШЕНИЯ КУ3!!!!! ;)

ЗЫ: Кстати здесь тоже присутствует магическое слово "КУ" ;-)

Степа Дятковский комментирует...

Да я думаю выставить на аукцион домен KBAPTET.ru и приобрести что-нибудь более подходящее тематике моих собственных занятий и там блог поднять.

DremLIN.Ru комментирует...

Ку!артер [dot] ру... ;)

Давай продавай, поднимай блог... линку не забудь выслать!

ЗЫ. Опять что-то напутал с оповещением на имэйл :( поэтому так долго не отвечал...