Генерация веб-сервисов C#.net на основе BPEL Сеппель Евгений гр. 544 Научный руководитель: д.ф.-м.н. Терехов А.Н. Рецензент: к.ф.-м.н. Соколов В.В. Коммутатор нового поколения с ручным обслуживанием абонентов Коммутатор с ручным управлением, соединённый с АТС Обслуживает ~1500 абонентов Повышенные требования по надёжности Создаётся с целью облегчения и оптимизации работы оператора и модернизации системы в целом Разрабатываются рабочие места для телефонистов и инженеров обслуживания Проект разрабатывается как веб-решение согласно трехуровневой модели (клиентская часть, бизнес-логика, база данных) и следует паттерну MVС Программные средства: C#.net (БЛ), MySQL 5 (СуБД), Ajax и XSLT (клиентская часть) Графическая схема АТС Роутер БЛ Web-сервер Клиентская часть Инициаторами возникающих событий могут служить либо пользователи, либо АТС События от АТС обрабатываются роутером и через БЛ отображаются в БД События от пользователя обрабатываются вебсервером и через БЛ отображаются в БД Клиентский интерфейс посредством pooling’а через веб-сервер получает из базы данных текущее состояние Логика процессов приложения находится в компоненте бизнес-логики. Логика работы с данными реализована в качестве хранимых процедур и функций базы данных MySQL Постановка задачи В бизнес-логике и БД сосредоточена логика РМО Логику приходится часто изменять в зависимости от требований заказчика Процесс написания логики на ЯВУ представляется достаточно рутинной и однотипной задачей Принято решение автоматизировать генерацию кода с использованием CASE пакета QReal, разрабатываемого на кафедре системного программирования QReal разработан как кроссплатформенное сетевое развитие REAL, также созданного на кафедре и нашедшего многочисленные применения в промышленных разработках рис Использованные технологии Реализация веб-сервисов на платформе Microsoft.NET 2.0 на языке C# Кроссплатформенное ПО Веб-сервисы представляют собой специальным образом оформленные методы класса на языке C# Действия веб-сервиса сводятся к вызову других вебсервисов БЛ и роутера, чтению из БД и вызова хранимых процедур БД Взаимодействие с БД через MySQL Connector.Net Решаемые задачи Разработка архитектуры API репозитория для кодогенераторов и редакторов Тестирование реализованного API Разработка объектной структуры репозитория для конкретного решения Создание кроссплатформенной сетевой ООП прослойки для работы с API при помощи ZeroC ICE RPC Использование языка BPEL для описания логики Разработка требований к редактору BPEL Написание кодогенератора из BPEL в C# Используемые технологии BPEL – язык моделирования бизнес-процессов Разработан консорциумом IBM, Microsoft, SAP .. Используется подмножество WS-BPEL 2.0 с некоторыми расширениями ZeroC ICE – кроссплатформенный RPC Создавался как замена CORBA Поддержка множества языков, включая C++ и С# Поддержка множества платформ Двойное лицензирование Сгенерированный по диаграмме код // блоки usings опущены namespace Generated{ [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class Test1 : System.Web.Services.WebService { [WebMethod] public int myProcess (int inputVariable) { int outputVariable; if ( inputVariable > 0 ) { for (int j = 0; j < 10; j++); } else if ( inputVariable == 0 ) { outputVariable = otherProcess (inputVariable); } else { throw new Exception ("Exception"); } outputVariable = inputVariable * 2 - 1; if ( outputVariable > 100 ) { return outputVariable; } else if ( outputVariable <= 100 ) { outputVariable = 0; while ( inputVariable <1000 ) { inputVariable = inputVariable*2 + 7; continue; } return outputVariable; } else { throw new Exception ("No way for this condition found"); } } } } Заключение В данной работе были получены следующие результаты: Архитектура API кодогенераторов для взаимодействия с редакторами (совместно с Г.Мерабишвили) Кроссплатформенный ООП API кодогенераторов и редакторов с использованием ZeroC ICE Разработана архитектура и действующий кодогенератор в C# Осуществлена генерация наиболее часто используемых веб-сервисов