лекция. Зиборов. Справочник для опытных и как пособие для начинающих программистов. Компактдиск содержит исходные коды примеров из книги
Скачать 7.39 Mb.
|
Рис. 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-приложении. Методы этих классов похожи, хотя есть и отличия. Следующим этапом разработки клиентского приложения является добавление ссылки на удаленный класс искомой Web-службы. Для этого выберем в пункте меню Project команду Add Service Reference, это приведет к появлению одноименного диалогового окна. В этом окне нажмем кнопку Advanced, а затем кнопку Add Web Reference. В появившемся диалоговом окне Add Web Reference в поле URL введем адрес Web-службы: http://www.nbrb.by/Services/ExRates.asmx и нажмем кнопку Go. В окне ниже увидим список доступных методов данного сервиса, после этого щелкнем на кнопке Add Reference. При этом в окне Solution Explorer появится ссылка на удаленный класс: by.nbrb.www. Теперь мы можем использовать эту ссылку в программном коде (листинг 15.11). Листинг 15.11. Получение данных от Web-службы Национального банка Республики Беларусь Windows-приложением // Клиентское Windows-приложение, потребляющее сервис Web-службы Национального банка Республики Беларусь // для получения ежедневных курсов валют. На выходе приложения получаем таблицу курсов валют using System; using System.Data; using System. Windows . Forms; // Другие директивы using удалены, поскольку они не используются в данной программе namespace WebKлиeнтБeлapycь { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // Создаем клиентское приложение Web-службы: // http://www.nbrb.by/Services/ExRates.asmx. // Создаем экземпляр удаленного класса: var Валюта = new by.nbrb.www.ExRates (); //А этот адрес я нашел на сайте: // http://ivbeg.bestpersons.ru/feed/post3279396/ // Здесь есть ссылки на другие русскоязычные сервисы System.DateTime Дата = System.DateTime.Now; // На вход метода ExRatesDaily подаем текущую дату: DataSet НаборДанных = Валюта.ExRatesDaily(Дата); // Метод ExRatesDaily возвращает курсы валют в виде DataSet. // Содержимое DataSet в виде строки XML для отладки: string СтрокаХМL = НаборДанных.GetXml(); // Указываем источник данных для сетки данных: dataGridView1.DataSource = НаборДанных; // Указываем имя таблицы в наборе данных: dataGridView1.DataMember = "DailyExRatesOnDate"; } } } В программном коде выполняем обычные уже в данной главе действия. При обработке события "щелчок на кнопке" button1 создаем экземпляр удаленного класса, а затем обращаемся к методу класса ExRates, подавая на вход метода текущую дату. Этот метод возвращает таблицу курсов валют в формате DataSet. Эту таблицу, называемую DailyExRatesOnDate, указываем в качестве источника данных DataSource для сетки данных dataGridView1, которую мы используем для визуализации таблицы курсов валют. Фрагмент работы программы представлен на рис. 15.16. |