Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ_ТП_Алексеев_220201_verson 1.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
480 Кб
Скачать
☆

6.2 Логическое проектирование Web-сервиса

Создадим web-сервис ServiceMonteCarlo, который будет осуществлять расчет площади четырехугольника по методу Монте-Карло. Web-сервис MonteCarloABCE реализуется с помощью класса WebService. Класс WebService наследуется от класса System.Web.Services.WebService и использует в своей работе методы getCurve, MonteCarloABCE, Service. На рис. 8 представлена UML диаграмма классов

рис. 8 UML диаграмма классов web-сервиса

Web-сервис Service содержит один Web-метод MonteCarloABCE(). Метод MonteCarloABCE() в качестве аргументов принимает число точек, генерируемых случайным образом, необходимых при вычислении площади четырехугольника методом Монте-Карло, в каждом опыте, а также координаты вершин четырехугольника. Метод будет возвращать экземпляр класса double[], представляющий собой массив данных типа double, в котором содержатся количество точек для текущего эксперимента(n), количество точек, попавших в четырехугольник, площадь четырехугольника, вычисленная методом Монте-Карло, погрешность и время работы сервиса.

Web-сервис имеет следующие методы:

public double[] MonteCarloABCE(double Ax, double Ay, double Bx, double By, double Cx, double Ex, int n) – Выполняет расчет площади методом Монте-Карло, погрешность вычислений, и засекает время, затраченное на выполнение.

public double getCurve(double x1, double y1, double x2, double y2, double x3)

- Выполняет вывод уравнения прямой, для проверки принадлежности точки четырехугольнику(используется в функции MonteCarloABCE.

Прокси-класс создан с помощью встроенного инструментария Visual Studio, поэтому просмотреть его код будет невозможно, т.к. он генерируется позже, во время компиляции. В Visual Studio прокси-класс создается путем добавления в проект клиента соот­ветствующей Web-ссылки. Web-ссылки похожи на обычные ссылки, но вместо того, чтобы указывать на блоки с помощью обычных типов данных .NET, они указывают на URL-адрес Web-службы с помощью WSDL-контракта. При создании Web-ссылки используют WSDL-контракт и ту информацию, ко­торая существует на момент, когда они добавляются. Заметим, что отличие от локальных компонентов, Web-ссылки не об­новляются автоматически при перекомпиляции приложения.

6.3 Логическое проектирование клиентской части

Создадим клиентское приложение, которое будет обращаться к описанному ранее web-сервису. Для этого добавим в решение новый проект – приложение WPF. При этом создадим web-ссылку на web-метод.

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

В клиентской части приложения MS Windows был определен класс Window1, который содержит поля, хранящие значения координат, и методы – обработчики событий на форме.

рис. 9 UML диаграмма класса Window1.

Как видно из рис.9, интерфейс класса аналогичен интерфейсу класса из клиентского приложения, за исключением того, что в клиент-серверном приложении добавляется т.н. делегат(структура данных, указывающая на статические методы или методы экземпляра класса в .NET Framework), и методы взаимодействия с Web-сервисом(CallBackMethod).

public delegate double[] ClassicDelegate(double Ax, double Ay, double Bx, double By, double Cx, double Ex, int n);

Делегат для функции MonteCarloABCE, который будет вызываться с помощью метода

ClassicDelegate delegat = new ClassicDelegate(prefect.MonteCarloABCE);

Веб-сервис будет вызываться асинхронно, о чем свидетельствует метод, который будет вызываться при завершении соответствующей асинхронной операции.

AsyncCallback cb = new AsyncCallback(CallBackMethod);

private void CallBackMethod(IAsyncResult ar)- Функция – обработчик асинхронной операции.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]