Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 25464|Відповідь: 0

[Джерело] .net/C# Розподілений обсяг транзакцій

[Копіювати посилання]
Опубліковано 05.05.2018 10:53:17 | | | |
Цитуючи іншу іншу історію:
Під час фактичної розробки виконати подію, а потім викликати інший інтерфейс для вставки даних, якщо в логіці обробки є виняток, то раніше вставлені дані стануть сміттєвими даними,
Ми хочемо мати змогу визначити весь метод як транзакцію, а клас TransactionScope надає простий метод, який дозволяє вам не взаємодіяти безпосередньо з транзакцією.
позначити блок коду як учасник транзакції. Об'єкт TransactionScope створює транзакцію і встановлює транзакцію на властивість Current класу Transaction.

1. Переваги TransactionScope
1. Це зручніше у використанні. TransactionScope може реалізувати неявні транзакції, щоб ви могли писати код на рівні доступу до даних без розгляду транзакцій, але контролювати транзакції на бізнес-рівні.
2. Можна реалізувати розподілені транзакції, такі як крос-база даних або MSMQ.

2. Недоліки TransactionScope
1. Вартість і продуктивність не є високою. Наприклад, ви керуєте транзакціями бібліотеки лише в "Scope". Використання "TransactionScope" трохи марнотратне.
2. У звичайних випадках, якщо ви використовуєте "TransactionScope", потрібно налаштувати MSDTC, встановити міжмережевий екран і відкрити порт 139. Цей порт не можна змінити

3. Якщо потрібно використовувати розподілені транзакції, потрібно про це думати
1. Чи має ця операція бути частиною транзакції? Якщо цей крок не виконано або не пройде, чи варто відкотити всю транзакцію назад? Чи немає елегантних заходів компенсації чи стійкості до відмов?
2. Скільки балів включають розподілені транзакції? Потрібно мати велику низку операцій у реальному часі? Хіба не можна оптимізувати деякі бали за допомогою операцій сповіщення?
3. Після початку розподіленої транзакції ви виконували операції, незалежні від транзакцій, навіть якщо ці операції не були пов'язані з транзакцією? (наприклад, читання даних, обчислення, очікування на повернення повідомлення користувачем, очікування повернення виклику інших модулів тощо)
4. Ти не врахував деякі операції зчитування в транзакції, так? Це легка помилка, коли ви залучаєте select операцію до транзакції.
5. Деякі етапи вашої операції можна виконати після завершення всіх операцій. Такий тип роботи має очевидні характеристики сповіщення. Операції сповіщення кажуть: я даю вам повідомлення і гарантую, що воно дійде до вас;
Ви повинні прийняти це повідомлення і переконатися, що воно буде оброблено, але не обов'язково мати справу з цим одразу, як тільки я вас повідомлю. Цю операцію, очевидно, можна виконати з іншим завданням.

4. Звертайте увагу на наступні моменти при використанні розподілених транзакцій
1: Переконайтеся, що машина, яка бере участь у транзакції, увімкнула підтримку розподілених транзакцій.
2: Якщо на машині увімкнено фаєрвол, потрібно встановити процес msdtc як виняток.
3: Машина, що бере участь у транзакції, не може перетнути домен (якщо це крос-домен, Microsoft наразі не має точного рішення);
4: Використовуйте розподілені транзакції лише тоді, коли у вас кілька баз даних, якщо це одна й та сама база даних, найкраще використовувати SqlTransaction.
1. Спочатку додайте посилання System.Transactions (потрібно додати Net-асемблер)

Код на виклику 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, який відкривається за допомогою Notepad
(Інформація про SQL-сервер має бути налаштована у файлі Hosts на WEB сервері)
(Якщо тест не вдається, налаштуйте інформацію про веб-сервер у файлі Hosts на SQL-сервері)






Попередній:Зовнішні посилання на дописи форуму Discuz X додають атрибут nofollow
Наступний:Функції, які зберігають два десяткові знаки після десяткової крапки в C#, і як їх використовувати
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com