Рассмотрим на примере описанного в предыдущей работе веб-сервиса, приветствующего вызывающего его человека по имени, то, каким образом реализовано взаимодействие с веб-сервисами из клиентских приложений на платформе.NET. Для этого добавим в решение проект типа «Windows Console Application». Для подключения веб-сервиса к этому проекту достаточно добавить в раздел «Web References» ссылку на созданный веб-сервис. При этом запускается мастер, который спрашивает адрес веб-сервиса, имя прокси класса и, после введения всей необходимой информации, генерирует сам прокси класс. После этого вызов веб-сервиса из любой точки программы сводится к нескольким строчкам, что демонстрирует простоту взаимодействия с веб-сервисами на платформе.NET:
using System;
using ServiceTest.HelloService;
namespace ServiceTest
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введинте имя:");
string name = Console.ReadLine();
Service service = new Service();
string response = service.Hello(name);
Console.WriteLine("Ответ: " + response);
Console.ReadLine();
}
}
}
Результат выполнения этой программы будет следующим:
|
|
Рис. 5.1. Результат работы клиентского приложения.
5.2.5 Создание клиентского приложения для работы с веб-сервисом интернет-магазина
После создания веб-сервиса интернет магазина можно приступить к созданию клиентского приложения, его использующего. Для этого веб-сервиса в качестве клиентского приложения можно создать веб-приложение ASP.NET, Windows-приложение или приложение для мобильных устройств. Возможны и другие варианты использования этого веб-сервиса, например другими веб-сервисами, однако остановимся на втором варианте, как самом простом для реализации и понимания полученного исходного кода.
Как уже отмечалось выше, вся работа с веб-сервисом в клиентском приложении на.NET сводится, по сути, к добавлению ссылки на него в среде разработки. Все остальное выполняется этой средой автоматически.
Использование веб-сервиса из кода приложения будет выглядеть следующим образом (на примере заполнения списка товаров каталога, представленного экземпляром «lstGoods» класса «ListView»):
Cursor = Cursors.WaitCursor;
lstGoods.Items.Clear();
lstGoods.BeginUpdate();
WebShop.WebShop service = new WebShop.WebShop();
Good[] goods = service.GetGoods(catalogId);
foreach (Good good in goods)
{
string[] cols = new string[4];
cols[0] = "";
cols[1] = good.Name.ToString();
cols[2] = good.Price.ToString();
if (good.Available)
{
cols[3] = "есть";
}
else
{
cols[3] = "нет";
}
ListViewItem item = new ListViewItem(cols);
item.Tag = good;
lstGoods.Items.Add(item);
}
lstGoods.EndUpdate();
Cursor = Cursors.Arrow;
Результат работы этого кода приведен на Рис. 5.2 справа. Отметив необходимые для заказа товары и нажав кнопку «Добавить в корзину», можно перейти к интерфейсу управления корзиной товаров, представленному на Рис. 5.3.
Для каждого товара в этом списке есть возможность задать количество, отличное от единицы, путем двойного клика по товару, после чего появляется диалоговое окно выбора количества товаров, представленное на Рис. 5.4.
|
|
Задание личных данных, даты и адреса доставки товара производится с помощью интерфейса, представленного на Рис. 5.5. Здесь также есть возможность просмотреть список совершенных с момента запуска приложения заказов. Для каждого заказа при помощи двойного клика по нему можно узнать его статус в базе данных интернет-магазина. Результат этой операции будет выведен в виде сообщения, пример которого приведен на Рис. 5.6.
Рис. 5.2. Интерфейс выбора товаров.
Рис. 5.3. Интерфейс редактирования списка товаров в корзине.
Рис. 5.4. Диалоговое окно редактирования количества товара в корзине.
Рис. 5.5. Интерфейс просмотра сделанных заказов и редактирования личных данных.
Рис. 5.6. Сообщение о статусе отправленного заказа.
Таким образом, созданное приложение позволяет просмотреть все товары, предоставляемые интернет магазином, сформировать необходимый заказ и произвести заказ в интернет магазине.