Санкт-Петербургский Государственный Университет Математико-Механический Факультет Кафедра Системного Программирования Автоматическая генерация каркасов клиентских приложений для систем с сервисно-ориентированной архитектурой Дипломная работа студента 545 группы Аязяна Арама Арменовича Научный руководитель Н.И. Артамонов Рецензент Д.Г. Глиненко Санкт-Петербург 2007 год Введение Новый виток в развитии технологии программирования – переход на Webплатформу SOA и стек Web-служб UDDI WSDL SOAP, REST AJAX – Asynchronous Javascript And XML Предпосылки Значительные различия в реализации Web-служб Неприспособленность языка Javascript для создания сложных приложений Производственная необходимость Постановка задачи Изучить различия спецификаций WSDL Изучить существующие инструментальные средства для кодогенерации по WSDL Создать генератор программного кода для языка Javascript Требования к решению Простота добавления поддержки новых версий спецификации WSDL Поддержка сложных типов данных Полученный программный код должен быть: Структурированным Кросс-браузерным Удобным для адаптации в различных проектах, основанных на разных Javascript библиотеках Предлагаемое решение Использует язык программирования Ruby Основывается на стандартной библиотеке WSDL4R Использует шаблоны ERB Иллюстрация процесса кодогенерации Объектное представление WSDL 1.1 Парсер WSDL 1.1 (WSDL4R) Объектное представление WSDL 2.0 Обобщенное объектное представление WSDL Парсер WSDL 2.0 Генератор программного кода Шаблоны ERB Документ WSDL 1.1 Документ WSDL 2.0 Программный код на Javascript Пример использования “search service?” UDDI реестр Google.wsdl Генератор Javascript по WSDL GoogleProxy.prototype.search_ch var gp = new GoogleProxy(); Google.js = function (/*SearchResult[]*/ sr) { gp.search(page, query, parm); alert(sr.toString()); Браузер } SOAP SOAP Web-служба Google Результаты Проведен анализ различий спецификаций WSDL Изучены существующие инструментальные средства для кодогенерации по WSDL Успешно создан генератор программного кода для языка Javascript