WS & Transaction's
От: skodnik  
Дата: 13.08.10 09:29
Оценка:
Читаю книгу Стив Резник, Ричард Крейн, Крис Боуэн — Windows Communication Foundation for .NET Framework 3.5.
Немного не понял о транзакциях.
В книге приведен пример, к тором метод сервиса помечен атрибутом [OperationBehavior(TransactionScopeRequired = true)] — соответственно, все операции происходящие в этом методе — транзакция. Если метод завершится вызовом исключения, то состояние данных должно вернуться в исходное состояние — до выполнения этого метода. Внутри же этого метода вызывается две функции модифицирующие базу данных. Мне вот интересно WCF сам такой умный, что откатит состояние базы данных если будет исключение в методе? Просто об операции отката ничего не говорится. Как WCF знает что я в этом методе трогаю БД?
Re: WS & Transaction's
От: cvetkov  
Дата: 13.08.10 10:01
Оценка:
вы таки не поверите, но база данных знает что такое транзакция
... << RSDN@Home 1.2.0 alpha 4 rev. 1227>>
Re[2]: WS & Transaction's
От: skodnik  
Дата: 13.08.10 10:14
Оценка:
Здравствуйте, cvetkov, Вы писали:

C>вы таки не поверите, но база данных знает что такое транзакция


Как мой Web-Service знает что в _методе_ используется именно _вооот-эта_ база данных?
Re[3]: WS & Transaction's
От: Gremlin2 http://www.fb2library.net/
Дата: 13.08.10 10:38
Оценка:
Здравствуйте, skodnik, Вы писали:

S>Здравствуйте, cvetkov, Вы писали:


C>>вы таки не поверите, но база данных знает что такое транзакция


S>Как мой Web-Service знает что в _методе_ используется именно _вооот-эта_ база данных?


Web-Service, конечно же, от этом не знает, но об этом знают SqlCommand'ы, которые выполняются в этом методе, кроме того команды "знают", что они выполняются внутри TransactionScope.
Re: WS & Transaction's
От: MozgC США http://nightcoder.livejournal.com
Дата: 13.08.10 10:45
Оценка:
Я с WCF не работал, но думаю что прозрачно для программиста будет создан объект TransactionScope и в случае успешного выполнения метода вызовется метод TransactionScope.Complete(). Ваши же SqlCommand'ы поддерживают TransactionScope и будут выполняться в единой транзакции, которая в случае ошибки подвергнется откату.
Re: WS & Transaction's
От: Mr.Cat  
Дата: 13.08.10 11:06
Оценка:
Здравствуйте, skodnik, Вы писали:
S>В книге приведен пример, к тором метод сервиса помечен атрибутом [OperationBehavior(TransactionScopeRequired = true)] — соответственно, все операции происходящие в этом методе — транзакция.
Быть может, это как-то связано с MTS?
Re[3]: WS & Transaction's
От: cvetkov  
Дата: 13.08.10 11:08
Оценка:
Здравствуйте, skodnik, Вы писали:

S>Здравствуйте, cvetkov, Вы писали:


C>>вы таки не поверите, но база данных знает что такое транзакция


S>Как мой Web-Service знает что в _методе_ используется именно _вооот-эта_ база данных?

если вы правильно используете веб сервер, то вы берете коннекцию к бд у него. т.е. он про нее знает.
... << RSDN@Home 1.2.0 alpha 4 rev. 1227>>
Re: WS & Transaction's
От: TK Лес кывт.рф
Дата: 13.08.10 11:55
Оценка:
Здравствуйте, skodnik, Вы писали:

S>Читаю книгу Стив Резник, Ричард Крейн, Крис Боуэн — Windows Communication Foundation for .NET Framework 3.5.

S>Немного не понял о транзакциях.
S>В книге приведен пример, к тором метод сервиса помечен атрибутом [OperationBehavior(TransactionScopeRequired = true)] — соответственно, все операции происходящие в этом методе — транзакция. Если метод завершится вызовом исключения, то состояние данных должно вернуться в исходное состояние — до выполнения этого метода. Внутри же этого метода вызывается две функции модифицирующие базу данных. Мне вот интересно WCF сам такой умный, что откатит состояние базы данных если будет исключение в методе? Просто об операции отката ничего не говорится. Как WCF знает что я в этом методе трогаю БД?

WCF предоставляет инфраструктуру. Можно сделать и собственный аналог OperationBehavior — создать транзакцию, установить ее как текущую и коммитить ее если не было исключения.

Что-бы автоматически закоммитить данные с OperationBehavior надо использовать свойство TransactionAutoComplete либо, использовать OperationContext.SetTransactionComplete
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: WS & Transaction's
От: Gremlin2 http://www.fb2library.net/
Дата: 13.08.10 11:59
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Здравствуйте, skodnik, Вы писали:

S>>В книге приведен пример, к тором метод сервиса помечен атрибутом [OperationBehavior(TransactionScopeRequired = true)] — соответственно, все операции происходящие в этом методе — транзакция.
MC>Быть может, это как-то связано с MTS?
А что есть MTS? Если вы имеете ввиду MSDTC, то да связано через TransactionScope.
Re[4]: WS & Transaction's
От: skodnik  
Дата: 13.08.10 12:06
Оценка:
Здравствуйте, cvetkov, Вы писали:

C>если вы правильно используете веб сервер, то вы берете коннекцию к бд у него. т.е. он про нее знает.


Никак не найду где же для сервиса настраивается Connection
Re[3]: WS & Transaction's
От: Mr.Cat  
Дата: 13.08.10 13:57
Оценка:
Здравствуйте, Gremlin2, Вы писали:
G>Если вы имеете ввиду MSDTC
Ага
Re[5]: WS & Transaction's
От: Mr.Cat  
Дата: 13.08.10 13:58
Оценка:
Здравствуйте, skodnik, Вы писали:
S>Никак не найду где же для сервиса настраивается Connection
Так вроде ado.net знает про transactionscope и "подхватывает" текущий. Не?
Re[6]: WS & Transaction's
От: skodnik  
Дата: 16.08.10 07:35
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Здравствуйте, skodnik, Вы писали:

S>>Никак не найду где же для сервиса настраивается Connection
MC>Так вроде ado.net знает про transactionscope и "подхватывает" текущий. Не?

"Вроде". А вот где бы почитать _основательно_ об этом механизме?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.