- •Интернет, как источник информации для разработки пакета программ для курса программирования и основы алгоритмизации
- •Гл2. Интернет, как источник информации для разработки пакета программ для курса программирования и основы алгоритмизации
- •Глава 1 Cправка языков программирования
- •§1 Справка языков программирования
- •§2 Историческая справка развития Delphi
- •Целевая платформа
- •История языка
- •Компиляторы
- •Синтаксис языка Операторы
- •Выражения
- •Типы данных
- •Объекты
- •§3 Обзор методов алгоритмов
- •1.3. Основные этапы полного построения алгоритма
- •2.Построение модели
- •3.Правильность алгоритма
- •4.Реализация алгоритма
- •5.Анализ алгоритма и его сложности
- •§4 Программа Delphi, обьектно-ориентированное программирование
- •Краеугольные камни ооп Формула объекта
- •Природа объекта
- •Объекты и компоненты
- •Классы объектов
- •Три кита ооп
- •Объекты
- •Конструкторы и деструкторы
- •Свойства Понятие свойства
- •Методы получения и установки значений свойств
- •Свойства-массивы
- •Свойство-массив как основное свойство объекта
- •Методы, обслуживающие несколько свойств
- •§5 Общая структура пакета программирования и алгоритмитизации
- •1. Алгоритмизация и алгоритмы
- •1.1 Понятие алгоритмизации и алгоритмов
- •1.2 Свойства алгоритмов
- •2. Программирование
- •2.1 Понятие программирования
- •2.2 Понятие компьютерной программы
- •§6 Инструкция для Программы htm2chm
- •Введение
- •Эволюция средств разработки Web приложений в Delphi Средства разработки Internet-приложений §1. Средства разработки Internet-приложений из состава Borland Kylix
- •§2 Средства разработки Internet-приложений из состава Borland Delphi 6
- •§3. Форматы приложений для web
- •§5. Разработка web приложения
- •П2. Использование шаблонов
- •§6. Первый проект
- •П2 Использование tAdapter
- •П3. Работа с базами данных
- •§7. Использование Web Services
- •П2. Протокол soap
- •П3. Разработка сервера Web Services в Delphi6
- •П4. Описание интерфейса сервера
- •П5. Реализация методов сервера
- •П6. Создание проекта приложения Web Services в Delphi
- •П7. Разработка клиента Web Services в Delphi6
- •Заключение
П6. Создание проекта приложения Web Services в Delphi
Остался последний шаг – создание проекта приложения. В IDE выберем пункт меню File/New/Other и с закладки WebServices значок SOAP Server Application. Будет выведен диалог выбора формата приложения Web Services. Мы выберем CGI формат. При этом будет создан проект с Web модулем, содержащим три компонента: HTTPSoapDispatcher, HTTPSoapPascalInvoker, WSDLHTMLPublish.
THTTPSoapDispatcher получает и обрабатывает SOAP сообщения, перенаправляя их invoke интерфейсам, зарегистрированным в приложении. Таким образом, THTTPSoapDispatcher является диспетчером, ответственным за прием, распределение и отправку SOAP сообщений. Интрепретация запросов и вызов методов интерфейсов осуществляется другим компонентом, указанным в свойстве Dispatcher (HTTPSoapPascalInvoker1). THTTPSoapDispatcher автоматически регистрирует себя в Web модуле, как автодиспетчера. При этом все запросы передаются THTTPSoapDispatcher, что избавляет Вас от необходимости создавать обработчики запросов Web модуля.
WSDLHTMLPublish1 – данный компонент генерирует и выдает по запросу клиента описание интерфейса сервера. Далее в проект необходимо подключить файлы с описанием и реализацией интерфейса. Для этого в IDE выберем пункт меню Project/Add to project и появившемся диалоге выберем модули с описанием и реализацией методов интерфейса. Можно откомпилировать проект и поместить полученный исполняемый файл в директорию для CGI скриптов Web сервера. Сервер готов к работе.
П7. Разработка клиента Web Services в Delphi6
Условно разработку клиента можно разбить на две части:
Получение описания интерфейса сервера
Написания кода вызова методов сервера
В случае разработки сервера на Delphi существует модуль с описанием интерфейса сервера на языке Object Pascal, т.е первый этап может быть пропущен. В случае если сервер был разработан с использованием других языков или модуль с описанием интерфейса не доступен, необходимо получить описание интерфейса в формате WSDL или XML. Первый вариант – это попросить файл с описанием у разработчиков, второй сгенерировать описание самому. Для этого достаточно запустить Web браузер в строке адреса набрать: http://<имя сервера>/<папка с CGI>/<имя приложения сервера>/wsdl. В нашем примере я, разместил сервер на локальной машине, web сервер Apache, строка адреса в этом случае http://localhost/cgi-bin/Server.exe/wsdl . При этом на экран будет выведена таблица с описанием интерфейсов сервера.
Необходимо выбрать в таблице интересующий нас интерфейс IEncodeDecode при этом будет сгенерировано описание интерфейса в формате xml. <?xml version="1.0" ?> <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema"name="IEncodeDecodeservice"targetNamespace="http://www.borland.com/soapServices/" xmlns:tns="http://www.borland.com/soapServices/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"> <messagename="US2RUSRequest"> <part name="Value"type="xs:double" /> </message> <messagename="US2RUSResponse"> <part name="return"type="xs:double" /> </message> <messagename="RUS2USRequest"> <part name="Value"type="xs:double" /> </message> <messagename="RUS2USResponse"> <part name="return"type="xs:double" /> </message> <portTypename="IEncodeDecode"> <operationname="US2RUS"> <input message="tns:US2RUSRequest" /> <output message="tns:US2RUSResponse" /> </operation> <operationname="RUS2US"> <input message="tns:RUS2USRequest" /> <output message="tns:RUS2USResponse" /> </operation> </portType> <bindingname="IEncodeDecodebinding"type="tns:IEncodeDecode"> <soap:binding style="rpc"transport="http://schemas.xmlsoap.org/soap/http" /> <operationname="US2RUS"> <soap:operation soapAction="urn:u_Intrf-IEncodeDecode#US2RUS" /> <input> <soap:body use="encoded"encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"namespace="urn:u_Intrf-IEncodeDecode" /> </input> <output> <soap:body use="encoded"encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"namespace="urn:u_Intrf-IEncodeDecode" /> </output> </operation> <operationname="RUS2US"> <soap:operation soapAction="urn:u_Intrf-IEncodeDecode#RUS2US" /> <input> <soap:body use="encoded"encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"namespace="urn:u_Intrf-IEncodeDecode" /> </input> <output> <soap:body use="encoded"encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"namespace="urn:u_Intrf-IEncodeDecode" /> </output> </operation> </binding> <servicename="IEncodeDecodeservice"> <portname="IEncodeDecodePort"binding="tns:IEncodeDecodebinding"> <soap:address location="http://localhost/cgi-bin/Server.exe/soap/IEncodeDecode" /> </port> </service> </definitions> Сохраните его в файл Client.xml. Итак, тем или иным способом файл с описанием в формате xml оказался у нас в руках, теперь необходимо экспортировать его в Delphi. При экспорте будет сгенерирован модуль Delphi с описанием интерфейса на языке Object Pascal. Выберем пункт меню File/New/Other, перейдем на закладку WebServices и выберем иконку Web Services Importer. При этом на экране появится диалог импорта описания.
Используя кнопку Browse диалога, укажем полученный ранее файл Client.xml, и нажмем кнопку Generate. Опа и модуль Delphi с описанием интерфейса готов. Переходим ко второму этапу – непосредственному созданию клиента. Создадим заготовку нового приложения – File/New/Application. На главной форме разместим строку ввода, две кнопки и компонент HTTPRIO с закладки WebServices.
Компонент HTTPRIO предназначен для вызова серверов через SOAP. Укажем в свойстве URL значение http://localhost/cgi-bin/Server.exe/soap/IEncodeDecode, т.е путь к серверу. Далее включим в проект модуль Delphi с описанием интерфейса сервера и укажем его в секции uses главной формы проекта. Теперь можно переходить к написанию кода вызова методов сервера. Обработчик события нажатия на кнопку с заголовком руб->$ будет выглядеть так:
procedure TForm1.Button1Click(Sender: TObject);
var
X:IEncodeDecode;
R:Currency;
begin
X:=HTTPRIO1 as IEncodeDecode;
R:=X.RUS2US(StrToCurr(Edit1.Text));
ShowMessage(CurrToStr(R)+'$');
end;
По аналогии код нажатия на кнопку с заголовком $->руб:
procedure TForm1.Button2Click(Sender: TObject);
var
X:IEncodeDecode;
R:Currency;
begin
X:=HTTPRIO1 as IEncodeDecode;
R:=X.US2RUS(StrToCurr(Edit1.Text));
ShowMessage(CurrToStr(R)+'руб.');
end;
Осталось запустить проект на выполнение и убедиться в его работоспособности. В данной статье мы рассмотрели лишь самый простой пример. Надеюсь, она станет для Вас хорошим стартом в освоении новых Web технологий.