WEB-сервисы XML Web-сервис XML – это единица программного кода, доступная для вызова с помощью http-запросов. Обычно web-сервис представляет собой класс с некоторым количеством свойств и методов, которые, несмотря на стандартный синтаксис обращения к ним, организуют обмен данными с помощью xml-формата. В дополнение к библиотеке, предоставляющей функциональные возможности webсервиса, требуется некоторая инфраструктура поддержки: Служба поиска, позволяющая клиентам выяснять местоположение web-сервиса XML; Служба описания, позволяющая клиентам узнать функциональные возможности, которые может предложить web-сервис XML; Транспортный протокол обмена данными. Создание web-сервиса связано с созданием двух файлов: Файл Service.asmx (имя может быть другим), в котором указывается cs-файл, содержащий различные функции web-сервиса. <%@ WebService Language="C#" CodeBehind="~/App_Code/Service.cs" Class="Service" %> Файл Service.cs, содержащий описание класса web-сервиса, а также различных типов данных, необходимых для его работы. Простой web-сервис выглядит так: using using using using System; System.Web; System.Web.Services; System.Web.Services.Protocols; [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class Service : System.Web.Services.WebService { public Service () { //Uncomment the following line if using designed components //InitializeComponent(); } [WebMethod] public string HelloWorld() { return "Hello World"; } } Метод, который предоставляется web-сервисом, называется HelloWorld. Указание атрибута [WebMethod] позволяет вызывать этот метод извне. При запуске web-сервиса браузер покажет следующую страницу: Нажатие ссылки HelloWorld приведет к вызову метода, результат которого в виде xmlкода будет также отображен в браузере: <string xmlns="http://tempuri.org/"> Hello World </string> В случае получения методом параметров, страница сгенерирует текстовые поля, в которые можно будет внести значения параметров. Например, пусть создается метод для регистрации пользователей: [WebMethod(Description = "Метод регистрации пользователя")] public bool Registration(string fam, string im, string address, string email, string login, string pass, string birth) { string MainConnectionString = "Provider=SQLOLEDB;…"; OleDbConnection con = new OleDbConnection(MainConnectionString); con.Open(); // проверка наличия пользователя с вводимым логином OleDbCommand comm = new OleDbCommand ("select * from customers where login='" + login + "'", con); OleDbDataReader dr = comm.ExecuteReader(); if (dr.HasRows) { // введенный логин существует – отказано в регистрации con.Close(); return false; } else { // добавление нового пользователя в таблицу OleDbCommand comm1 = new OleDbCommand ("insert into customers (fam,im,addr,mail,login, pass, birthday) values ('" + fam + "','" + im + "','" + address + "','" + email + "','" + login + "','" + pass + "','" + birth + "')", con); comm1.ExecuteNonQuery(); con.Close(); return true; } } При обращении к методу Registration пользователь увидит форму: Далее при нажатии кнопки «Запуск» будет произведено обращение к методу и получен ответ в виде true или false, записанного в xml-виде. Получение информации из таблиц баз данных должно осуществляться с помощью типов данных, обычно структур, которые содержат описание одной записи таблицы. Например, запись о товаре книжного магазина может быть представлена структурой: public struct InfoTovar { public string name_cat; public int id_book; public string name_book; public string author; public double price; } // // // // // название категории товаров код книги название книги автор цена Метод, который позволяет получить каталог товаров, должен формировать и получать массив объектов структуры тиа InfoTovar: [WebMethod(Description = "Получение каталога товаров")] public InfoTovar[] Catalog() { . . . } Результатом будет xml-файл такого вида: <ArrayOfInfoTovar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/"> <InfoTovar> <name_cat> Компьютерная литература </name_cat> <id_book> 1 </id_book> <name_book> Microsoft SQL Server 7.0. Разработка приложений </name_book> <author> Ю.Тихомиров </author> <price> 100 </price> </InfoTovar> <InfoTovar> <name_cat> Компьютерная литература </name_cat> . . . </InfoTovar> </ArrayOfInfoTovar> Результатом метода web-сервиса может быть также и объект DataSet, заполненный на сервере.