Сервер SOAP и клиентское приложение VCL + indy demo для Delphi XE?

151

Delphi раньше включал в себя демонстрационную папку для веб-сервисов, но, похоже, больше не включает ее.

Я только что попробовал демонстрационные проекты Delphi 7 ( SOAPDMServerWADсервер почти не имел пользовательского интерфейса и даже SOAPDMClient) и не смог заставить их работать, даже в Delphi 7.

Если кто-нибудь когда-либо делал подобную демонстрационную работу в Delphi XE или Delphi 2010, идентичную старым SOAPDMServerWAD+SoapDMClientдемонстрациям, работающим в Delphi XE, и с хотя бы минимальным пользовательским интерфейсом, исходящим от мастера приложений Delphi SOAP Server, это было бы идеально.

Обновление: демо-версия появляется вплоть до Delphi 2010, но использует устаревший WAD (web-app-debugger), я пытался перенести его на новую Indy runtime/web-app-development-harnessing-code, но не могу заставить ее работать. Демонстрация запускается, но сервер не имеет пользовательского интерфейса и, по-видимому, не запускает какой-либо HTTP-сервер (протестировано с помощью обычного веб-браузера через http://localhost:port/URL-адреса. Кстати, попробуйте поискать в Google для демонстрации, и этот URL-адрес появится, и Я спросил менее часа назад. Это страшно, Google.

Update2 Смотрите мой собственный ответ ниже, скоро появится ссылка с рабочим кодом.

Уоррен П
источник
3
[offtopic] Пару месяцев назад мне пришлось создать довольно простой SOAP-клиент в Delphi, который оказался головной болью и пустой тратой производительности, тем временем я предлагаю поискать альтернативу.
ComputerSaysNo
13
@Dorin - Использование средства импорта WSDL очень просто для создания SOAP-клиента.
Роберт Лав
8
@ Роберт, это не та часть, которая вызывает головные боли, это документация и отсутствие демонстраций и т. Д. Мне пришлось слишком много узнать о SOAP для упрощенного клиента, который не слишком мне помог, насколько я понял в Java намного проще, но я не пробовал => Я - усердный пользователь Delphi.
ComputerSaysNo
5
самое простое мыло - .net wcf
скрыто
5
Существует учебное видео по адресу edn.embarcadero.com/article/40973 . Соответствующий?
Алекс

Ответы:

39

Я разместил полный набор демонстраций для SOAP на CodeCentral как элемент 28789 .

Они содержат все демоверсии SOAP эпохи Delphi 2007 из WebServicesпапки, которая теперь обновлена ​​для Delphi XE и XE2, включая преобразование старых серверов WAD в новые серверы INDY VCL. Вы могли бы подумать, что это было впечатляюще, но это не так. Это действительно легко. Просто используйте мастер для создания нового проекта, а затем добавьте в проект интерфейс веб-службы и модули реализации, а также любые другие модули, принадлежащие старой демоверсии. Как только они добавлены в проект, они просто работают. Базовые демонстрационные SOAP-серверы действительно легко построить в Delphi, когда у вас будет работающая демоверсия, вы обнаружите, что ее довольно легко модифицировать и расширять.

Демонстрация, которая лучше всего отвечает на вопрос, который я задал выше, находится в SOAPDataModuleподпапке.

Основные проблемы с демо с эры 2007 года:

  1. WAD (отладчик веб-приложений) исчез. Вы должны создать новый сервер, используя сервер Indy, для оптимальных демонстрационных целей, избавляя вас от использования WAD (который ушел) или настройки среды ISAPI под IIS, что вряд ли идеально для демонстрационных целей. Новый демонстрационный проект, который я сделал, называется SoapDMServerINDY и состоит из модуля данных (datamod_u.pas), модуля пользовательского интерфейса в форме VCL ( IndyServerVCLFormUnit.pas) и веб-модуля Indy Server, который называется IndyServerWebModule.pas.

  2. Демо-версия Delphi 2007 прервалась благодаря новой практике использования подпапки Debug / Win32, в которой находится исполняемый файл демо-версии, вам нужно идти дальше. Я исправил демонстрационный сервер так, что он предупреждает вас сообщением об ошибке, если файлы данных не могут быть найдены, избавляя вас от загадочной «ошибки синтаксического анализа XML». Я также добавил некоторые проверки ошибок в некоторых демо-версиях, чтобы сообщить вам, что вам нужно установить interbase, чтобы эта демоверсия работала, поскольку для некоторых демоверсий требуется, чтобы Interbase был установлен и запущен, а для другого необходим псевдоним IBLOCAL, и предпочтительно стол, призванный EMPLOYEEсуществовать.

введите описание изображения здесь

Элементами этой демонстрации являются сервер ( SoapDMServerINDY , основанный на коде из SOAPDMServerWAD) и клиент SOAPDMClient, который подключается к демонстрационной версии и имеет две страницы, на одной странице будет показан доступ к основным данным через удаленное взаимодействие DBGrid +, а вторая На странице показано, как вызвать пользовательский метод SOAP.

Чтобы использовать демо: Вам нужно запустить сервер, нажать кнопку «Пуск», затем запустить клиент и нажать «Подключиться».

введите описание изображения здесь

Уоррен П
источник
1
Браво за усилия! Если вы не можете опубликовать исправленную демонстрацию, возможно, подойдет diff / patch?
Крис Торнтон
8
Это старый принцип сообщества открытого кода; Поцарапайте свой собственный зуд, и поделитесь результатами, и, надеюсь, это не только принесет пользу всем, но и со временем создаст сообщество, которое сможет делать вещи вместе, что мы не можем сделать в одиночку. ПОЖАЛУЙСТА, присылайте мне отчеты об ошибках, если вы обнаружите проблемы.
Уоррен П