- •Введение
- •Постановка задачи
- •Разработка технического задания
- •2.1 Анализ вариантов использования программы
- •Потоки событий
- •Основной поток
- •2.2. Альтернативные потоки
- •2.2 Требования к приложениям
- •3.1 Метод Монте-Карло
- •3.2 Определение попадания точки внутрь трапеции
- •Анализ алгоритма решения задачи
- •Настольное приложение wpf
- •4.1 Технология Windows Presentation Foundation
- •4.2 Логическое проектирование приложения
- •4.3 Тестирование приложения
- •5.1 Программные средства для разработки приложения
- •5.2 Логическое проектирование
- •5.2.1 Структура приложения
- •5.2.2 Проектирование приложения.
- •Листинг №1. Определение попадания точки в четырехугольник. 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.3 Логическое проектирование клиентской части
Создадим клиентское приложение, которое будет обращаться к описанному ранее web-сервису. Для этого добавим в решение новый проект – приложение WPF. При этом создадим web-ссылку на web-метод.
Особенностью данного приложения является то, что не само приложение вычисляет площадь и дополнительные параметры. Оно лишь осуществляет запрос к web-сервису, который по заданным координатам рассчитывает площадь. Непосредственно перед запросом необходимо создать прокси - класс.
В клиентской части приложения MS Windows был определен класс Window1, который содержит поля, хранящие значения координат, и методы – обработчики событий на форме.
рис. 14 UML диаграмма класса Window1.
Как видно из рис.14, интерфейс класса аналогичен интерфейсу класса из клиентского приложения, за исключением того, что в клиент-серверном приложении добавляется т.н. делегат(структура данных, указывающая на статические методы или методы экземпляра класса в .NET Framework), и методы взаимодействия с Web-сервисом(CallBackMethod).
public delegate double[] ClassicDelegate(double Ax, double Ay, double Bx, double By, double Cx, double Ex, int n)- делегат для функции MonteCarloABCE, который будет вызываться с помощью обработчика асинхронной взаимодействия.
Листинг №2. Обработчик асинхронного взаимодействия
private void MonteCarloABCECompleted(object sender, MonteCarloABCECompletedEventArgs e)
{
object[] result = new object[5];
result = e.Result;
}
Веб-сервис будет вызываться асинхронно, о чем свидетельствует метод, который будет вызываться при завершении соответствующей асинхронной операции.
Service proxy = new Service();
proxy.MonteCarloABCECompleted += new MonteCarloABCECompletedEventHandler(this.MonteCarloABCECompleted);
proxy.MonteCarloABCEAsync(Ax, Ay, Bx, By, Cx, Ex, n);
6.4 Генерирование прокси-класса
После создания клиентского приложения ему необходимо добавить прокси-класс для доступа к web-сервису. Прокси-класс – это класс, созданный из файлаWSDL Web-службы, позволяющий клиенту вызывать методы Web-службы по Интернету. Клиенту не обязательно просматривать прокси-класс или выполнять с ним какие-либо операции.
После тестирования работы Web-службы, мы можем добавить в клиентское приложение ссылку на Web-службу, т.е. создать прокси-класс.
Существуют два способа создания прокси-класса в .NET:
воспользоваться утилитой командной строки wsdl.ехе
воспользоваться предлагаемой в Visual Studio возможностью для добавления Web-ссылок
Оба эти подхода, по сути, дают один и тот же результат, поскольку они предполагают использование одних и тех же классов в .NET Framework для выполнения фактической работы. Отличием подхода, предполагающего использование утилиты wsdl.exe, от подхода, предполагающего использование функции для добавления Web-ссылок в приложение ASP.NET, является то, что в случае применения функции для добавления Web-ссылок увидеть фактический код прокси-класса будет невозможно (потому что он генерируется позже, во время компиляции). Это ограничение не распространяется на клиентов других типов, например, приложений Windows Form или консольного типа. Они не используют модель компиляции ASP.NET, поэтому код прокси-класса добавляется прямо в проект.
