Транзакции в XML-веб-службах ASP.NET

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

Поддержка транзакций в веб-службах дополняет их поддержку, предусмотренную в среде CLR, которая основана на той же модели распределенных транзакций, что имеется в сервере Microsoft Transaction Server (MTS) и в службах COM+. Эта модель основана на декларативном принятии решения об участии объекта в транзакции, а не на составлении специального кода для обработки фиксации и отката транзакции. Для XML-веб-службы, созданной с помощью ASP.NET, можно объявить использование транзакций, указав свойство TransactionOption атрибута WebMethod для метода веб-службы. Пример см. в разделе Как участвовать в транзакциях в веб-службах, создаваемых с помощью ASP.NET.

Если при выполнении метода веб-службы выдается исключение, транзакция автоматически прерывается, а при отсутствии исключений она автоматически фиксируется.

Свойство TransactionOption атрибута WebMethodAttribute задает способ участия метода веб-службы в транзакции. Хотя этот декларативный уровень представляет логику транзакции, он удален от физической транзакции на одну ступень. Физическая транзакция происходит, когда транзакционный объект осуществляет доступ к ресурсу данных, такому как база данных или очередь сообщений. Транзакция, связанная с объектом, автоматически переходит к соответствующему диспетчеру ресурсов. Поставщик данных .NET Framework (например поставщик данных .NET Framework для SQL Server или поставщик данных .NET Framework для OLE DB) ищет транзакцию в контексте объекта и зачисляется в транзакцию через координатор распределенных транзакций (DTC). Транзакция проходит полностью автоматически.

Методы веб-службы могут участвовать в транзакции только как корневые элементы новых транзакций. В этом качестве все взаимодействия с диспетчерами ресурсов, такими как серверы с программным обеспечением Microsoft SQL Server, очередь сообщений (MSMQ) и Microsoft Host Integration Server, сохраняют свойства ACID, необходимые для надежной работы распределенных приложений. Методы веб-службы, вызывающие другие методы веб-службы, участвуют в разных транзакциях, поскольку транзакции не проходят между различными методами веб-службы.

85f292h1.note(ru-ru,VS.100).gifПримечание
Если метод, реализующий метод веб-службы, не вызывается при интернет-запросе файла с расширением ASMX, в котором он содержится или с которым он связан, значение свойства TransactionOption ни на что не влияет. Это может произойти, если класс, содержащий этот метод, является членом проекта Visual Studio .NET, и веб-служба не вызывается с помощью прокси-класса. В Visual Studio .NET прокси-класс создается при добавлении веб-ссылки.

См. также

Задачи

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

Справочник

TransactionOption Enumeration
WebMethodAttribute.TransactionOption Property

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

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