Файл: Справочник для опытных и как пособие для начинающих программистов. Компактдиск содержит исходные коды примеров из книги.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 920
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Рис. 15.10. Отображение ASMX-файла в браузере
Щелкнув в этом окне на изображении единственного метода Рекомендация данной Web-службы, мы попадаем на другую страницу, где получаемвозможность его тестировать. Для этого щелкнем по кнопке Invoke. В результате тестирования получим в браузере результат работы данного метода Web-службы в формате XML-сообщения (рис. 15.11).
Рис. 15.11. XML-сообщение, как результат работы Web-сервиса
Убедиться в работоспособности программы можно, запустив соответствующее решение в папке WebCлyжбaForex.
Пример 115. Клиентское приложение, потребляющее сервис Web-службы "Торговая рекомендация на рынке Forex"
Теперь напишем клиентское Windows-приложение, использующее Web-службу, созданную нами в предыдущем примере. Для этого запустим Visual Studio 2010, (выберем шаблон Windows Forms Application С# и в поле Name зададим имя WebКлиентFогех. Из панели элементов Toolbox перенесем в форму метку Label, куда будем помещать строку торговой рекомендации, полученную от Web-службы "Торговая стратегия на рынке Forex".
Далее необходимо в проекте создать Web-ссылку на удаленный класс Web-службы. Для этого выберем в пункте меню Project команду Add Service Reference, этоприведет к появлению диалогового окна Add Service Reference. В этом окне мажмем кнопку Advanced, а затем в следующем окне кнопку Add Web Reference.
Теперь в поле URL пишем виртуальный адрес ASMX-файла используемой Web-службы. Этот адрес мы можем получить, запустив нашу Web-службу из предыдущего раздела, а затем скопировав в буфер обмена его URL-адрес. На вкладке программного кода наберем простейшую программу (листинг 15.8).
Листинг 15.8. Клиентское приложение, потребляющее сервис Web-службы "Торговая рекомендация на рынке Forex"
// Получаем прогноз рынка Forex на текущий день. Клиентское Windows-приложение, потребляющее сервис
// Web-службы предыдущего примера WebСлуж6aForex
using System.Windows.Forms;
// Другие директивы using удалены, поскольку они не используются в данной программе
namespace WebKлиентForex
{
public partial class Form1:Form
{
public Form1()
{
InitializeComponent();
// Создаем клиентское приложение Web-службы:
// http://localhost:1330/WebService1.asmx
// Создаем экземпляр удаленного класса:
var Forex = new localhost.WebService1();
this.Text = "Рьнок Forex";
label1.Text = Forex.Рекомендация();
}
}
}
Как видно из программного кода, при обработке события загрузки формы создаем экземпляр удаленного класса Web-службы, затем обращаемся к его методу Рекомендация и копируем получаемую строку в метку label1. Фрагмент работы программы приведен на рис. 15.12.
Рис. 15.12. Результат работы клиентского приложения
Убедиться в работоспособности программы можно, запустив соответствующее решение в папке WebKлиентForex.
Пример 116. Клиентское Web-приложение, потребляющее сервис Web-службы "Морфер"
Создадим клиентское Web-приложение не для Web-службы, написанной нами, а для удаленного Web-сервиса. Различных готовых Web-служб много, их можно посмотреть, протестировать на сайтах http://uddi.xml.org/, http://www.xmethods.org/, http://www.webservicelist.com/ и др. Выберем одну из русскоязычных Web-служб, а именно Web-службу склонения существительных "Морфер", ее адрес в Сети следующий: http://www.morpher.ru/WebServices/Morpher.asmx. Наберем этот URL в адресной строке браузера и получим (рис. 15.13) операции (методы), поддерживаемые Web-службой Morpher.
Эта Web-служба предназначена для автоматизированной обработки текстов на русском языке. В частности метод GetAll5 Web-службы (см. рис. 15.13) обеспечивает склонение слов и словосочетаний на русском языке. На вход функции (метода) GetAll5 данной Web-службы подаем слово в именительном падеже, функция возвращает массив строк, в которых записано это слово в различных пяти падежах: родительном, дательном, винительном, творительном и предложном.
Для испытания этой Web-службы запустим Visual Studio 2010, выберем шаблон Empty ASP.NET Web Application С#. В поле Name укажем имя проекта WebKлиентMorpher. К текущему проекту добавим Web-форму. Для этого в пункте меню Project выберем команду Add New Item и в появившемся окне дважды щелкнем на шаблоне Web Form. В конструкторе формы из панели элементов Toolbox перенесем текстовое поле TextBox и кнопку Button. Далее, чтобы добавить ссылку на удаленный класс, выберем в пункте меню
Project (или в контекстном меню окна Solution Explorer) команду Add Service Reference, это приведет к появлению одноименного диалогового окна. В этом окне нажмем кнопку Advanced, а в следующем окне кнопку Add Web Reference. Далее в поле URL введем ссылку на Web-службу: http://www.morpher.ru/WebServices/Morpher.asmx
Рис. 15.13. Методы, поддерживаемые Web-службой Morpher
При этом кнопка Add Reference станет доступной, а после щелчка на ней в окне Solution Explorer появится ссылка на удаленный класс: ru.morpher.www. Теперь мы можем использовать эту ссылку в нашем программном коде (листинг 15.9).
Листинг 15.9. Клиентское Web-приложение, потребляющее сервис Web-службы "Морфер"
//Клиентское Web-приложение, потребляющее сервис Web-службы склонения существительных "Морфер".
//На вход метода Web-службы подаем слово на русском языке, на выходе получаем это слово в различных пяти падежах
using System;
using System.Web.Ul.WebControls;
// Другие директивы using удалены, поскольку они не используются в данной программе
namespace WebKлиентMorpher
{
public partial class WebForm1: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Button1.Text = "Просклонять";
TextBox1.TextMode = TextBoxMode.MultiLine;
}
protected void Button1_Click(object sender, EventArgs e)
{ // Создаем клиентское приложение Web-службы:
// http://www.morpher.ru/WebServices/Morpher.asmx
// Создаем экземпляр удаленного класса:
var Склонение = new ru.morpher.www.Morpher();
string[] Падежи = Склонение.GetAll5("Зиборов Виктор Владимирович");
Падежи[4] = "О " + Падежи[4];
// Перевод каретки vbCrLf в конце каждого склонения:
foreach (string С in Падежи)
TextBox1.Text = TextBox1.Text + С + "\r\n";
}
}
}
Как видно из текста программы, при обработке события "щелчок на кнопке" Просклонять создаем экземпляр удаленного класса Склонение и далее используем метод GetAll5 класса для получения возможных склонений. Метод GetAll5 возвращает массив строк с пятью склонениями. Цикл foreach обеспечивает символ конца строки "\r\n" в конце каждой строки текстового поля.
Фрагмент работы программы представлен на рис. 15.14.
Рис. 15.14. Склонение слов обеспечивает Web-сервис
Убедиться в работоспособности программы можно, запустив соответствующий файл решения в папке
WebКлиентМоrрhег.
Пример 117. Получение данных от Web-службы Центрального банка РФ Web-приложением
Центральный банк Российской Федерации (ЦБРФ) предоставляет Web-службу для получения ежедневных экономических данных (курсы валют, учетные цены драгоценных металлов и проч.). Сервис данной Web-службы можно получать по адресу: http://www.cbr.ru/scripts/Root.asp?Prtid=DWS. Поставим задачу создания клиентского Web-приложения для получения ежедневных курсов валют. Такой сервис предлагается на сайте Центрального банка Российской Федерации по адресу: http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx.
Мы воспользуемся функцией (методом) GetSeidCursOnDate данной Web-службы, на вход которой подают дату, а на выходе функции получают ежедневные курсы валют в виде DataSet (табличные данные).
Для решения этой задачи запустим Visual Studio 2010, выберем шаблон Empty ASP.NET Web Application С#. В поле Name зададим имя WebKлиeнтPoccия. К текущему проекту добавим Web-форму. Для этого в пункте меню Project выберем команду Add New Item и в появившемся окне дважды щелкнем на шаблоне Web Form. В конструкторе формы перетащим в форму командную кнопку Button и элемент сетки данных GridView, поскольку намереваемся с его помощью отображать табличные данные типа DataSet. Далее в пункте меню Project выберем команду Add Web Reference и в появившемся окне в поле URL введем адрес Web-сервиса: http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx
При этом станет доступной кнопка Add Reference. Щелкнем на этой кнопке, росле этого в окне Solution Explorer появится новая папка Web References со cсылкой на удаленный класс: ru.cbr.www. Теперь в нашем программном коде мы можем воспользоваться этим удаленным классом (листинг 15.10).
Листинг 15.10. Получение данных от Web-службы Центрального банка РФ Web-приложением
// Клиентское Web-приложение, потребляющее сервис Web-службы Центрального банка России для получения // ежедневных курсов валют. На выходе приложения получаем таблицу курсов валют
using System;
//Другие директивы using удалены, поскольку они не используются в данной программе
namespace WebКлиентРоссия
{
public partial class WebForm1: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Button1.Focus();
}
protected void Button1_Click(object sender, EventArgs e)
{ // Создаем клиентское приложение Web-службы:
// http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx
// Создаем экземпляр удаленного класса:
var Валюта = new ru.cbr.www.DailyInfo();
System.DateTime Дата = System.DateTime.Now;
// Получение ежедневных курсов валют:
System.Data.DataSet НаборДанных = Валюта.GetSeldCursOnDate(Дата)
// Содержимое DataSet в виде строки XML для отладки:
string СтрокаХМL = НаборДанных.GetXml();
// Указываем источник данных для сетки данных:
GridView1.DataSource = НаборДанных;
GridViewl.DataBind();
}
}
}
Рис. 15.15. Ежедневные курсы валют Web-сервиса ЦБРФ
Как и при создании предыдущих клиентов Web-служб, при обработке события "щелчок на кнопке" создаем экземпляр удаленного класса, в данном случае мы назвали его Валюта. На вход его метода GetSeldCursOnDate подаем текущую дату. Этот метод возвращает данные типа DataSet, которые мы указываем в качестве источника данных DataSource для элемента управления "сетка данных" GridView1. Фрагмент работы программы показан на рис. 15.15.
Убедиться в работоспособности программы можно, открыв решение в папке WebКлиентРоссия. В заключение отмечу, что подобную Web-службу имеют также банки других стран, например Web-служба Национального банка Республики Беларусь расположена по адресу: http://www.nbrb.by/Services/ExRates.asmx.
Пример 118. Получение данных от Web-службы Национального банка Республики Беларусь Windows-приложением
Web-служба, предоставляющая текущие курсы валют, есть и у Национального банка Республики Беларусь. На примере потребления сервиса Web-службы этого банка создадим Windows-приложение (настольное приложение), получающее справочную информацию о текущих курсах валют в онлайновом режиме.
Для решения этой задачи запустим Visual Studio 2010, выберем шаблон Windows Forms Application С#. В поле Name зададим имя WebKлиeнтБeлapycь. В конструкторе формы добавим кнопку Button и сетку данных DataGridView. Мы намереваемсяв элемент управления DataGridView вывести данные с курсами валют. Элемент управления DataGridView в Windows-приложении играет ту же роль, что и GridView в Web-приложении. Методы этих классов похожи