- •Содержание: Введение
- •Постановка задачи
- •Разработка технического задания
- •2.1 Анализ вариантов использования программы
- •Требования к приложениям
- •Анализ алгоритма решения задачи
- •3.1 Метод Монте-Карло
- •3.2 Определение попадания точки внутрь трапеции
- •4.1 Технология Windows Presentation Foundation
- •Настольное приложение wpf
- •4.2 Логическое проектирование приложения
- •4.4 Руководство системного программиста
- •4.5 Руководство программиста
- •4.6 Руководство пользователя
- •4.6.1 Назначение приложения
- •4.6.2 Условия выполнения приложения
- •4.6.3 Выполнение приложения
- •4.6.1 Сообщения оператору
- •Тестирование приложения
- •5.1 Программные средства для разработки приложения
- •Логическое проектирование
- •5.2 Руководство системного программиста
- •5.2.1 Общие сведения
- •5.2.2 Системные требования
- •5.3.3 Проектирование приложения.
- •Листинг №2. Определение попадания точки в четырехугольник. HaXe.
- •6. Клиент-Серверное приложение на базе asp.Net
- •6.1 Программные средства разработки приложения
- •6.2 Логическое проектирование Web-сервиса
- •6.3 Логическое проектирование клиентской части
- •6.4 Генерирование прокси-класса
- •6.5 Системные требования
- •Руководство программиста
- •6.7.1 Назначение и условия применения приложения
- •Структура приложения
- •6.8.4 Сообщения оператору
- •6.9 Тестирование приложения
- •Анализ вычислительной эффективности приложений
- •Заключение
- •Приложения
- •9.1 Листинг приложения на базе wpf Файл MainWindow.Xaml
- •Файл MainWindow.Xaml.Cs
- •9.2 Листинг приложения на базе haXe/php Файл Main.Hx
- •Файл Index.Html
- •9.3 Листинг клиент-северного приложения на базе asp.Net Файл Service.Asmx
- •Файл Service.Cs
- •Файл MainWindow.Xaml
- •Файл MainWindow.Xaml.Cs
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)- Функция – обработчик асинхронной операции.
