Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Обновлен: Ноябрь 2007
Веб-службы состоят из двух частей: точка входа веб-службы и код, который реализует функциональность веб-службы. В ASP.NET адресуемой точкой входа для веб-службы служит текстовый ASMX-файл. Он ссылается на код в предкомпилированных сборках, файл с выделенным кодом, или на код, содержащийся в самом ASMX-файле.
Примечание. |
|---|
Если код содержится непосредственно в самом ASMX-файле, ASP.NET будет компилировать его на сервере при обращении к нему. |
Директива обработки WebService, стоящая в начале ASMX-файла, указывает, где находится реализация веб-службы. По умолчанию при создании веб-службы с помощью шаблона проекта веб-службы ASP.NET среда Visual Studio использует такие файлы с выделенным кодом, как, например, Service1.asmx.vb или Service1.asmx.cs.
Примечание. |
|---|
Visual Studio не поддерживает межъязыковую компиляцию. Например, невозможно включить веб-службу, написанную на языке C#, в проект веб-приложения ASP.NET на Visual Basic, и наоборот. |
При построении веб-службы в управляемом коде среда ASP.NET автоматически обеспечивает инфраструктуру и обрабатывает запросы и ответы веб-службы, в том числе занимаясь разбором и формированием сообщений SOAP.
Директива обработки WebService
В начале ASMX-страницы находится директива обработки WebService, атрибуты которой содержат сведения о реализации веб-службы. Эта директива предоставляет среде ASP.NET необходимые сведения, например, о том, какой класс реализует функциональность веб-службы. Ниже приведен пример директивы обработки WebService:
[Visual Basic]
<%@ WebService Language="vb" Codebehind="Service1.asmx.vb"
Class="WebService1.Service1" %>
[C#]
<%@ WebService Language="c#" Codebehind="Service1.asmx.cs"
Class="WebService1.Service1" %>
Атрибут Language указывает, какой язык программирования использовался для разработки веб-службы. Веб-службы можно разрабатывать на любом языке, совместимом с .NET — например, на Visual Basic .NET или на Visual C#.
При создании веб-служб в управляемом коде с использованием Visual Studio .NET реализация веб-службы находится в файле с выделенным кодом. Файл с выделенным кодом связывается с ASMX-страницей посредством атрибута Codebehind.
Примечание. |
|---|
Этот атрибут помогает Visual Studio управлять проектом веб-службы и не используется во время выполнения. |
При использовании шаблона проекта веб-службы ASP.NET атрибут Class указывает, какой класс в файле с выделенным кодом реализует функциональные возможности веб-службы.
При использовании шаблона проекта веб-службы ASP.NET Visual Studio .NET автоматически вставляет эту директиву в ASMX-файл.
Совет. |
|---|
Если возникла необходимость переименовать класс, не забудьте изменить имя класса в атрибуте Class директивы WebService. |
Примечание. |
|---|
Чтобы просмотреть содержимое ASMX-файла, в обозревателе решений щелкните правой кнопкой мыши ASMX-файл и выберите в контекстном меню команду Открыть с помощью. В диалоговом окне Открыть с помощью выберите Редактор исходного кода и нажмите кнопку Открыть. |
Дополнительные сведения см. в разделе Walkthrough: Building a Basic XML Web Service Using ASP.NET.
Класс System.Web.Services.WebService
System.Web.Services.WebService — это необязательный базовый класс веб-служб, обеспечивающий прямой доступ к таким базовым объектам ASP.NET, как, например, приложение или состояние сеанса. По умолчанию веб-службы, созданные в управляемом коде с помощью Visual Studio, наследуют от этого класса. Веб-службы могут наследовать от этого класса для получения доступа к таким встроенным объектам ASP.NET, как, например, Request и Session. Дополнительные сведения см. в разделе Класс WebService.
Если веб-служба не наследует от этого класса, она может обращаться к встроенным объектам ASP.NET через свойство System.Web.HttpContext.Current. Класс, реализующий веб-службу, должен быть открытым и иметь открытый конструктор по умолчанию (конструктор без параметров). Это позволяет ASP.NET создавать экземпляры класса веб-службы для обработки входящих запросов к веб-службе. Дополнительные сведения см. в разделе Свойство HttpContext.Current.
[Visual Basic]
Imports System.Web.Services
Public Class Service1
Inherits System.Web.Services.WebService
' Implementation code.
End Class
[C#]
using System.Web.Services;
public class Service1 : System.Web.Services.WebService
{
// Implementation code.
}
Дополнительные сведения см. в разделе Наследование от класса WebService.
Атрибут WebService
Каждая веб-служба нуждается в уникальном пространстве имен; это позволяет клиентским приложениям различать веб-службы, которые могут публиковать методы с одинаковыми именами. Стандартное пространство имен для веб-служб, создаваемых в среде Visual Studio .NET, — http://tempuri.org/WebService1/Service1, где WebService1 — это имя проекта, а Service1 — имя класса. Хотя пространство имен похоже на обычный URL-адрес, не следует думать, что его можно открыть в веб-обозревателе: это просто уникальный идентификатор.
Примечание. |
|---|
Иногда имеет смысл разместить по этому адресу веб-страницу, которая содержала бы сведения о публикуемых веб-службах. |
С помощью атрибута WebService можно указать пространство имен и предоставить краткое описание веб-службы. Краткое описание будет отображаться на странице справки службы при вызове веб-службы через обозреватель без указания строки запроса:
[Visual Basic]
<System.Web.Services.WebService( _
Namespace:="http://tempuri.org/WebService1/Service1", _
Description:="A short description of the Web service.")> _
Public Class Service1
Inherits System.Web.Services.WebService
' Implementation code.
End Class
[C#]
[System.Web.Services.WebService(
Namespace="http://tempuri.org/WebService1/Service1",
Description="A short description of the Web service.")]
public class Service1 : System.Web.Services.WebService
{
// Implementation code.
}
Дополнительные сведения см. в разделах Класс WebServiceAttribute и Использование атрибута WebService.
Применение атрибута WebMethod
Чтобы опубликовать метод в составе веб-службы, необходимо поместить атрибут WebMethod перед объявлением каждого открытого метода, который должен быть опубликован. Дополнительные сведения см. в разделе Практическое руководство. Создание метода веб-службы.
[Visual Basic]
<System.Web.Services.WebMethod()> _
Public Function MyString(ByVal x as string) As String
' Implementation code.
End Function
[C#]
[System.Web.Services.WebMethod()]
public string MyString(string x)
{
//implementation code
}
Атрибут WebMethod содержит несколько свойств, определяющих поведение веб-службы. Дополнительные сведения см. в разделах Класс WebMethodAttribute и Использование атрибута WebMethod. Например, можно использовать этот атрибут для задания краткого описания, которое появится на соответствующей справочной странице службы:
[Visual Basic]
<System.Web.Services.WebMethod( _
Description:="A short description of this method.")> _
Public Function MyString(ByVal x as string) As String
' Implementation code.
End Function
[C#]
[System.Web.Services.WebMethod(
Description="A short description of this method.")]
public string MyString(string x)
{
// Implementation code.
}
Несколько идущих подряд свойств следует разделять запятыми. Пример задания описания и включения сохранения результатов работы веб-службы в кэше на протяжении 60 секунд:
[Visual Basic]
<System.Web.Services.WebMethod( _
Description:="A short description of this method.", _
CacheDuration:=60)> _
Public Function MyString(ByVal x as string) As String
' Implementation code.
End Function
[C#]
[System.Web.Services.WebMethod(
Description="A short description of this method.",
CacheDuration=60)]
public string MyString(string x)
{
// Implementation code.
}
Сводная информация
Любая веб-служба состоит из ASMX-файла и класса веб-службы. ASMX-файл содержит директиву обработки WebService, которая ссылается на этот класс. Класс веб-службы является открытым, имеет открытый конструктор по умолчанию и один или несколько открытых методов, помеченных атрибутом WebMethod. Следующая диаграмма демонстрирует взаимосвязь между проектом, классом, его методами и итоговой веб-службой.
Классы WebService и итоговые объекты
.gif)
См. также
Основные понятия
Модель кода для доступа к веб-службам в управляемом коде
Примечание.