Главная страница

лекция. Зиборов. Справочник для опытных и как пособие для начинающих программистов. Компактдиск содержит исходные коды примеров из книги


Скачать 7.39 Mb.
НазваниеСправочник для опытных и как пособие для начинающих программистов. Компактдиск содержит исходные коды примеров из книги
Анкорлекция
Дата13.04.2023
Размер7.39 Mb.
Формат файлаdoc
Имя файлаЗиборов.doc
ТипСправочник
#1060897
страница26 из 31
1   ...   23   24   25   26   27   28   29   30   31

Рис. 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 (или в контекстном меню окна Solu­tion 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.


1   ...   23   24   25   26   27   28   29   30   31


написать администратору сайта