Практическое руководство. Создание простой XML-веб-службы с использованием ASP.NET
Этот раздел посвящен технологии прежних версий. Веб-службы XML и клиенты веб-служб XML должны создаваться с использованием Windows Communication Foundation.
Разработка XML-веб-службы с помощью ASP.NET начинается со следующих операций.
Создайте файл с расширением .asmx и объявите в нем веб-службу, используя директиву @WebService.
Создайте класс, реализующий веб-службу. Если требуется, этот класс может наследоваться от класса WebService.
Если требуется, примените атрибут WebServiceAttribute к классу, реализующему веб-службу.
Определите методы веб-службы, реализующие функциональность этой веб-службы.
Объявление веб-службы
При создании XML-веб-службы в ASP.NET необходимо поместить требуемую директиву @ WebService в первую строку текстового файла с расширением .asmx. Наличие файла .asmx и директивы @ WebService связывает URL-адрес XML-веб-службы с ее реализацией. Затем необходимо реализовать класс XML-веб-службы, определяющий методы и типы данных, доступные клиентам XML-веб-службы. Наконец необходимо добавить в эти методы логику XML-веб-службы, чтобы обрабатывать запросы XML-веб-службе и отправлять назад ответы. Определенный класс XML-веб-службы можно поместить непосредственно в файл .asmx или в отдельный файл. Если используется отдельный файл, необходимо скомпилировать его в сборку. Если требуется, можно применить атрибут WebService к классу, реализующему XML-веб-службу. Класс, реализующий XML-веб-службу, может наследоваться от класса WebService.
Объявление веб-службы, реализация которой находится в этом же файле
Добавьте в первую строку файла с расширением .asmx директиву @ WebService, указывающую класс, который реализует веб-службу, и язык программирования, используемый для реализации.
Атрибуту Class может быть присвоен класс, находящийся в той же сборке, что и директива @ WebService, или класс, находящийся в отдельной сборке. Если указанный класс находится в отдельной сборке, то он должен располагаться в подкаталоге \Bin веб-приложения, содержащего веб-службу. Атрибуту Language могут быть присвоены значения C#, VB и JS, что соответствует языкам C#, Visual Basic .NET и JScript .NET.
В следующем примере кода задается атрибут Language директивы @ WebService, и атрибуту Class присваивается класс
Util
, находящийся в этом же файле.<%@ WebService Language="C#" Class="Util" %>
<%@ WebService Language="VB" Class="Util" %>
Объявление веб-службы, реализация которой находится в сборке
Добавьте в первую строку файла с расширением .asmx директиву @ WebService, указывающую класс, который реализует веб-службу, сборку, которая содержит реализацию, и язык программирования, используемый для реализации. Если используется отдельный файл, необходимо скомпилировать его в сборку.
Приведенная ниже директива @ WebService является единственной строкой в файле с расширением .asmx, задающей, что класс
MyName.MyWebService
находится в сборкеMyAssembly
в каталоге \Bin веб-приложения, в котором размещена веб-служба.<%@ WebService Language="C#" Class="MyName.MyWebService,MyAssembly" %>
<%@ WebService Language="VB" Class="MyName.MyWebService,MyAssembly" %>
Примечание
Если сборка в директиве @ WebService не указана, при первом обращении к веб-службе ASP.NET производит поиск по списку сборок в каталоге \Bin веб-приложения, в котором размещена веб-служба. Поэтому указание имени сборки повышает производительность при первом обращении.
Наследование от класса WebService
Классы, реализующие веб-службу, созданную с помощью ASP.NET, могут, при желании, наследоваться от класса WebService, чтобы получить доступ к общим объектам ASP.NET, таким как Application, Session, User и Context.
Наследование от класса WebService и получение доступа к общим объектам ASP.NET
<%@ WebService Language="C#" Class="Util" %>
using System;
using System.Web.Services;
public class Util: WebService
<%@ WebService Language="VB" Class="Util" %>
Imports System
Imports System.Web.Services
Public Class Util
Inherits WebService
Применение атрибута WebService
Примените необязательный атрибут WebService к классу, реализующему веб-службу, чтобы задать пространство имен XML по умолчанию для веб-службы (исходное значение — http://tempuri.org) и строку с описанием веб-службы.
Настоятельно рекомендуется изменить пространство имен по умолчанию (http://tempuri.org), прежде чем сделать XML-веб-службу доступной для использования. Это важно, поскольку XML-веб-служба должна отличаться от других веб-служб с поддержкой XML, которые могут непреднамеренно использовать пространство имен в качестве пространства по умолчанию (<http://tempuri.org/>).
Задание пространства имен XML, членом которого является веб-служба
- Примените атрибут WebService к классу, реализующему веб-службу, задав свойство Namespace.
В следующем примере кода показано задание пространства имен XML https://www.contoso.com/.
<%@ WebService Language="C#" Class="Util" Debug=true%>
using System.Web.Services;
using System;
[WebService(Namespace="https://www.contoso.com/")]
public class Util: WebService
<%@ WebService Language="VB" Class="Util"%>
Imports System.Web.Services
Imports System
<WebService(Namespace:="https://www.contoso.com/")> _
Public Class Util
Inherits WebService
Задание методов веб-службы
Методы класса, реализующего веб-службу, не получают автоматически возможность обмена данными через Интернет, но такую возможность очень просто добавить в веб-службу, созданную с помощью ASP.NET. Чтобы добавить такую возможность, примените атрибут WebMethod к открытым методам. Заданные в веб-службе методы, с которыми возможен обмен информацией через Интернет, называются методами веб-службы.
Объявление метода веб-службы
Добавьте открытые методы в класс, реализующий веб-службу.
Примените атрибут WebMethod к открытым методам, которые требуется сопоставить операциям веб-службы.
В следующем примере кода имеются два открытых метода, один из которых является методом веб-службы. Метод Multiply
является методом веб-службы, так как к нему применен атрибут WebMethod.
<%@ WebService Language="C#" Class="Util" %>
using System.Web.Services;
using System;
[WebService(Namespace="https://www.contoso.com/")]
public class Util: WebService
{
[ WebMethod] public long Multiply(int a, int b)
{
return a * b;
}
}
<%@ WebService Language="VB" Class="Util" %>
Imports System.Web.Services
Imports System
<WebService(Namespace:="https://www.contoso.com/")>
Public Class Util
Inherits WebService
< WebMethod()> _ Public Function Multiply(a As Integer, b As Integer) As Long
Return a * b
End Function
End Class
См. также
Справочник
WebService Class
WebServiceAttribute Class
WebMethodAttribute Class
Основные понятия
Основные сведения об XML-веб-службах в ASP.NET