Опубликован: 13.07.2010 | Доступ: свободный | Студентов: 889 / 20 | Оценка: 4.40 / 4.20 | Длительность: 77:34:00
Самостоятельная работа 30:

Web-службы

Аннотация: В данной лекции рассматриваются панели инструментов и строка состояния.

Файлы к лабораторной работе Вы можете скачать здесь.

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

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

Безусловно, Web-службы относятся к приложениям категории ASP.NET, но имеют некоторую специфику. Важно помнить, что Web-службы должны выполнять определенные действия в ответ на удаленные запросы клиентов (произвести вычисления, считать данные из источника и т.д.) и ждать следующего запроса, поэтому в них недопустимо применять элементы графического интерфейса пользователя. Иными словами, Web-службы можно считать удаленными утилитами.

Заготовка приложения со стартовой формой

Применим список ListBox, в который можно добавлять сколько угодно опций вызова упражнений.

  • Выполните команду File/New/Project и заполните, в соответствии с рисунком, мастер создания проекта с именем WinApp в решении WebServiceWinApp (каталог размещения может быть любым)

  • Через панель Solution Explorer переименуйте файл Form1.cs в Start.cs, а свойству заголовка окна формы присвойте значение Text =" Lab50 - Имя студента "
  • Поместите на форму библиотечный компонент ListBox и настройте его в соответствии с таблицей свойств
Таблица свойств экземпляра ListBox
Свойство Значение
Name listBoxChoice
Items Упражнение 1.
  Упражнение 2.
Dock Fill
  • Через панель Properties создайте обработчик для события SelectedIndexChanged объекта listBoxChoice, который заполните так
Form frm;   // Объявили поле
        private void listBoxChoice_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Привязали номер упражнения к индексу списка
            ListBox list = (ListBox)sender;
            string formName = "Form" + (list.SelectedIndex + 1);
    
            ///////////////////////////////////////////////////
            // Следующий код взят из лабораторной работы №47
            ///////////////////////////////////////////////////
            // Читаем коллекцию запущенных форм
            FormCollection fc = Application.OpenForms;
            bool IsRun = false;
            // Перебираем коллекцию
            foreach (Form form in fc)
            {
                // Имя очередной запущенной формы сравниваем с закрепленным за кнопкой
                if (form.Name == formName)
                {
                    IsRun = true;   // Нашли, что форма запущена, поднимаем флаг
                    frm = form;     // Сохраняем ссылку на запущенную форму для фокуса
                    break;          // Выходим из цикла
                }
            }
    
            // Если форма не запущена - запускаем
            if (!IsRun)
            {
                switch (formName)
                {
                    case "Form1":
                        frm = new Form1();
                        break;
                    case "Form2":
                        frm = new Form2();
                        break;
                }
    
                this.AddOwnedForm(frm);     // Сделать новую frm подчиненной Start
                // frm.Owner = this;        // Алтернативный способ назначить владельца
                frm.ShowInTaskbar = false;  // Не отображать метку окна в панели задач
                frm.Show();                 // Показать новую форму
            }
            else
                frm.Focus();                // Передать фокус запущенной форме        
        }
Листинг 19.1. Обработчик события SelectedIndexChanged в файле Start.cs

Примененный здесь способ предотвращения одновременного запуска одного и того же упражнения мы уже использовали в предыдущих лабораторных работах.

  • Командой меню оболочки Project/Add Windows Form добавьте в проект WinApp еще две формы с именами Form1, Form2
  • Поместите на каждую форму Form1, Form2 из панели Toolbox какой-нибудь элемент управления (например, Button ) и сразу удалите его, чтобы визуальный редактор явно прописал свойство Name в файле *.Designer.cs
  • Запустите приложение и убедитесь в работоспособности механизма вызова отдельных упражнений

Упражнение 1. Создание простой Web-службы генерации поздравления

Клиентами Web-службы могут быть Web-приложения и приложения рабочего стола: консольные и оконные. В данном упражнении мы в качестве клиента Web-службы создадим оконное приложение Windows Forms, представленное формой Form1. Таким образом, Form1 будет клиентом Web-службы.

Создание оконного приложения в качестве клиента Web-службы

  • Откройте форму Form1 и поместите на нее экземпляры компонентов пользовательского интерфейса в соответствии с таблицей
Таблица свойств экземпляров компонентов на Form1
Компонент Свойство Значение
Label ( Name ) label1
  Text Введите ФИО Юбиляра:
TextBox ( Name ) textBox1
  Text Пусто
Button ( Name ) btnSubmit
  Text Отправить
  AutoSize True

Интерфейс формы Упражнения 1 должен быть примерно таким