Web-служба размещается на сервере IIS (Internet Information Services). При установке Microsoft Windows XP Professional (SP2) по умолчанию сервер IIS устанавливается не полностью и нам нужно завершить его
(рис 14.1) Установка сервера IIS Скорее всего, у вас имеется частично установленный
Рассмотрим создание web-службы, предоставляющей возможность получать и обновлять данные из базы Northwind MS SQL Server. Запускаем Visual Studio .NET, создаем новый проект, в списке шаблонов выбираем "ASP.NET Web Service", в строке "Location" вводим название web-сервиса "NorthwindService" (рис. 14.2):
(рис 14.2) Создание web-сервиса NorthwindService Среда генерирует шаблон web-сервиса, который открывается в режиме дизайна (рис. 14.3). Сам по себе web-сервис не имеет пользовательского интерфейса, поэтому у него достаточно специфичный вид. Но в процессе разработки можно использовать визуальные средства студии, размещая на поверхности элементы управления или объекты. В этом смысле режим дизайна web-сервиса аналогичен панели компонент в обычных Windows-приложениях.
(рис 14.3) Шаблон web-сервисаФайл web-сервиса имеет расширение .asmx. Переходим в окно Solution Explorer и переименовываем файл "Service1.asmx" в "DataNorthwind.asmx". Переключаемся в режим кода, нажимая на ссылку "click here to switch to code view" (или просто нажимая клавишу F7). Дополнительно изменяем название класса и конструктора. Разработчики Visual Studio .NET оставили тестовый метод web-сервиса Hello World, который возвращает ставшую классической строку "Hello World". Снимаем с него комментарии. Полностью листинг web-службы будет выглядеть теперь следующим образом:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
namespace NorthwindService
{
/// <summary>
/// Summary description for Service1.
/// </summary>
public class DataNorthwind : System.Web.Services.WebService
{
public DataNorthwind()
{
//CODEGEN: This call is required by the ASP.NET
//Web Services Designer
InitializeComponent();
}
#region Component Designer generated code
//Required by the Web Services Designer
private IContainer components = null;
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if(disposing components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
#endregion
// WEB SERVICE EXAMPLE
// The HelloWorld() example service returns the string Hello World
// To build, uncomment the following lines then save and build the project
// To test this web service, press F5
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
}
}
Компилируем сервис, нажимая кнопку F5. Среда генерирует отчет, содержащий описание сервиса, рекомендации, а также его методы и их тесты. Переходим по ссылке "HelloWorld" (рис. 14.4):
(рис 14.4) Отчет web-сервиса, генерируемый средой Появляется окно, в котором можно протестировать результат метода, щелкнув на кнопку "Invoke" (рис. 14.5):
(рис 14.5) Тестирование метода HelloWorldМетод возвращает строку "Hello World" в формате XML, она открывается в отдельном окне (рис. 14.6):
(рис 14.6) Результат выполнения методаВернемся к коду. При тестировании появлялась рекомендация (см. рис. 14.4) изменить пространство имен web-сервиса перед его публикацией. По умолчанию мастер подставляет пространство из шаблона:
http://tempuri.org/
Перед классом задаем собственное пространство имен и описание web-сервиса при помощи атрибутов Namespace и Desription:
[WebService(Namespace=
"http://www.somesite.com/mywebservices",
Description="Web-сервис для работы с базой данных Northwind")]
public class DataNorthwind :
System.Web.Services.WebService
{
...
Web-методы также обладают атрибутом "Description", с помощью которого можно задавать описание каждого метода:
[WebMethod (Description="Этот метод разработчики
оставили в качестве примера.")]
public string HelloWorld()
{
return "Hello World";
}
Снова компилируем проект. Теперь отчет стал более понятным (рис. 14.7):
(рис 14.7) Применение атрибутов DescriptionПриступим к созданию собственных методов. Переходим в режим дизайна, из вкладки Data окна Toolbox перетаскиваем объект SqlDataAdapter. В появившемся мастере Data
[WebMethod (Description="Метод для заполнения
данными объекта DataSet")]
public DataSet ZapolnenieDannimi()
{
sqlDataAdapter1.Fill(dataSet11);
return dataSet11;
}
[WebMethod (Description="Метод для передачи
изменений в базу данных")]
public bool PeredachaIzmeneniy(DataSet ds)
{
if (ds.HasErrors)
return false;
sqlDataAdapter1.Update(ds);
return true;
}
Параметр [WebMethod] является обязательным при создании web-методов, а атрибут Description - нет. Впрочем, его следует добавлять для удобства работы. Протестируем наш сервис. Переходим по ссылке к методу ZapolnenieDannimi (рис. 14.8):
(рис 14.8) Тестирование после добавления собственных методов При извлечении метода - нажатии кнопки "Invoke" - на его странице появляется сообщение об ошибке:
System.Data.SqlClient.SqlException: Login failed for user 'F202406B87AB496\ASPNET'.
При настройке объекта DataAdapter для подключения к MS SQL Server я выбрал тип аутентификации Windows. Web-служба подключается, используя учетную запись "ASPNET", которая создается при установке Visual Studio .NET. Проблема заключается в том, что эта учетная запись не обладает полномочиями для подключения к базе данных Northwind. Поэтому при отладке и появляется сообщение об ошибке, где "F202406B87AB496" - имя моего локального компьютера. Если мы не хотим использовать аутентификацию SQL-сервера, нужно будет изменить права учетной записи "ASPNET". Запускаем SQL Server Enterprise Manager, раскрываем узел текущего сервера, на вкладке Security щелкаем правой кнопкой и выбираем New Login. В появившемся окне SQL Server Login Properties нажимаем кнопку обзора (_), в появившемся окне добавляем учетную запись "ASPNET", затем нажимаем "OK" (рис. 14.9):
(рис 14.9) Добавление пользователя "ASPNET"Далее, на вкладке Server Roles отмечаем галочкой "Database Creators" (рис. 14.10). Эта роль предоставляет права создавать и изменять базы данных на сервере.
(рис 14.10) Определение роли пользователя "ASPNET"На вкладке Database Access определяем, к какой именно базе данных будет иметь доступ пользователь "ASPNET". Отмечаем только базу Northwind (рис. 14.11):
(рис 14.11) Предоставления доступа к базе "Northwind"Завершаем настройку учетной записи, нажимая "OK" в окне SQL Server Login Properties. Проверим снова web-сервис - метод ZapolnenieDannimi возвращает теперь содержимое таблицы Customers (рис. 14.12):
(рис 14.12) Выполнение метода "ZapolnenieDannimi"В документе находится XSD-схема объекта DataSet, а также само содержимое в формате XML.
Мы завершили разработку web-сервиса.
В качестве клиента, вызывающего web-методы, применим Windows-приложение. Создайте новый Windows-проект и назовите его "Test NorthwindWS". Добавляем на форму элементы управления DataGrid и Panel, свойствам Dock этих элементов устанавливаем значения "Fill" и "Bottom" соответственно.
На панели размещаем две кнопки, устанавливая им следующие свойства:
button1, свойство | Значение |
|---|---|
Name |
btnFill |
Location |
26; 16 |
Text |
Заполнить |
button2, свойство | Значение |
|---|---|
Name |
btnUpdate |
Location |
122; 16 |
Size |
144; 23 |
Text |
Передать изменения |
Интерфейс готов. В окне Solution Explorer щелкаем правой кнопкой на узле "References" и в появившемся контекстном меню выбираем пункт "Add Web Reference_" (рис. 14.13):
(рис 14.13) Окно Solution ExplorerВ появившемся окне Add Web Reference доступен просмотр всех web-служб. Поскольку наш сервис расположен на локальном компьютере, нажимаем на ссылку "Web services on the local machine". Далее снова переходим по ссылке "DataNorthwind" (рис. 14.14):
(рис 14.14) Окно Add Web Reference, просмотр web-службПоявляется уже знакомый нам отчет, на котором можно просмотреть описание сервиса и его методов. В поле Web reference name можно ввести имя создаваемой ссылки. Мы оставляем предложенное название "localhost" и нажимаем кнопку "Add Reference" (рис. 14.15):
(рис 14.15) Добавление ссылки на сервис DataNorthwindВ окне Solution Explorer появилась папка Web Reference с узлом localhost. Дважды щелкаем на этом узле. В окне Object Browser мы можем просмотреть описание web-методов, предоставляемых сервисом (рис. 14.16):
(рис 14.16) Просмотр web-методов в окне Object BrowserВпрочем, поскольку у нас имеется всего три предельно простых метода, мы можем вернуться к коду. Подключаем пространство имен для получения доступа к добавленному сервису:
using TestNorthwindWS.localhost;
В классе формы создаем экземпляр myService:
DataNorthwind myService = new DataNorthwind();
В обработчиках кнопок "btnFill" и "btnUpdate" вызываем соответствующие web-методы:
private void btnFill_Click(object sender,
System.EventArgs e)
{
DataSet ds = myService.ZapolnenieDannimi();
dataGrid1.DataSource = ds.Tables[0].DefaultView;
}
private void btnUpdate_Click(object sender, System.EventArgs e)
{
DataSet ds = (DataSet)dataGrid1.DataSource;
if(!myService.PeredachaIzmeneniy(ds))
MessageBox.Show("Ошибка обновления",
"При передаче изменений возникла ошибка" );
}
Запускаем приложение. Мы можем просматривать и изменять содержимое таблицы Customers (рис. 14.17):
(рис 14.17) Готовое приложение TestNorthwindWSКак работает наше приложение? Мы добавили ссылку на web-службу, аналогично добавлению обычной библиотеки. Не имеет значения, где эта служба находится. Далее мы просто создаем объект класса службы и вызываем соответствующие методы. При нажатии на кнопку "Заполнить" происходит обращение к серверу IIS, который, в свою очередь, обращается к MS SQL Server и получает данные для объекта DataSet. Наше приложение устанавливает полученный DataSet в качестве источника данных для элемента управления DataGrid. Аналогично выполняется метод, привязанный к кнопке "Передать изменения".
В программном обеспечении к курсу вы найдете приложение Test NorthwindWS (Code\Glava7\ TestNorthwindWS).
При создании Windows-приложений нам не приходится задумываться о местоположении наших файлов и проектов, об их взаимодействии со службами компьютера, - все достаточно просто. Имеется папка, в которой располагается проект, в нем есть папка "Debug" (или "Release"), где размещено скомпилированное приложение. Немного по-другому обстоят дела с web-службами. После создания проекта web-сервиса Northwind Service все рабочие файлы располагаются по умолчанию в каталоге "C(Имя системного диска):\Inetpub\wwwroot\NorthwindService" (рис. 14.18):
(рис 14.18) Файлы web-сервисаВ папке "bin" находится скомпилированный файл библиотеки динамической компоновки NorthwindService.dll. Файл Solution, по нажатию на который запускается среда Visual Studio .NET и открывается web-сервис в режиме разработки, расположен в каталоге "C:\Documents and Settings\Chingiz Kariev(Имя пользователя)\Мои документы\Visual Studio Projects\NorthwindService.sln" (рис. 14.19):
(рис 14.19) Файл Solution web-сервиса NorthwindServiceРабочие файлы web-сервиса, которые используются приложениями-клиентами (например, TestNorthwindWS), должны быть помещены в web-узел сервера IIS. Переходим в меню "Пуск \ Панель управления \ Администрирование \ Internet Information Services". В группе "Web-узел по умолчанию" мы видим папку "NorthwindService", в которой располагаются все рабочие файлы (рис. 14.20):
(рис 14.20) Сервер Internet Information Services (IIS)При переходе по ссылке "Web services on the local machine" мы видели ссылку на сервис DataNorthwind только лишь потому, что папка сервиса уже находилась в каталоге сервера IIS. Откуда взялась эта папка? При создании нового проекта web-сервиса среда Visual Studio .NET автоматически помещает его файлы в директорию "C:\Inetpub\wwwroot". Сервер IIS сканирует эту директорию и при наличии подходящих файлов предоставляет соответствующие услуги web-сервиса.
В программном обеспечении к курсу вы найдете папку NorthwindService, скопированную из узла "C:\Inetpub\wwwroot". (Code\Glava7\ Northwind Service).
Для переноса web-службы на другой компьютер достаточно разместить в его каталоге IIS (по умолчанию "C:\Inetpub\wwwroot") рабочие файлы. Это можно сделать непосредственно простым копированием, но лучше подготовить пакет установки. Где-нибудь в рабочей директории создаем папку "Пакет_установки" (у меня это "D:\Uchebnik\Code\Glava7") - в нее будем помещать файлы пакета установки. Запускаем Visual Studio .NET, создаем новый проект, в окне "New Project" переходим в категорию "Setup and Deployment Projects" и выбираем шаблон "Web Setup Project" (рис. 14.21):
(рис 14.21) Окно New Project. Создание пакета установки В окне File System щелкаем правой кнопкой на папке "Web Application Folder", в появившемся меню выбираем "Add \ File" (рис. 14.22, А). Далее, в окне "Add Files" переходим в текущий каталог IIS, из папки "NorthwindService" добавляем следующие файлы (рис. 14.22, Б):
(рис 14.22) Добавление файлов веб-службы. А - Папка "Web Application Folder", Б - выделение файлов папки "NorthwindService"Теперь нужно определить содержимое папки "bin". Щелкаем на ней правой кнопкой, снова переходим в меню "Add \ File" (рис. 14.23, А). В окне Add Files переходим в папку "bin", которая расположена в папке "NorthwindService", и добавляем следующие два файла (рис. 14.23, Б):

Все нужные файлы собраны. На панели инструментов Standart выбираем режим
(рис 14.23) ("Release") отладки проекта, а затем компилируем его, нажимая сочетание клавиш Ctrl+Shift+B (или выбирая пункт главного меню "Build \ Build Solution"). Пакет установки
(рис 14.24) Готовый пакет установкиПроделаем операцию установки на локальном компьютере. На сервере IIS у нас уже есть web-сервис NorthwindService, возникший в процессе его создания в среде Visual Studio .NET. Нам нужно его вначале удалить, а потом установить с помощью пакета установки. Переходим в папку "C:\Inetpub\wwwroot", выделяем папку, нажимаем кнопку "Delete" и... Появляется сообщение об ошибке (рис. 14.25):
(рис 14.25) Ошибка, возникающая при попытке удалить папку из каталога IISПричина ошибки заключается в том, что сервер IIS использует содержимое этой папки. Удалять папку следует с помощью утилиты администрирования сервера. Переходим в меню "Пуск \ Панель управления \ Администрирование", запускаем утилиту "Internet Information Services". Она предназначена для
(рис 14.26) Удаление web-службы NorthwindServiceПосле подтверждения удаления служба будет удалена из папки "C:\Inetpub\wwwroot". Для установки web-службы запускаем файл Setup.Exe, расположенный в папке "Пакет_установки". В процессе установки мастер предложит выбрать название создаваемой директории и порт подключения. Оставим эти значения по умолчанию. Завершив
В программном обеспечении к курсу вы найдете папку Пакет_установки (Code\Glava7\Пакет_установки).
В процессе работы может потребоваться переустановить IIS с компьютера. Переходим в меню "Пуск \ Панель управления \ Установка и удаления программ", в категории "Установка компонентов Windows" снимаем галочку "Internet Information Services (IIS)" нажимаем кнопку "Далее". Сервер IIS будет удален с компьютера. Для его установки повторяем эти же действия, отмечая его галочкой, затем вставляем установочный диск "Windows XP" и снова нажимаем кнопку "Далее". После установки приступаем к созданию нового web-сервиса, и при попытке его создания возникает сообщение об ошибке (рис. 14.27):
(рис 14.27) Ошибка при создании web-сервиса после переустановки IISДело в том, что новый IIS, если он устанавливается поверх Visual Studio. NET, не содержит регистрации библиотеки .NET Framework. Это нужно проделать вручную. Переходим "Пуск \ Все программы \ Microsoft Visual Studio .NET 2003 \ Visual Studio .NET Tools \ Visual Studio .NET 2003 Command Prompt". В появившемся окне вводим следующую команду:
aspnet_regiis /i
Через некоторое время регистрация завершается (рис. 14.28) и можно приступать к разработке web-служб.
(рис 14.28) Регистрация библиотеки .NET Framework
Основная задача web-служб - предоставление методов и данных. Они могут совсем не иметь пользовательского интерфейса, поскольку клиентское приложение все равно его не отобразит. Тем не менее при размещении в Интернете аскетичная страничка-отчет будет "лицом" web-сервиса, по крайней мере для разработчиков, которые будут его применять. Изменим немного стандартное оформление. Шаблон "DefaultWsdlHelpGenerator.aspx", по которому среда Visual Studio .NET генерирует отчеты, находится в каталоге "C:\WINDOWS\Microsoft.NET\ Framework\v1.1.4322\CONFIG". Поместим в этот каталог логотип "logoINTUIT.gif" (он находится в программном
<style type="text/css">
...
.heading1 { <%#GetLocalizedText("Styleheading1")%>
background-color: #ff9900; }
....
</style>
После тега "body" вставляем рисунок и ссылку:
<body> <a href="http://www.intuit.ru/"> <img src="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\logoINTUIT.gif" border="0" width="285" height="52" alt="Интернет Университет информационных технологий"> </a> ...
Сохраняем страницу, запускаем web-сервис DataNorthwind, и теперь его отчет выглядит следующим образом (рис. 14.29):
(рис 14.29) Отчет web-сервиса DataNorthwind, созданный на основе измененного шаблонаИзменяя параметры CSS, можно задавать оформление текста, ссылок, а также внешний вид страницы. Отчеты всех web-сервисов, создаваемых в дальнейшем на данном компьютере, будут иметь соответствующий вид.
Web-служба размещается на сервере IIS (Internet Information Services). При установке Microsoft Windows XP Professional (SP2) по умолчанию сервер IIS устанавливается не полностью и нам нужно завершить его
(рис 14.1) Установка сервера IIS Скорее всего, у вас имеется частично установленный
Рассмотрим создание web-службы, предоставляющей возможность получать и обновлять данные из базы Northwind MS SQL Server. Запускаем Visual Studio .NET, создаем новый проект, в списке шаблонов выбираем "ASP.NET Web Service", в строке "Location" вводим название web-сервиса "NorthwindService" (рис. 14.2):
(рис 14.2) Создание web-сервиса NorthwindService Среда генерирует шаблон web-сервиса, который открывается в режиме дизайна (рис. 14.3). Сам по себе web-сервис не имеет пользовательского интерфейса, поэтому у него достаточно специфичный вид. Но в процессе разработки можно использовать визуальные средства студии, размещая на поверхности элементы управления или объекты. В этом смысле режим дизайна web-сервиса аналогичен панели компонент в обычных Windows-приложениях.
(рис 14.3) Шаблон web-сервисаФайл web-сервиса имеет расширение .asmx. Переходим в окно Solution Explorer и переименовываем файл "Service1.asmx" в "DataNorthwind.asmx". Переключаемся в режим кода, нажимая на ссылку "click here to switch to code view" (или просто нажимая клавишу F7). Дополнительно изменяем название класса и конструктора. Разработчики Visual Studio .NET оставили тестовый метод web-сервиса Hello World, который возвращает ставшую классической строку "Hello World". Снимаем с него комментарии. Полностью листинг web-службы будет выглядеть теперь следующим образом:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
namespace NorthwindService
{
/// <summary>
/// Summary description for Service1.
/// </summary>
public class DataNorthwind : System.Web.Services.WebService
{
public DataNorthwind()
{
//CODEGEN: This call is required by the ASP.NET
//Web Services Designer
InitializeComponent();
}
#region Component Designer generated code
//Required by the Web Services Designer
private IContainer components = null;
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if(disposing components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
#endregion
// WEB SERVICE EXAMPLE
// The HelloWorld() example service returns the string Hello World
// To build, uncomment the following lines then save and build the project
// To test this web service, press F5
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
}
}
Компилируем сервис, нажимая кнопку F5. Среда генерирует отчет, содержащий описание сервиса, рекомендации, а также его методы и их тесты. Переходим по ссылке "HelloWorld" (рис. 14.4):
(рис 14.4) Отчет web-сервиса, генерируемый средой Появляется окно, в котором можно протестировать результат метода, щелкнув на кнопку "Invoke" (рис. 14.5):
(рис 14.5) Тестирование метода HelloWorldМетод возвращает строку "Hello World" в формате XML, она открывается в отдельном окне (рис. 14.6):
(рис 14.6) Результат выполнения методаВернемся к коду. При тестировании появлялась рекомендация (см. рис. 14.4) изменить пространство имен web-сервиса перед его публикацией. По умолчанию мастер подставляет пространство из шаблона:
http://tempuri.org/
Перед классом задаем собственное пространство имен и описание web-сервиса при помощи атрибутов Namespace и Desription:
[WebService(Namespace=
"http://www.somesite.com/mywebservices",
Description="Web-сервис для работы с базой данных Northwind")]
public class DataNorthwind :
System.Web.Services.WebService
{
...
Web-методы также обладают атрибутом "Description", с помощью которого можно задавать описание каждого метода:
[WebMethod (Description="Этот метод разработчики
оставили в качестве примера.")]
public string HelloWorld()
{
return "Hello World";
}
Снова компилируем проект. Теперь отчет стал более понятным (рис. 14.7):
(рис 14.7) Применение атрибутов DescriptionПриступим к созданию собственных методов. Переходим в режим дизайна, из вкладки Data окна Toolbox перетаскиваем объект SqlDataAdapter. В появившемся мастере Data
[WebMethod (Description="Метод для заполнения
данными объекта DataSet")]
public DataSet ZapolnenieDannimi()
{
sqlDataAdapter1.Fill(dataSet11);
return dataSet11;
}
[WebMethod (Description="Метод для передачи
изменений в базу данных")]
public bool PeredachaIzmeneniy(DataSet ds)
{
if (ds.HasErrors)
return false;
sqlDataAdapter1.Update(ds);
return true;
}
Параметр [WebMethod] является обязательным при создании web-методов, а атрибут Description - нет. Впрочем, его следует добавлять для удобства работы. Протестируем наш сервис. Переходим по ссылке к методу ZapolnenieDannimi (рис. 14.8):
(рис 14.8) Тестирование после добавления собственных методов При извлечении метода - нажатии кнопки "Invoke" - на его странице появляется сообщение об ошибке:
System.Data.SqlClient.SqlException: Login failed for user 'F202406B87AB496\ASPNET'.
При настройке объекта DataAdapter для подключения к MS SQL Server я выбрал тип аутентификации Windows. Web-служба подключается, используя учетную запись "ASPNET", которая создается при установке Visual Studio .NET. Проблема заключается в том, что эта учетная запись не обладает полномочиями для подключения к базе данных Northwind. Поэтому при отладке и появляется сообщение об ошибке, где "F202406B87AB496" - имя моего локального компьютера. Если мы не хотим использовать аутентификацию SQL-сервера, нужно будет изменить права учетной записи "ASPNET". Запускаем SQL Server Enterprise Manager, раскрываем узел текущего сервера, на вкладке Security щелкаем правой кнопкой и выбираем New Login. В появившемся окне SQL Server Login Properties нажимаем кнопку обзора (_), в появившемся окне добавляем учетную запись "ASPNET", затем нажимаем "OK" (рис. 14.9):
(рис 14.9) Добавление пользователя "ASPNET"Далее, на вкладке Server Roles отмечаем галочкой "Database Creators" (рис. 14.10). Эта роль предоставляет права создавать и изменять базы данных на сервере.
(рис 14.10) Определение роли пользователя "ASPNET"На вкладке Database Access определяем, к какой именно базе данных будет иметь доступ пользователь "ASPNET". Отмечаем только базу Northwind (рис. 14.11):
(рис 14.11) Предоставления доступа к базе "Northwind"Завершаем настройку учетной записи, нажимая "OK" в окне SQL Server Login Properties. Проверим снова web-сервис - метод ZapolnenieDannimi возвращает теперь содержимое таблицы Customers (рис. 14.12):
(рис 14.12) Выполнение метода "ZapolnenieDannimi"В документе находится XSD-схема объекта DataSet, а также само содержимое в формате XML.
Мы завершили разработку web-сервиса.
В качестве клиента, вызывающего web-методы, применим Windows-приложение. Создайте новый Windows-проект и назовите его "Test NorthwindWS". Добавляем на форму элементы управления DataGrid и Panel, свойствам Dock этих элементов устанавливаем значения "Fill" и "Bottom" соответственно.
На панели размещаем две кнопки, устанавливая им следующие свойства:
button1, свойство | Значение |
|---|---|
Name |
btnFill |
Location |
26; 16 |
Text |
Заполнить |
button2, свойство | Значение |
|---|---|
Name |
btnUpdate |
Location |
122; 16 |
Size |
144; 23 |
Text |
Передать изменения |
Интерфейс готов. В окне Solution Explorer щелкаем правой кнопкой на узле "References" и в появившемся контекстном меню выбираем пункт "Add Web Reference_" (рис. 14.13):
(рис 14.13) Окно Solution ExplorerВ появившемся окне Add Web Reference доступен просмотр всех web-служб. Поскольку наш сервис расположен на локальном компьютере, нажимаем на ссылку "Web services on the local machine". Далее снова переходим по ссылке "DataNorthwind" (рис. 14.14):
(рис 14.14) Окно Add Web Reference, просмотр web-службПоявляется уже знакомый нам отчет, на котором можно просмотреть описание сервиса и его методов. В поле Web reference name можно ввести имя создаваемой ссылки. Мы оставляем предложенное название "localhost" и нажимаем кнопку "Add Reference" (рис. 14.15):
(рис 14.15) Добавление ссылки на сервис DataNorthwindВ окне Solution Explorer появилась папка Web Reference с узлом localhost. Дважды щелкаем на этом узле. В окне Object Browser мы можем просмотреть описание web-методов, предоставляемых сервисом (рис. 14.16):
(рис 14.16) Просмотр web-методов в окне Object BrowserВпрочем, поскольку у нас имеется всего три предельно простых метода, мы можем вернуться к коду. Подключаем пространство имен для получения доступа к добавленному сервису:
using TestNorthwindWS.localhost;
В классе формы создаем экземпляр myService:
DataNorthwind myService = new DataNorthwind();
В обработчиках кнопок "btnFill" и "btnUpdate" вызываем соответствующие web-методы:
private void btnFill_Click(object sender,
System.EventArgs e)
{
DataSet ds = myService.ZapolnenieDannimi();
dataGrid1.DataSource = ds.Tables[0].DefaultView;
}
private void btnUpdate_Click(object sender, System.EventArgs e)
{
DataSet ds = (DataSet)dataGrid1.DataSource;
if(!myService.PeredachaIzmeneniy(ds))
MessageBox.Show("Ошибка обновления",
"При передаче изменений возникла ошибка" );
}
Запускаем приложение. Мы можем просматривать и изменять содержимое таблицы Customers (рис. 14.17):
(рис 14.17) Готовое приложение TestNorthwindWSКак работает наше приложение? Мы добавили ссылку на web-службу, аналогично добавлению обычной библиотеки. Не имеет значения, где эта служба находится. Далее мы просто создаем объект класса службы и вызываем соответствующие методы. При нажатии на кнопку "Заполнить" происходит обращение к серверу IIS, который, в свою очередь, обращается к MS SQL Server и получает данные для объекта DataSet. Наше приложение устанавливает полученный DataSet в качестве источника данных для элемента управления DataGrid. Аналогично выполняется метод, привязанный к кнопке "Передать изменения".
В программном обеспечении к курсу вы найдете приложение Test NorthwindWS (Code\Glava7\ TestNorthwindWS).
При создании Windows-приложений нам не приходится задумываться о местоположении наших файлов и проектов, об их взаимодействии со службами компьютера, - все достаточно просто. Имеется папка, в которой располагается проект, в нем есть папка "Debug" (или "Release"), где размещено скомпилированное приложение. Немного по-другому обстоят дела с web-службами. После создания проекта web-сервиса Northwind Service все рабочие файлы располагаются по умолчанию в каталоге "C(Имя системного диска):\Inetpub\wwwroot\NorthwindService" (рис. 14.18):
(рис 14.18) Файлы web-сервисаВ папке "bin" находится скомпилированный файл библиотеки динамической компоновки NorthwindService.dll. Файл Solution, по нажатию на который запускается среда Visual Studio .NET и открывается web-сервис в режиме разработки, расположен в каталоге "C:\Documents and Settings\Chingiz Kariev(Имя пользователя)\Мои документы\Visual Studio Projects\NorthwindService.sln" (рис. 14.19):
(рис 14.19) Файл Solution web-сервиса NorthwindServiceРабочие файлы web-сервиса, которые используются приложениями-клиентами (например, TestNorthwindWS), должны быть помещены в web-узел сервера IIS. Переходим в меню "Пуск \ Панель управления \ Администрирование \ Internet Information Services". В группе "Web-узел по умолчанию" мы видим папку "NorthwindService", в которой располагаются все рабочие файлы (рис. 14.20):
(рис 14.20) Сервер Internet Information Services (IIS)При переходе по ссылке "Web services on the local machine" мы видели ссылку на сервис DataNorthwind только лишь потому, что папка сервиса уже находилась в каталоге сервера IIS. Откуда взялась эта папка? При создании нового проекта web-сервиса среда Visual Studio .NET автоматически помещает его файлы в директорию "C:\Inetpub\wwwroot". Сервер IIS сканирует эту директорию и при наличии подходящих файлов предоставляет соответствующие услуги web-сервиса.
В программном обеспечении к курсу вы найдете папку NorthwindService, скопированную из узла "C:\Inetpub\wwwroot". (Code\Glava7\ Northwind Service).
Для переноса web-службы на другой компьютер достаточно разместить в его каталоге IIS (по умолчанию "C:\Inetpub\wwwroot") рабочие файлы. Это можно сделать непосредственно простым копированием, но лучше подготовить пакет установки. Где-нибудь в рабочей директории создаем папку "Пакет_установки" (у меня это "D:\Uchebnik\Code\Glava7") - в нее будем помещать файлы пакета установки. Запускаем Visual Studio .NET, создаем новый проект, в окне "New Project" переходим в категорию "Setup and Deployment Projects" и выбираем шаблон "Web Setup Project" (рис. 14.21):
(рис 14.21) Окно New Project. Создание пакета установки В окне File System щелкаем правой кнопкой на папке "Web Application Folder", в появившемся меню выбираем "Add \ File" (рис. 14.22, А). Далее, в окне "Add Files" переходим в текущий каталог IIS, из папки "NorthwindService" добавляем следующие файлы (рис. 14.22, Б):
(рис 14.22) Добавление файлов веб-службы. А - Папка "Web Application Folder", Б - выделение файлов папки "NorthwindService"Теперь нужно определить содержимое папки "bin". Щелкаем на ней правой кнопкой, снова переходим в меню "Add \ File" (рис. 14.23, А). В окне Add Files переходим в папку "bin", которая расположена в папке "NorthwindService", и добавляем следующие два файла (рис. 14.23, Б):

Все нужные файлы собраны. На панели инструментов Standart выбираем режим
(рис 14.23) ("Release") отладки проекта, а затем компилируем его, нажимая сочетание клавиш Ctrl+Shift+B (или выбирая пункт главного меню "Build \ Build Solution"). Пакет установки
(рис 14.24) Готовый пакет установкиПроделаем операцию установки на локальном компьютере. На сервере IIS у нас уже есть web-сервис NorthwindService, возникший в процессе его создания в среде Visual Studio .NET. Нам нужно его вначале удалить, а потом установить с помощью пакета установки. Переходим в папку "C:\Inetpub\wwwroot", выделяем папку, нажимаем кнопку "Delete" и... Появляется сообщение об ошибке (рис. 14.25):
(рис 14.25) Ошибка, возникающая при попытке удалить папку из каталога IISПричина ошибки заключается в том, что сервер IIS использует содержимое этой папки. Удалять папку следует с помощью утилиты администрирования сервера. Переходим в меню "Пуск \ Панель управления \ Администрирование", запускаем утилиту "Internet Information Services". Она предназначена для
(рис 14.26) Удаление web-службы NorthwindServiceПосле подтверждения удаления служба будет удалена из папки "C:\Inetpub\wwwroot". Для установки web-службы запускаем файл Setup.Exe, расположенный в папке "Пакет_установки". В процессе установки мастер предложит выбрать название создаваемой директории и порт подключения. Оставим эти значения по умолчанию. Завершив
В программном обеспечении к курсу вы найдете папку Пакет_установки (Code\Glava7\Пакет_установки).
В процессе работы может потребоваться переустановить IIS с компьютера. Переходим в меню "Пуск \ Панель управления \ Установка и удаления программ", в категории "Установка компонентов Windows" снимаем галочку "Internet Information Services (IIS)" нажимаем кнопку "Далее". Сервер IIS будет удален с компьютера. Для его установки повторяем эти же действия, отмечая его галочкой, затем вставляем установочный диск "Windows XP" и снова нажимаем кнопку "Далее". После установки приступаем к созданию нового web-сервиса, и при попытке его создания возникает сообщение об ошибке (рис. 14.27):
(рис 14.27) Ошибка при создании web-сервиса после переустановки IISДело в том, что новый IIS, если он устанавливается поверх Visual Studio. NET, не содержит регистрации библиотеки .NET Framework. Это нужно проделать вручную. Переходим "Пуск \ Все программы \ Microsoft Visual Studio .NET 2003 \ Visual Studio .NET Tools \ Visual Studio .NET 2003 Command Prompt". В появившемся окне вводим следующую команду:
aspnet_regiis /i
Через некоторое время регистрация завершается (рис. 14.28) и можно приступать к разработке web-служб.
(рис 14.28) Регистрация библиотеки .NET Framework
Основная задача web-служб - предоставление методов и данных. Они могут совсем не иметь пользовательского интерфейса, поскольку клиентское приложение все равно его не отобразит. Тем не менее при размещении в Интернете аскетичная страничка-отчет будет "лицом" web-сервиса, по крайней мере для разработчиков, которые будут его применять. Изменим немного стандартное оформление. Шаблон "DefaultWsdlHelpGenerator.aspx", по которому среда Visual Studio .NET генерирует отчеты, находится в каталоге "C:\WINDOWS\Microsoft.NET\ Framework\v1.1.4322\CONFIG". Поместим в этот каталог логотип "logoINTUIT.gif" (он находится в программном
<style type="text/css">
...
.heading1 { <%#GetLocalizedText("Styleheading1")%>
background-color: #ff9900; }
....
</style>
После тега "body" вставляем рисунок и ссылку:
<body> <a href="http://www.intuit.ru/"> <img src="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\logoINTUIT.gif" border="0" width="285" height="52" alt="Интернет Университет информационных технологий"> </a> ...
Сохраняем страницу, запускаем web-сервис DataNorthwind, и теперь его отчет выглядит следующим образом (рис. 14.29):
(рис 14.29) Отчет web-сервиса DataNorthwind, созданный на основе измененного шаблонаИзменяя параметры CSS, можно задавать оформление текста, ссылок, а также внешний вид страницы. Отчеты всех web-сервисов, создаваемых в дальнейшем на данном компьютере, будут иметь соответствующий вид.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.