Цитирам ръководството на някой друг: В реалната разработка се изпълнява събитие и след това се извиква друг интерфейс за вмъкване на данни; ако има изключение в логиката на обработката, тогава предварително вмъкнатите данни ще станат нежелани данни, Това, което искаме, е да можем да дефинираме целия метод като транзакция, а класът TransactionScope предоставя прост метод, който ви позволява да не се налага да взаимодействате с самата транзакция. да маркира блок код като участващ в транзакция. Обектът TransactionScope създава транзакция и задава транзакцията на свойството Current на класа Transaction.
1. Предимства на TransactionScope 1. По-удобно е за използване. TransactionScope може да реализира имплицитни транзакции, така че да можете да пишете код на слоя за достъп до данни, без да обмисляте транзакции, но да контролирате транзакциите на бизнес нивото. 2. Могат да се реализират разпределени транзакции, като крос-база данни или MSMQ.
2. Недостатъци на TransactionScope 1. Разходите и представянето не са високи. Например, контролирате транзакциите на библиотека само в "Scope". Използването на "TransactionScope" е малко разхищаващо. 2. При нормални обстоятелства, докато използвате "TransactionScope", трябва да конфигурирате MSDTC, да инсталирате защитна стена и да отворите порт 139. Този порт не може да бъде сменен
3. Ако трябва да използвате разпределени транзакции, трябва да помислите за това 1. Трябва ли тази операция да присъства в транзакцията? Ако тази стъпка не бъде завършена или не се провали, струва ли си да върнете цялата транзакция назад? Няма ли елегантни мерки за компенсация или толерантност към грешки? 2. Колко точки включват разпределените транзакции? Трябва да има голяма поредица от операции в реално време? Не можеш ли да оптимизираш някои точки чрез операции за уведомяване? 3. След като инициирахте разпределена транзакция, извършихте ли операции, независими от транзакцията, въпреки че тези операции не бяха свързани с транзакцията? (например четене на данни, изчисляване, чакане потребителят да върне съобщение, чакане за връщане на повикване на други модули и др.) 4. Не си броил някои операции за четене в транзакцията, нали? Това е лесна грешка, когато включите селектирана операция в транзакцията. 5. Някои стъпки от вашата операция могат да бъдат изпълнени след като всички операции са завършени. Този тип операция има очевидни характеристики на известяване. Операциите по уведомяване казват: Аз ви давам известие и гарантирам, че то ще стигне до вас; Трябва да вземете това уведомление и да се уверите, че то е обработено, но не е нужно да се занимавате с него веднага щом ви уведомя. Тази операция очевидно може да се извърши с друга задача.
4. Обърнете внимание на следните точки при използване на разпределени транзакции 1: Уверете се, че машината, участваща в транзакцията, е активирала разпределена поддръжка на транзакции. 2: Ако машината има включена защитна стена, трябва да зададете msdtc процеса като изключение. 3: Машината, участваща в транзакцията, не може да премине през домейна (ако е между домейн, Microsoft в момента няма точно решение); 4: Използвайте разпределени транзакции само когато имате няколко бази данни, ако е една и съща база, най-добре е да използвате SqlTransaction. 1. Първо добавете референтния System.Transactions (трябва да добавите Net assembly)
Кодът на C# позива е следният:
Адресът на блоговете, които обясняват този разпределен клас транзакции, е много ясен:http://www.cnblogs.com/artech/archive/2010/01/31/1660356.html
2. Задайте конфигурацията на уеб сървъра и SQL сървърната среда
Контролен панел - > Системи и сигурност - > инструменти за управление - > Компонентни услуги (Това е необходимо както за WEB, така и за SQL сървъри)
Контролен панел - > Системи и сигурност - > Инструменти за управление - > Услуги
(Това е необходимо както за WEB, така и за SQL сървъри)
Контролен панел - > Система и сигурност - > Windows Firewall
(Това е необходимо както за WEB, така и за SQL сървъри)
3. MSSQL конфигурация
За сървърни връзки, кликнете с десен бутон - > свойства
4. Конфигурирайте хостове (конфигурирайте само WEB сървъра, ако не е, конфигурирайте го и на SQL сървъра)
C:\Windows\System32\drivers\etc hosts file, който се отваря с Notepad (Информацията за SQL сървъра трябва да бъде конфигурирана във файла Hosts на WEB сървъра) (Ако тестът не успее, конфигурирайте информацията на уеб сървъра във файла Hosts на SQL сървъра)
|