Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 25464|Ответ: 0

[Источник] .net/C# Распределённый TransactionScope

[Скопировать ссылку]
Опубликовано 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. Ты не учёл некоторые операции чтения в транзакции, да? Это лёгкая ошибка, когда вы зачисляете выбранную операцию в транзакцию.
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
(Это требуется как для WEB, так и для SQL-серверов)




3. Конфигурация MSSQL

Для подключения к серверам кликните правой кнопкой мыши — > свойства




4. Настройте хосты (настройте только WEB-сервер, если нет — также настройте его на SQL-сервере)

C:\Windows\System32\drivers\etc
Файл hosts, который открывается с помощью Блокнота
(Информация о SQL-сервере должна быть настроена в файле Hosts на WEB сервере)
(Если тест провалился, настройте информацию веб-сервера в файле Hosts на SQL-сервере)






Предыдущий:Внешние ссылки на посты на форумах Discuz X добавляют атрибут nofollow
Следующий:Функции, которые сохраняют два знака после запятой в C#, и как их использовать
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com