https://technet.microsoft.com/en-us/library/ms143221(v=sql.105).aspx |
Web-сервисы
Создание web-сервиса
Создание web-сервиса немногим отличается от создания обычной страницы. Есть два варианта: можно создать отдельный проект или вставить web-сервис в существующий проект. В первом случае другие проекты должны создавать web-ссылку, чтобы обращаться к сервисам этого проекта. Файл web-сервиса имеет расширение asmx. Файл web-сервиса должен начинаться с директивы WebService. Класс web-сервиса может быть потомком класса System.Web.Services.WebService.
Если при объявлении web-сервиса вы породили его от класса System.Web.Services.WebService, то вы автоматически получаете доступ к глобальным объектам приложения ASP .NET Application, Context, Session, Server и User. Если же вы создавали класс web-сервиса как-то иначе — ничего страшного. Вы все равно можете получить доступ к вышеперечисленным свойствам с помощью соответствующих свойств статического HttpContext.Current.
Методы, которые сервис предоставляет для вызова с помощью SOAP -запросов, должны иметь атрибут WebMethod. У атрибута WebMethod существует 6 свойств, влияющих на работу метода.
Создадим новое приложение в VS .NET и добавим к нему файл web-сервиса Customers.asmx.
Файл nw.asmx содержит единственную строку — директиву WebService, которая утверждает, что этот файл — web-сервис. Этот файл меняться не будет:
<%@ WebService Language="C#" CodeBehind="~/App_Code/Customers.cs" Class=" Customers " %>
У директивы WebService всего 4 возможных атрибута. CodeBehind, который раньше был атрибутом у директивы Page, определяет физический путь к файлу отделенного кода. Атрибут Class обязателен и определяет класс, который реализует функциональность web-сервиса. Debug и Language аналогичны тем же атрибутам директивы Page:
Файл с расширением .asmx — точка входа создаваемого web-сервиса.
Класс System.Web.Services.WebService, который обычно наследует класс сервиса, предоставляет доступ к глобальным объектам Application и ViewState.
Весь код web-сервиса будет располагаться в codebehind-файле Service.asmx.cs. Изначально этот файл (созданный в Visual Studio .NET) имеет следующий вид:
<%Class="WebService" %> using System; using System.Web; using System.Collections; using System.Web.Services; using System.Web.Services.Protocols; /// <summary> /// Summary description for WebService /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class MyWebService : System.Web.Services.WebService { public WebService () { //Uncomment the following line if using designed compo- nents //InitializeComponent(); } [WebMethod] public string HelloWorld() { return "Hello World"; } }
Атрибут WebServiceBinding удостоверяет соответствие откликов web-сервиса WS-I Basic Profile 1.0 release требованиям организации WS-I (Web Services Interoperability organization), которая занимается вопросами межплатформенной совместимости web-сервисов.
Метод HelloWorld создан Visual Studio в качестве примера начинающим разработчикам.
Web-сервис может состоять из множества классов. Однако только один класс в web-сервисе может иметь методы, помеченные атрибутом WebMethod (которые можно вызывать через SOAP -запросы).
Когда страница web-сервиса запрашивается в браузере, он возвращает автоматически генерируемую страницу помощи по данному сервису. Откроем в браузере страницу WebService.asmx. В браузере появится страница:
ASP .NET для отображения web-сервиса использует файл шаблона DefaultWsdlHelpGenerator.aspx, расположенный в папке <%SYSTEM_ROOT%\Microsoft.NET\Framework\<version>\CONFIG. На выводимой странице web-сервиса есть название web-сервиса, ссылка на описание сервиса и список web-методов, объявленных в web-сервисе. Остальная часть страницы посвящена тому, что необходимо изменить пространство имен по умолчанию для web-сервиса http://tempuri.org/ на собственное. Поступим как рекомендуют — изменим параметр Namespace атрибута WebService класса web- сервиса:
[WebService(Namespace = "http://Lection-16.asp2.intuit.org/")]
Кроме того, в атрибуте WebService можно задать свойства Name и Description, и они появятся на странице помощи по web-сервису.