Электронный научный журнал «Век качества» ISSN 2500-1841 http ://www .agequal.ru 2016, № 4 http://www.agequal.ru/pdf/2016/AGE QUALITY 4 2016.pdf Ссылка для цитирования этой статьи:
Воронцов Ю.А. Козинец А.В. Пример построения web-сервиса ASP.NET. // Электронный научный журнал «Век качества». 2016. №4. С. 113-135. Режим доступа: http://www.agequal.ru/pdf/2016/416008 .pdf (доступ свободный). Загл. с экрана. Яз. рус., англ.
УДК 004.7
Пример построения web-сервиса ASP.NET.
Воронцов Юрий Алексеевич
заведующий кафедрой информационных систем,
л
профессор, доктор технических наук,
Московский технический университет связи и информатики 125993, Москва, ул. Народного Ополчения, 32, каб.409а
yvorontsov. 1943@mail. ru
Козинец Артур Валерьевич
заведующий лабораториями кафедры информационных систем
Московский технический университет связи и информатики 125993, Москва, ул. Народного Ополчения, 32, каб.407
kozinets@mtuci2. ru
Аннотация. В статье рассматривается пример построения web-сервиса. В качестве средств реализации используются технология ASP.NET компании Microsoft. Данные хранятся в базе данных, управляемой с помощью Microsoft SQL Server. При построении информационной системы применены средства виртуализации.
Ключевые слова: распределенные информационные системы; веб-сервисы; веб-службы; ASP.NET; IIS; Internet Information Services; SQL Server.
Распределенная информационная система в узком смысле, с позиции программного обеспечения (ПО) - это совокупность программных компонент, взаимодействующих друг с другом. Каждая из таких компонент может
Виртуализация сервера
Создаем инфраструктуру информационной системы. В качестве средства виртуализации [3] можно использовать программное обеспечение УкШаШох. Подробнее см. [4, 5, 6, 7]. Запустить мастер создания новой виртуальной машины. Следуя его инструкциям нужно будет выбрать семейство будущей виртуальной операционной системы и ее версию, а также, ввести ее имя.
Рис. 4. Создание виртуальной машины [4].
Далее, загрузчик попросит нас указать объем оперативной памяти доступной виртуальной ОС. Далее нужно будет создать новый жесткий диск, это довольно простая процедура, нужно просто следовать инструкциям мастера создания новых жестких дисков. После установки необходимо настроить созданную виртуальную машину. Все настройки интуитивно понятны. На вкладке Носители необходимо выбрать образ Windows Server для ее последующей установки:
Рис. 5. Настройка накопителей [4].
На вкладке Система необходимо выделить память, поставить приоритет загрузки на Жесткий диск, выделить процессоры для гостевой ОС.
Рис. 6. Настройка системы [4].
Для того, чтобы иметь возможность обмена с основной ОС можно подключить Общую папку:
Рис. 7. Общая папка [4].
На вкладке сеть необходимо добавить 2 адаптера: первый для работы с сетью Интернет, второй для соединения между Виртуальными машинами.
Рис. 8. Первый адаптер [4].
Рис. 9. Второй адаптер [4].
Настройка сетевого соединения сервера и рабочей станции.
Для настройки соединения необходимо в VirtualBox нажать Файл Настройки - вкладка Сеть. Вводим IP адрес хоста и отключаем DHCP.
Рис. 10. Настройка виртуальной сети хоста [5].
Установка ОС рассмотрена в статье [2]. На Виртуальной машине ws1 и srv2 необходимо настроить подключение по локальной сети [7]. Для этого необходимо задать свойства Протокола интернета TCP/IP. Необходимо выбрать постоянный IP для Виртуальной машины из сети хоста, заданной в 1 пункте
(Сеть 192.168.192.0, Диапазон возможных значений 192.168.192.2 192.168.192.254).
Рис. 11. Настройка локальной сети. Разработано авторами.
Настройка завершена. Проверим доступность Виртуальных машин выполнив из командной строки команду ping:
Доступность рабочей станции (192.168.192.22) с сервера, а доступность сервера (192.168.192.21) с рабочей станции:
Рис. 12. Проверка локальной сети. Разработано авторами.
Доступность каждой рабочей станции по отношению к другой является необходимым условием для обеспечения работоспособности таких важных функций, как, например, репликация БД. Второй адаптер, также, будет
обеспечивать доступ к сети Интернет. Это необходимо для обеспечения доступа к нашей БД внешних пользователей.
Программная реализация
Программирование SOAP сервера.
Устанавливаем Visual Studio на srvl. Создаём проект веб службы в Visual Studio, где файл с расширением .asmx создается по умолчанию. Файл - создать проект-приложение веб-службы ASP.NET. Сохраняем его на веб узле IIS srvl (по умолчанию папка localhost).
Для создания WEB-сервиса нам потребуется среда Visual Studio 2013. Необходимо нажать Файл - Создать - Веб-сайт... Сверху выбираем платформу .NET Framework 3.5, слева язык Visual C# и далее выбираем шаблон Веб-служба ASP.NET. Снизу выбираем расположение веб-сайта (можно выбрать файловую систему с последующим копированием в localhost или сразу указать localhost). Нажимаем ОК.
Рис. 13. Новый веб-сайт. Разработано авторами.
Автоматически создался файл Service.cs. Именно в нем будет написан наш Веб-сервис.
В файле Service.cs. уже есть пример метода с название HelloWorld. При этом каждый новый метод должен:
1. Начинаться с команды [WebMethod].
2. Иметь уникальное имя (в данном примере HelloWorld).
3. После return содержать то, что должен вернуть метод.
[WebMethod]
Public string HelloWorld() { Return "Привет всем!";
}
Программирование SOAP клиента.
Создадим ASP.Net страницу - файл с расширением .aspx в созданном проекте - страница доступа к сервису. Для этого (в среде Visual Studio предварительно установив Visual Studio на srvl) нажимаем проект / добавить новый элемент / форма Web Form. Сохраняем его на веб-узле srvl в той же папке проекта (по умолчанию папка localhost). Форма Web Form позволит клиенту запустить .asmx веб-сервис. Например, создадим в проекте приложение веб-службы ASP.NET страницу с выпадающим меню выбора и кнопкой выбора, при нажатии кнопки будет запускаться .asmx сервис.
Рис. 14. Добавление формы в Visual Studio 13. Разработано авторами.
После этого откроется конструктор либо исходный код страницы.
<%@ Page Language="C#" AutoEventWireup="true"
CodeBehi nd="WebForm1.aspx.cs" Inherits="WebServi ceBD.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transi ti onal//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml "> <head runat="server"> <title></title> <style type="text/css">
#form1 {
height: 503px; width: 1116px;
}
</style> </head>
<body background
="http://mykartinka.ru/_ph/19/359842597.jpg">
В исходном коде страницы добавим фон нашей станицы при помощи
тега:
<body background = "http://activka.ua/media/wysiwyg/voip-grandstream/1920x1080resize_portfolio14249_30_1372764474.jpg">
Открываем конструктор и добавим элементы: DropDownList, Button и Label из панели элементов. Изменим текст кнопки и Label-ов:
Рис. 15. Добавление элементов [8].
Один из Label-ов мы оставим неизмененным. Его мы будем использовать для вывода цен. Сообщение со стоимостью бензина и «Спасибо за интерес к нашей компании» мы будем выводить по нажатию кнопки «Запрос цены». В конструкторе настроим заполнение DropDownList типами топлива, хранящимися в БД. Для этого нажмем Добавить источник данных, выполним соединение с SQL сервером:
Рис. 16. Подключение к серверу БД. Разработано авторами.
Создадим оператор Select (автоматически), следуя шагам DropDownList, для вывода всех типов топлива:
Рис. 17. Составление запроса к БД. Разработано авторами.
Теперь можно приступить к обработке события нажатия клавиши Запрос
цены.
Подключим сервис в обработчике кнопки Battonl, дописав код ниже:
Service1 srv = new Service1();
string dan
System.Conve rt.ToSt ri ng(DropDownLi st1.Text);
Label1.Text=srv.GetDataAvg(dan).ToString();
Подключаем в обработчике кнопки Batton1 xml-документ, который был сохранен Веб-сервисом дописав код ниже:
XmlDocument document = new XmlDocument();
document.Load("C:\\i netpub\\wwwroot\\WebServi ceBD\\XMLFile.xml");
foreach (XmlNode task in
document.DocumentElement.Chi l dNodes)
{
{
foreach (xmlNode param in
task.ChildNodes)
{
Consol e.Wri teLi ne(param.Inne rText); Labell.visible = true; Labell.Text = "Стоимость запрошенного вами типа бензина составляет " + param.innerText + " рублей.";
Программирование SOAP поставщика услуги.
Открываем код файла servicel.asmx. Подключаем библиотеки -10 штук.
[webMethod]
public DataSet GetDataAvg(string Индекс) {
SqlConnection MyConnection = new
SqlConnection("Server=filial;database=Балл;uid=nata;pwd=123");
SqlDataAdapter myData = new
SqlDataAdapter("CustOrdersOrdersDetails", MyConnection);
myData.SelectCommand.CommandType =
CommandType.StoredProcedure;
myData.SelectCommand.Parameters.Add(new SqlParameter("@индекс", SqlDbType.Char, 5));
myData.SelectCommand.Parameters["@индекс"].value = Индекс;
DataSet ds = new DataSet(); myData.Fill(ds);
Streamwriter writerfil;
writerfil = new
Streamwri ter("C:\\i netpub\\wwwroot\\webSe rvi ceBD\\XMLFile.xml");
writerfil .writeLine(ds.Getxml ()) ; writerfil .Close(); return ds;
}
Для публикации в этом же файле размещён веб-сервис в специальном заголовке [WebMethod].
Далее объявлено имя и тип веб-сервиса c возвращаемым параметром: public DataSet GetDataAvg(string type).
Электронный научный журнал «Век качества» Online scientific journal «Age of Quality»
№ 4(2016) ISSN 2500-1841
http://www.agequal.ru [email protected]
Далее идет основной блок веб-сервиса. Подключаемся к БД и подключаем хранимую процедуру CustOrdersOrdersDetails, находящуюся там же, с параметром, в который будут помещены данные при выборе клиента.
{
SqlConnection MyConnection = new
SqlConnection("Server=192.168.192.22;database=price;uid=sa1;pwd=Ev g120120");
SqlDataAdapter myData = new
SqlDataAdapter("CustOrdersOrdersDetails", MyConnection);
myData.SelectCommand.CommandType =
CommandType.StoredProcedure;
myData.SelectCommand.Parameters.Add(new SqlParameter("@type", SqlDbType.Char, 10));
myData.SelectCommand.Parameters["@type"].value = type;
Сохраним полученные данные в файл XMLFile.xml с указанием точного пути к файлу.
DataSet ds = new DataSet();
myData.Fill(ds); Streamwriter writerfil;
writerfil = new
Streamwri ter("C:\\i netpub\\wwwroot\\webSe rvi ceBD\\XMLFile.xml");
writerfil .writeLine(ds.Getxml ()) ; writerfil .Close(); return ds;
}
SQL-Код хранимой процедуры CustOrdersOrdersDetails выглядит так:
alter procedure [dbo].[CustOrdersOrdersDetails] ©Индекс nchar(5) AS
SELECT Цена FROM
dbo.Бензин WHERE
Индекс = ©Индекс
Весь проект надо поместить в IIS wwwroot.
Тестирование
Тестирование работоспособности Веб-сервиса информационной системы. Ниже представлен SOAP конверт веб-сервиса и HTTP c методом POST.
В следующем^ показан HTTP-запрос POST и ответ на него. Вместо элементов-заполнителей следует подставить фактические значения.
Рис. 18. SOAP конверт веб-сервиса. Разработано авторами.
Далее представлено XML сообщение, которое мы получаем и далее обрабатывается. Для более подробного отображения включим отображение кода страницы и получим:
Вначале пишется версия XML,тип веб-метода, которые указывался при разработке (в работе с таблицей, БД, пишется DataSet)
В конце в теге Table^ora возвращается несколько значений из таблицы, пишутся данные, взятые по запросу из БД и в теге Text, если возвращается одно значение.
Если этого нет, значит не прошло соединение с БД и стоит проверить локальное соединение компьютеров.
<?xml version="l, О" encodS.ns="atf-S"?> <DataSet xmlns="http: //tempuri. org/">
<xs : schema id="NewData5et" xmlns=" " xmlns :xs="http: //www.w3.org/iOOl/XMLSchema" xmlns :msdata=,rurn: schereas-reicrosoft-coro:xml-iBsdata" <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Use€urrentLocale="true"> <xs:complexType>
<xs:choice min0ccars="0" maxOccnrs="unbounded"> <xs:element name="Table"> <xs:complexType> <xs:seqnence>
<xs:element name="Название" type="xs:string" min0ccurs="0" /> <xs:element пате^'Минбалл" type="xs:int" minOacurs="Q" /> <xs:element паше="Накбалл,г type="xs:int" minOccurs='rQ " /> <xs:element пате="СрбаллЗгода" type="xs:int" minOcctirs="Q" /> </xs:sequenae> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema>
<diffgr: di ffgrani xmlns :nisdata="urn:scherrLas-micrasaf t-com: xml-газdata" xmlns : diffgr="urn:schemas-rcicrosoft-com: xml-diffgrarft-vl">-<NewDataSet xmlns="">
<Table diffgr:id="Tablel" msdata:row0rder="0">
<Название>Вьгчислителъная техника </Назваиие>
<Минбалл>219</Минбалл> <Макбалл>2 4 0</Ма.кбллл> <СрбаллЗгода>225</СрбаллЗгода> </ТаЫе> </NewDataSet> </di ffgr:di ffgram> </DataSet>
Рис. 19. XML сообщение. Разработано авторами.
Разработка веб-страницы для администратора.
Разработка веб-страницы для администратора корректировки цены в базе. В студии Добавим:
1. TextBox для ввода пароля и кнопку для входа. Обработчик события нажатия кнопки Войти:
protected void Button2_Click(object sender, EventArgs e) {
if (TextBox1.Text=="123321") {
Label7.visible = true;
TextBox2.vi si bl e=true; Button3.vi si bl e=t rue;
}
}
2. TextBox для ввода новой стоимости и кнопку для сохранения.
Обработчик события нажатия кнопки сохранить:
protected void Button3_Click(object sender, EventArgs e) {
string connectionString =
System.Confi gu rati on.Confi gu rati onManage r.Connecti onSt ri ngs["pri ce ConnectionStri ng2"].ConnectionStri ng;
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand command =
connection.CreateCommand()) {
command.CommandText = "update price_toplivo set price = '" + TextBox2 .Text + "' where type = '" + DropDownListl.Selectedvalue + "';";
connection.Open(); command.ExecuteNonQuery(); connecti on.Close ();
Вид стартовой страницы (до момента авторизации как Администратор):
Рис. 20. Вид стартовой страницы Администратора [8].
Вид страницы после выполнения запроса стоимости бензина (возможность зайти под администратором все еще существует, то есть возможность сначала увидеть стоимость, потом сравнить с действующий и при необходимости изменить).
}
}
}
Рис. 21. Вид страницы Администратора после запроса цены [8].
Вид страницы администратора (можно выбрать тип бензина и ввести его стоимость, затем нажать сохранить, новые данные будут сохранены в БД).
Рис. 22. Вид страницы Администратора - выбор марки бензина [8].
Рис. 23. Содержание БД после изменения. Разработано авторами.
Тестирование работоспособности информационной системы.
Администратор и обычный клиент работают на одной странице. Это гораздо удобнее с точки зрения уменьшения количества страниц сайта. Права пользователя определяются тем, был-ли введен пароль Администратора, либо нет.
Рис. 24. Общий вид страницы сервиса [8].
Литература
1. Воронцов Ю.А., Козинец А.В. Стандарты веб-сервисов для создания распределенных информационных систем / Ю.А.Воронцов, А.В.Козинец, // Век качества. 2015. №3.
2. Воронцов Ю.А., Козинец А.В. Пример построения распределенной информационной системы на AJAX с использованием PHP и IIS (Internet Information Services) / Ю.А.Воронцов, А.В.Козинец, // Век качества. 2016. №2.
3. Введение в виртуализацию [Электронный ресурс]. - Режим доступа: http://www.team.ru/virt_intro.php (дата обращения 11.04.16г.).
4. Воронцов Ю.А., Козинец А.В. Пример построения web-сервиса с использованием Apache и MySQL / Ю.А.Воронцов, А.В.Козинец, // Век качества. 2016. №3.
5. Компьютерный информационный портал «OS Zone» - Установка и настройка платформы виртуализации Oracle VM VirtualBox [Электронный ресурс]. - Режим доступа: http://www.oszone.net/13051 (дата обращения 11.04.16г.).
6. Установка VirtualBox [Электронный ресурс]. - Режим доступа: http://itandlife.ru/technology/emulation and virtualization/virtualbox-setup-and-settings/2147483644/ (дата обращения 11.04.16г.).
7. Настройка сети в VirtualBox [Электронный ресурс]. - Режим доступа: http://rus-linux.net/MyLDP/vm/VirtualBox-networking.html (дата обращения 11.04.16г.).
8. Растровое изображение интернет-проекта «activka.ua» [Электронный ресурс]. - Режим доступа: http://activka.ua/media/wysiwyg/voip-grandstream/1920x1080resize portfolio14249 30 1372764474.jpg (дата обращения 19.10.16г.).
9. Architecture of user applications for network with mobile nodes / Vorontsov Y.A., Farkhadov M.P., Blinova O.V., Abramenkov A.N. // 18-я международная конференция «Распределенные компьютерные и коммуникационные сети: управление, вычисление, связь» (DCCN-2015). С 460-465.
Sample web-service using ASP.NET
Vorontsov Yuri Alexeevich
Head of the Department of information systems, Professor, Doctor of technics,
Moscow Technical University of Communications and Informatics #32, Narodnogo Opolcheniya street, Moscow, 123993, Russain Federation
Kozinets Arthur Valerievich
Head of laboratories of the Department of information systems Moscow Technical University of Communications and Informatics #32, Narodnogo Opolcheniya street, Moscow, 123993, Russain Federation
kozinets@mtuci2. ru
Abstract. The article describes an example of building a web-service. For the implementation used Microsoft ASP.NET. Data is stored in a database via Microsoft SQL Server. Virtualization is applied when building model of information system.
Key words: distributed information systems; web services; ASP.NET; IIS; Internet Information Services; SQL Server.
1. Vorontsov Yu.A., Kozinets A.V. Standarty veb-servisov dlya sozdaniya raspredelennykh informatsionnykh sistem / Yu.A.Vorontsov, A.V.Kozinets, // Vek kachestva. 2015. №3. S. ...
2. Vorontsov Yu.A., Kozinets A.V. Primer postroeniya raspredelennoy informatsionnoy sistemy na AJAX s ispol'zovaniem PHP i IIS (Internet Information Services) / Yu.A.Vorontsov, A.V.Kozinets, // Vek kachestva. 2016. №2. S. ...
3. Vvedenie v virtualizatsiyu [Elektronnyy resurs]. - Rezhim dostupa: http://www.team.ru/virt_intro.php (data obrashcheniya 11.04.16g.).
4. Vorontsov Yu.A., Kozinets A.V. Primer postroeniya web-servisa s ispol'zovaniem Apache i MySQL / Yu.A.Vorontsov, A.V.Kozinets, // Vek kachestva. 2016. №3. S. ...
5. Komp'yuternyy informatsionnyy portal «OS Zone» - Ustanovka i nastroyka platformy virtualizatsii Oracle VM VirtualBox [Elektronnyy resurs]. -
REFERENCES
Rezhim dostupa: http://www.oszone.net/13051 (data obrashcheniya 11.04.16g.).
6. Ustanovka VirtualBox [Elektronnyy resurs]. - Rezhim dostupa: http://itandlife.ru/technology/emulation_and_virtualization/virtualbox-setup-and-settings/2147483644/ (data obrashcheniya 11.04.16g.).
7. Nastroyka seti v VirtualBox [Elektronnyy resurs]. - Rezhim dostupa: http://rus-linux.net/MyLDP/vm/VirtualBox-networking.html (data obrashcheniya 11.04.16g.).
8. Rastrovoe izobrazhenie internet-proekta «activka.ua» [Elektronnyy resurs]. - Rezhim dostupa: http://activka.ua/media/wysiwyg/voip-grandstream/1920x1080resize_portfolio14249_30_1372764474.jpg (data obrashcheniya 19.10.16g.).
9. Architecture of user applications for network with mobile nodes / Vorontsov Y.A., Farkhadov M.P., Blinova O.V., Abramenkov A.N. // 18-ya mezhdunarodnaya konferentsiya «Raspredelennye komp'yuternye i kommunikatsionnye seti: upravlenie, vychislenie, svyaz'» (DCCN-2015). S 460-465.