int sum = myWebService.AddTwoNumbers(2, 3);
//Отобразить результат вызова Web-службы!
System.Windows.Forms.MessageBox.Show(sum.ToString());
6. Запустите приложение и вызовите Web-службу.
Предыдущий пример соответствует тестированию синхронного вызова Web-служ- бы. Синхронные вызовы легко тестировать и отлаживать, но в реальных сценариях мы почти всегда предпочитаем вызывать Web-службу в асинхронном режиме. Автоматически сгенерированный класс обладает встроенными возможностями, которые позволяют это сделать. Для вызова Web-службы в асинхронном режиме следует вызвать метод myWebService.BeginAddTwoNumbers(…параметры…). Для каждого метода Web-службы в локальном прокси-классе предусмотрен метод Begin*, предназначенный для асинхронного вызова Web-службы, и метод End*, предназначенный для получения результатов этого вызова.
Трудности, связанные с использованием Web-служб на мобильных устройствах
Несмотря на то что использование Web-служб на мобильных устройствах во многом напоминает использование Web-служб на настольных компьютерах и серверах, между этими двумя случаями имеются важные различия. Описанию трудностей, которые либо являются специфичными, либо проявляются в более заметной степени в случае мобильных устройств, посвящен следующий раздел.
Требуются различные варианты поддержки cookie-файловCookie-файл — это порция локальных клиентских данных устройства, принадлежащая определенному Web-сайту и управляемая им. "Принадлежащие" Web-сайту данные, которые содержатся в cookie-файле, передаются на сервер вместе с остальной частью HTTP-запроса. Например, каждый из серверов www.Mywebaddress.com и www.Yourwebaddress.com может поддерживать свой cookie-файл на машине-клиенте, осуществляющей доступ к этим Web-сайтам. Если вычислительное устройство и приложение поддерживают cookie-файлы на стороне клиента, то всякий раз, когда по Web- адресу или его подадресу (например, www.Mywebaddress.com/somepath/somepath1) высылается HTTP-запрос, вместе с ним на сервер передаются и данные, содержащиеся в соответствующем cookie-файле.
Cookie-файлы часто применяются для хранения информации о предпочтительных установках каждого из клиентов Web-сайтов. Передаваемая вместе с каждым запросом информация из cookie-файла представляет интерес для сервера постольку, поскольку она избавляет сервер (или совместно действующую группу серверов) от необходимости поддерживать "состояние сеанса" на стороне сервера и облегчает масштабирование Web-приложения, позволяя ему не сохранять информацию о состоянии в промежутках времени между запросами.
Не исключено, что Web-сайт, предоставляющий информацию о погоде в вашем городе или ваши четыре излюбленные биржевые сводки, использует cookie-файлы на стороне клиента либо для хранения информации об этом в явном виде, либо для хранения уникальных идентификаторов, позволяющих серверу находить соответствующую информацию в базе данных сервера. Cookie-файлы могут быть использованы для хранения как кратковременных данных рабочего сеанса, например, "списка покупок" в Web- магазине, так и долговременных данных, которые хранятся на протяжении нескольких различных сеансов, например, информации о наиболее часто посещаемых вами Web- страницах, посвященных биржевым сводкам или прогнозу погоды. Вместе с тем, использованию клиентских cookie-файлов свойственны некоторые серьезные ограничения.
■ Cookie-файлы являются специфическими для клиента и машины. Если Web-приложение использует cookie-файлы на стороне клиента, то при доступе пользователя к данному Web-приложению с другой машины они должны создаваться заново. Это означает, что информация о предпочтениях пользователя, хранящаяся в cookie-файлах, не переходит вместе с пользователем на другую машину.
■ Использовать cookie-файлы не всегда безопасно. Web-приложения не должны хранить в cookie-файлах ценную информацию, поскольку она будет пересылаться в обоих направлениях при каждом вызове, а ее копия будет сохраняться на клиентской машине, где она становится доступной для злонамеренных хакеров через точки уязвимости на стороне клиента. Критически важная информация должна надежно храниться на сервере и передаваться в другие места лишь по мере необходимости.
■ Передаваемые cookie-файлы дополнительно занимают часть полосы пропускания. Поскольку cookie-файлы передаются с каждым Web-запросом, они используют часть полосы пропускания канала связи. При передаче по сетям мобильной телефонной связи эта дополнительная нагрузка приводит к увеличению длительности и стоимости передачи. Чем больше размер cookie-файла, тем большая часть полосы пропускания тратится понапрасну.
■ Cookie-файлы имеют ограниченные размеры. Существуют определенные ограничения в отношении объема данных, которые могут храниться в cookie-файлах.