Создание Windows-приложений на основе Visual C#

         

Подключение к web-сервису


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

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

Создадим вначале web-сервис. В Visual Studio .NET создаем новый проект, в окне шаблонов выбираем ASP.NET Web Service и называем его HelloWorldService (рис. 7.6).


Рис. 7.6.  Создание web-сервиса

Переключаемся в режим кода и убираем комментарии с существующего метода HelloWorld (рис. 7.7).


увеличить изображение
Рис. 7.7.  Режим кода HelloWorldService

Добавляем в тело метода следующий код:

[WebMethod] public string HelloWorld() { // Имитация длительной работы метода System.Threading.Thread.Sleep(2000); return "Hello World"; }

Компилируем проект и закрываем его. Теперь займемся Windows-приложением, которое будет вызывать Web-Service. Создайте новый проект и назовите его WebService. В окне Solution Explorer щелкаем правой кнопкой на папке References и в появившемся меню выбираем пункт Add Web Reference (рис. 7.8).


увеличить изображение
Рис. 7.8.  Приложение WebService в режиме дизайна. Добавление ссылки на web-сервис


private void btnSync_Click(object sender, System.EventArgs e) { // Деактивируем кнопку. btnSync.Enabled = false; // Создаем экземпляр Web-службы WebService.Service1 service = new WebService.Service1(); // Запуск метода lblHelloWorld.Text = service.HelloWorld(); // Активируем кнопку. btnSync.Enabled = true;

}

Для асинхронного запуска добавляем обработчик кнопки btnAsync и метод AsyncCallBackMethod:

private void btnAsync_Click(object sender, System.EventArgs e) { // Деактивируем кнопку. btnAsync.Enabled = false; // Создаем экземпляр web-службы WebService.Service1 service = new WebService.Service1(); // Запуск метод асинхронно service.BeginHelloWorld(new AsyncCallback(AsyncCallBackMethod), service);

} private void AsyncCallBackMethod(IAsyncResult ar) { WebService.Service1 service = (WebService.Service1)ar.AsyncState; lblHelloWorld.Text = service.EndHelloWorld(ar); // Активируем кнопку. btnAsync.Enabled = true; }

Запускаем проект и нажимаем на кнопку Sync. Кнопка становится неактивной на время подключения к web-сервису, затем выводится строка Hello World — содержимое метода HelloWorld. В течение подключения приложение зависает; попробуйте перемещать форму по экрану. Нажимаем на кнопку btnAsync — в этом случае форма отвечает на запросы, поскольку основной поток свободен, а выполнение метода web-службы происходит в параллельном потоке.

На диске, прилагаемом к книге, вы найдете приложение WebService (Code\Glava7\ WebService).




Содержание раздела