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)
|