Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 25464|Resposta: 0

[Fonte] .net/C# Distributed TransactionScope

[Copiar link]
Publicado em 05/05/2018 10:53:17 | | | |
Para citar o guia de outra pessoa:
No trabalho de desenvolvimento real, executa um evento e então chama outra interface para inserir dados; se houver uma exceção na lógica de processamento, então os dados previamente inseridos se tornam dados lixo,
O que queremos é poder definir todo o método como uma transação, e a classe TransactionScope oferece um método simples que permite que você não precise interagir com a transação em si.
marcar um bloco de código como participando de uma transação. O objeto TransactionScope cria uma transação e define a transação para a propriedade Current da classe Transaction.

1. Vantagens do TransactionScope
1. É mais conveniente de usar. O TransactionScope pode implementar transações implícitas, de modo que você pode escrever código da camada de acesso a dados sem considerar transações, mas controlar transações na camada de negócio.
2. Transações distribuídas podem ser implementadas, como cross-database ou MSMQ.

2. Desvantagens do TransactionScope
1. O custo-desempenho não é alto. Por exemplo, você só controla as transações de uma biblioteca em "Escopo". Usar o "TransactionScope" é um pouco desperdício.
2. Em circunstâncias normais, desde que você use o "TransactionScope", é necessário configurar o MSDTC, instalar um firewall e abrir a porta 139. Essa versão não pode ser alterada

3. Se você precisa usar transações distribuídas, precisa pensar nisso
1. Essa operação precisa estar na transação? Se essa etapa não for concluída ou falhar, vale a pena reverter toda a transação? Não existe uma compensação elegante ou medidas de tolerância a falhas?
2. Quantos pontos envolvem as transações distribuídas? Deve ter uma grande sequência de operações em tempo real? Você não pode simplificar alguns pontos por meio de operações de notificação?
3. Após iniciar uma transação distribuída, você realizou operações independentes da transação, mesmo que essas operações não fossem relacionadas à transação? (por exemplo, ler dados, calcular, esperar o retorno de uma mensagem pelo usuário, esperar o retorno de chamada de outros módulos, etc.)
4. Você não contou algumas operações de leitura na transação, contou? Esse é um erro fácil de cometer quando você registra uma operação de seleção na transação.
5. Algumas etapas da sua operação podem ser executadas após a conclusão de todas as operações. Esse tipo de operação possui características óbvias de notificação. As operações de notificação dizem: eu te dou uma notificação, e garanto que ela chegará até você;
Você deve receber este aviso e garantir que ele seja processado, mas não precisa lidar com isso assim que eu te notificar. Essa operação obviamente pode ser feita com outra tarefa.

4. Preste atenção aos seguintes pontos ao usar transações distribuídas
1: Certifique-se de que a máquina participante da transação tenha habilitado o suporte distribuído de transações.
2: Se a máquina tiver o firewall ativado, você precisa definir o processo MSDTC como exceção.
3: A máquina que participa da transação não pode cruzar o domínio (se for multidomínio, a Microsoft não possui uma solução exata no momento);
4: Use transações distribuídas apenas quando você tiver múltiplos bancos de dados; se for o mesmo banco de dados, é melhor usar o SqlTransaction.
1. Adicionar a referência de System.Transactions primeiro (você precisa adicionar a montagem Net)

O código na chamada C# é o seguinte:

O endereço dos blogs que explica essa classe de transação distribuída é muito claro:http://www.cnblogs.com/artech/archive/2010/01/31/1660356.html

2. Definir o servidor web e a configuração do ambiente do servidor SQL

Painel de Controle - Sistemas > e Segurança - Ferramentas de Gerenciamento de > - > Serviços de Componentes
(Isso é necessário tanto para servidores WEB quanto SQL)





Painel de Controle - Sistemas > e Segurança - Ferramentas de Gerenciamento de > - Serviços >
(Isso é necessário tanto para servidores WEB quanto SQL)




Painel de Controle - > Sistema & Segurança - > Firewall do Windows
(Isso é necessário tanto para servidores WEB quanto SQL)




3. Configuração do MSSQL

Para conexões de servidor, clique com o botão direito - > propriedades




4. Configurar Hosts (configurar apenas o servidor WEB, se não configurar, também configure-o no servidor SQL)

C:\Windows\System32\drivers\etc
hosts, que é aberto com o Bloco de Notas
(As informações do servidor SQL precisam ser configuradas no arquivo Hosts do servidor WEB)
(Se o teste falhar, configure as informações do servidor web no arquivo Hosts no servidor SQL)






Anterior:Links externos para posts do fórum Discuz X adicionam o atributo nofollow
Próximo:Funções que mantêm dois lugares decimais após o ponto decimal em C# e como usá-las
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com