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




на про (2)

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

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

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

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

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


Answers

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

Они содержат каждую из демонстрационных WebServices 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.

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


Короче говоря, да, это вполне разумная вещь.

Лучшее, что вы можете сделать, это обфускация. Если вы сохраняете токен в памяти, пользователь root может заглянуть в него. Если вы зашифруете его, вы также должны сохранить ключ шифрования на устройстве, иначе вы не сможете использовать токен ... и ключ может быть украден так же просто, как и токен.

Если у кого-то есть root на устройстве, все ставки отключены. Не оптимизируйте для этого случая. Если ваше приложение является супер-пупер высокой безопасностью, не разрешайте ему запускаться на корневых устройствах или реализовать функцию удаленного удаления, когда пользователь может сообщить об украденном устройстве, и вы можете аннулировать токен на сервере.

Android 4.3 представила Android Keystore . Это предположительно обеспечивает безопасный магазин для криптографических ключей. Это можно использовать для хранения ключа, который используется для дешифрования зашифрованного токена, хранящегося в традиционных методах. Однако ссылочная ссылка не упоминает о том, как внедренное устройство влияет на безопасность этого.

ОБНОВЛЕНИЕ 2018: Большинство современных Android-устройств имеют аппаратные хранилища с поддержкой технологии через надежную среду выполнения (TEE), предоставляемую SoC. Это делает невозможным (см. Ниже) хакеру получить главный ключ хранилища ключей, который в противном случае понадобился бы для дешифрования ключей, которые вы сохранили в Android Keystore.

Ну, «невозможно» - сильное слово. Это лучше сказать как «неосуществимое». Значит, вам нужно что-то вроде электронного микроскопа для сканирования бит, слитого в SoC, обеспечивающего TEE. Если вы являетесь типом человека, данные которого требуют такого рода внимания, у вас, вероятно, возникают большие проблемы.





web-services delphi soap delphi-xe delphi-xe2