Практическое руководство. Создание простой XML-веб-службы с использованием ASP.NET

Этот раздел посвящен технологии прежних версий. Веб-службы XML и клиенты веб-служб XML должны создаваться с использованием Windows Communication Foundation.

Разработка XML-веб-службы с помощью ASP.NET начинается со следующих операций.

  1. Создайте файл с расширением .asmx и объявите в нем веб-службу, используя директиву @WebService.

  2. Создайте класс, реализующий веб-службу. Если требуется, этот класс может наследоваться от класса WebService.

  3. Если требуется, примените атрибут WebServiceAttribute к классу, реализующему веб-службу.

  4. Определите методы веб-службы, реализующие функциональность этой веб-службы.

Объявление веб-службы

При создании XML-веб-службы в ASP.NET необходимо поместить требуемую директиву @ WebService в первую строку текстового файла с расширением .asmx. Наличие файла .asmx и директивы @ WebService связывает URL-адрес XML-веб-службы с ее реализацией. Затем необходимо реализовать класс XML-веб-службы, определяющий методы и типы данных, доступные клиентам XML-веб-службы. Наконец необходимо добавить в эти методы логику XML-веб-службы, чтобы обрабатывать запросы XML-веб-службе и отправлять назад ответы. Определенный класс XML-веб-службы можно поместить непосредственно в файл .asmx или в отдельный файл. Если используется отдельный файл, необходимо скомпилировать его в сборку. Если требуется, можно применить атрибут WebService к классу, реализующему XML-веб-службу. Класс, реализующий XML-веб-службу, может наследоваться от класса WebService.

Объявление веб-службы, реализация которой находится в этом же файле

  1. Добавьте в первую строку файла с расширением .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" %>
    

Объявление веб-службы, реализация которой находится в сборке

  1. Добавьте в первую строку файла с расширением .asmx директиву @ WebService, указывающую класс, который реализует веб-службу, сборку, которая содержит реализацию, и язык программирования, используемый для реализации. Если используется отдельный файл, необходимо скомпилировать его в сборку.

    Приведенная ниже директива @ WebService является единственной строкой в файле с расширением .asmx, задающей, что класс MyName.MyWebService находится в сборке MyAssembly в каталоге \Bin веб-приложения, в котором размещена веб-служба.

    <%@ WebService Language="C#" Class="MyName.MyWebService,MyAssembly" %>
    
    <%@ WebService Language="VB" Class="MyName.MyWebService,MyAssembly" %>
    
    7hs6sw69.note(ru-ru,VS.100).gifПримечание
    Если сборка в директиве @ 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, членом которого является веб-служба

  1. Примените атрибут WebService к классу, реализующему веб-службу, задав свойство Namespace.

В следующем примере кода показано задание пространства имен XML http://www.contoso.com/.

<%@ WebService Language="C#" Class="Util" Debug=true%>
using System.Web.Services;
using System;

[WebService(Namespace="http://www.contoso.com/")]
public class Util: WebService 
<%@ WebService Language="VB" Class="Util"%>
Imports System.Web.Services
Imports System

<WebService(Namespace:="http://www.contoso.com/")> _
Public Class Util
    Inherits WebService

Задание методов веб-службы

Методы класса, реализующего веб-службу, не получают автоматически возможность обмена данными через Интернет, но такую возможность очень просто добавить в веб-службу, созданную с помощью ASP.NET. Чтобы добавить такую возможность, примените атрибут WebMethod к открытым методам. Заданные в веб-службе методы, с которыми возможен обмен информацией через Интернет, называются методами веб-службы.

Объявление метода веб-службы

  1. Добавьте открытые методы в класс, реализующий веб-службу.

  2. Примените атрибут WebMethod к открытым методам, которые требуется сопоставить операциям веб-службы.

В следующем примере кода имеются два открытых метода, один из которых является методом веб-службы. Метод Multiply является методом веб-службы, так как к нему применен атрибут WebMethod.

<%@ WebService Language="C#" Class="Util" %>
using System.Web.Services;
using System;

[WebService(Namespace="http://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:="http://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

Другие ресурсы

XML-веб-службы с использованием ASP.NET