|
Программирование >> Программирование с использованием ajax
Добавления Web-метода Следующее, что потребуется сделать - это добавить метод в создаваемую Web-службу. В приведенном ниже практическом занятии мы добавим простой метод - ReverseString (), - который принимает строку и возвращает клиенту строку в обратном порядке. практическое занятие Добавление метода 1. Удалите метод Не 11 eWorld () и всю его реализацию. Добавьте следующий код в файл Servicel. asmx. cs. Чтобы можно было использовать класс Array, необходимо импортировать пространство имен System. [WebMethod] public string ReverseString(string message) { char[] arr = message.ToCharArray (); Array.Reverse(arr); message = new string (arr); return message; 2. Модифицируйте пример кода в файле Servicel .asmx.cs следующим образом: [WebService (Namespace= http: www. wrox. com/webservices ) ] [WebServiceBinding(ConformsTo=WsiProfile.BasicProfile1 1) ] [Toolboxltem(false)] public class Service : System.Web.Services.WebService { 3. Скомпилируйте проект. Описание полученных результатов Исполняющая среда ASP.NET использует рефлексию для считывания ряда специфичных для Web-служб атрибутов, таких как [WebMethod], чтобы предоставить метод в качестве функциональной возможности Web-службы. Исполняющая среда ASP.NET предоставляет также WSDL для описания службы. Чтобы XML-элементы в сгенерированном описании Web-службы могли идентифицироваться уникальным образом, необходимо добавить пространство имен XML. В приведенном примере пространство имен http: www.wrox.com/webservices было добавлено в класс Service с использованием атрибута [WebService]. Естественно, можно применять любую другую строку, которая уникальным образом идентифицирует XML-элементы, такую как URL-ссылку страницы своей организации или компании. Вовсе не обязательно, чтобы Web-ссылка существовала в действительности. Она предназначена только для уникальной идентификации. Использование пространства имен, построенного на основе Web-адреса своей организации, обеспечивает почти стопроцентную гарантию того, что ни одна другая компания не будет применять это же пространство имен. Если пространство имен XML не будет изменено, по умолчанию будет использоваться пространство имен http: tempuri.org. В учебных целях это пространство имен вполне подходит, но его не следует использовать для развертывания реальной Web-службы. Тестирование Web-службы Теперь Web-службу можно протестировать. Открытие файла Servicel. asmx в браузере (его можно запустить из Visual Studio 2008, выбрав пункт меню DebugiStart Without Debugging (Отладка=>Запустить без отладки) ведет к отображению списка всех методов службы, как показано на рис. 21.5. В созданной нами службе имеется единственный метод ReverseString (). # ServKfl ШЬ S*rMce WlTHiowB intemei Expieiw Servicel r k>*..no зревюпв ere soppoled Fo- hxmal эешю . eis* e. e* с srrv- Q-r,. -ivHon 10СЫ Mtraoei ProMCWO Mod* On Put. 21.5. Открытие файла Servicel. asmx в браузере При выборе ссылки на метод ReverseString открывается диалоговое окно тестирования Web-службы. Оно содержит поля редактирования каждого параметра, который можно передать с методом. В данном случае параметр является единственным. На этой странице можно также получить информацию о том, как будут выглядеть вызовы SOAP со стороны клиента и ответы сервера (рис. 21.6). Пример демонстрирует запросы SOAP и HTTP-запросы POST. и %* Ф Ыtшл МГаО Swvict ReverseString То lert Ihe ооеМол икпд the и-р POST protocol. d.cV the In.oie button SOAP 1.1 at va % eq./ ( end etponse - pltehoMers Полп ea to be i POST :еглг1с*:. в * KTTPa.i Host: localhosc Conten.-Ti-pe: tejcc xiti: chersec-ucf-S Ccjsc*cc-L€!4atn: length S PAcT;ion: -nctp www wtOK.-roe webeervices Rerer Sttlno-<- jnal versior--! . n:cdiftj- utf-e- > <soap.CnT i:p хт1па:х 1--Ьсср:. www.wJ.ote/2001/XKL5ctee-iiiacaa: - 1П9 ; afll--htT 0-.Bp:Body> <F* erseStrine xitlr. hccp : / www. wrcx . coa. w b ervlces > <M99age>scrino< eess*ge> </ oa(::Bodv> </ oap: Env l(9e> Loci Htiift I Protected mxtw Ob Pwr. 27.6. Диалоговое окно тестирования Web-службы Щелчок на кнопке Invoke (Вызвать) после ввода текста Hello Web Services ! в текстовом поле приведет к получению с сервера результата, показанного на рис. 21.7. ♦tlx fK.. S ort.
Рис. 21.7. Результат вызова Web-службы Результат типа string, как и ожидалось, представляет собой введенную строку, отображаемую в обратном порядке. Реализация Windows-клиента Тестирование выполняется успешно, но нам нужно создать Windows-клиента, который использует Web-службу. Клиент должен создавать сообщение SOAP, которое будет пересылаться по НТТР-каналу. Это сообщение не обязательно создавать самостоятельно. Visual Studio 2008 создает прокси-класс, который использует НТТР-канал Windows Communication Foundation (WCF), который за кулисами выполняет все необходимые действия. WCF более подробно рассматривается в главе 35. Практическое занятие Создание клиентского Winclows-приложения Рис. 21.8. Форма клиента Web-службы 1. Создайте новое С#-приложение Windows Forms в существующем решении WebServiceSample и присвойте ему имя SimpleClient. Добавьте на форму два текстовых поля и кнопку (рис. 21.8). Для вызова Web-службы будет использоваться обработчик Click этой кнопки. 2. С помощью команды меню ProjectAdd Service Reference (Проект=>Добавить ссылку службы) добавьте ссылку службы. В открывшемся диалоговом окне Add Service Reference (Добавление ссылки на службу) щелкните на стрелке кнопки Discover (Исследовать) и выберите опцию Services in Solution (Службы в решении). Ранее созданная служба отображается в левой панели. В отображенном слева древовидном представлении выберите Servicel Soap. Прежде чем щелкнуть на кнопке ОК, измените имя в поле Namespace (Пространство имен) на WebServicesSample, как показано на рис. 21.9. 3. До сих пор мы не написали ни единой строчки кода для клиента. Мы разработали небольшой интерфейс пользователя и воспользовались меню Add Service Reference, чтобы создать класс прокси-клиента. Теперь остается только связать эти два объекта. Добавьте к кнопке обработчик buttonlClick события Click и поместите в него следующие два оператора:
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |