7. Web-сервисы XML

advertisement
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, заполненный на
сервере.
Download