NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalArtigos › ASP 3.0 › Capítulo 12 : 05
Quer receber novidades e e-books gratuitos?
« Lição anterior Δ Página principal ¤ Capítulos Próxima lição »
SITES DINÂMICOS COM ASP 3.0 - CURSO COMPLETO
Autor: Júlio Battisti


Promoção: Livro Windows Server 2012 R2 e Active Directory - Curso Completo, 2100 Páginas. Tudo para você se tornar um administrador de redes altamente qualificado para o mercado de trabalho e levar a sua carreira para o próximo nível!

Promoção: Livro Windows Server 2012 R2 e Active Directory

Curso Completo, 2100 páginas.

Tudo para você se tornar um administrador de redes altamente qualificado para o mercado de trabalho e levar a sua carreira para o próximo nível!

MAIS DETALHES | COMPRAR ESTE LIVRO


Lição 094 - Capítulo 12 - O conceito de Transações e a utilização de Transações em páginas ASP

Neste tópico teremos uma introdução ao conceito de Transação bem como sobre a utilização de transações em páginas ASP.

O conceito de Transação.

Na era da Internet e do Comércio eletrônico temos questões bastante complexas a serem tratadas no desenvolvimento de aplicações Web. Uma destas questões é sobre a integridade das Bases de dados. Existem determinadas operações que envolvem entrada e atualização de informações em diversas tabelas ou até mesmo em diversos Bancos de dados.

Para que possamos entender exatamente o conceito de transação, vamos fazer uso de um exemplo clássico: “O usuário que utiliza o site do seu Banco na Internet para fazer uma transferência entre contas correntes.”

Para que a transferência ocorra com sucesso, as seguintes ações devem ser executadas:

  • Debitar da conta do usuário o valor a ser transferido.
  • Creditar o valor que está sendo transferido na conta do destinatário.

Estas duas operações devem ser finalizadas com sucesso e de maneira única ou seja: “Ou as duas operações são executadas com sucesso ou nenhuma delas”. Por exemplo se a operação de debitar da conta do usuário aconteceu com sucesso e na hora de creditar a conta do destinatário houve algum problema, a operação de débito da conta do usuário deve ser revertida, ou seja, a conta do usuário deve ser creditada do valor anteriormente debitado. Neste caso a operação falha como um todo e as duas contas continuam com o saldo que tinham antes da operação.

Este exemplo serve para que possamos definir exatamente o que é uma transação:

“Uma transação é um conjunto de uma ou mais operações que devem acontecer como um todo, ou seja, ou todas as operações são realizadas com sucesso ou nenhuma das operações é realizada. Se ocorrer algum problema depois que algumas operações já foram efetuadas, as operações que já foram efetuadas deverão ser revertidas, de tal maneira que a situação dos dados retorne ao seu estado original antes das modificações efetuadas pela transação.”

A medida que as aplicações tornam-se mais e mais complexas, a utilização de Transações é um requisito obrigatório.

Durante algum tempo, o próprio desenvolvedor precisou codificar a funcionalidade de transações, de tal maneira que a integridade dos dados fosse garantida. Hoje a funcionalidade de transações está embutida nos chamados Servidores de aplicação. Com isso o desenvolvedor não precisa escrever o código para transações, ao invés disso podem ser utilizadas as funcionalidades oferecidas pelo Servidor de aplicação. No caso do IIS 5.0 no Windows 2000, podemos utilizar as funcionalidades do Microsoft Transaction Services. No Windows NT 4.0 com IIS 4.0 nos tínhamos o Microsoft Transaction Server, o qual fazia parte do pacote de Software conhecido como Option Pack 4.0.

Uma transação deve apresentar as características conhecidas como ACID, onde temos o seguinte:

A - Atomicidade

C  - Consistência

I   - Isolamento

D - Durabilidade

  1. Atomicidade: Esta propriedade define que a transação deve acontecer como um todo, ou seja, todas as ações embutidas na transação devem ocorrer com sucesso ou falhar como um todo. Se algum erro acontecer, o sistema deve retornar ao seu estado anterior à transação.
  2. Consistência: Esta propriedade garante que ao final da transação o sistema estará em um estado consistente. Se todas as ações da transação forem executadas com sucesso, as alterações serão salvas no Banco de dados e o sistema estará disponível para uso. Se ocorrer algum problema as alterações serão desfeitas e o sistema também estará disponível para uso.
  3. Isolamento: Esta propriedade muitas vezes é conhecida como Serialização. Cada transação é executada como se não houvesse outras transações. Isso é feito para que quando a transação estiver executando a mesma não acesse dados inconsistentes, isto é, dados que estão sendo alterados por outra transação. Com isso é garantido que o sistema estará em um estado consistente e pronto para ser utilizado ao final de cada transação.
  4. Durabilidade: Este princípio garante que uma vez completada a transação, as alterações que a mesma efetuou serão permanentemente gravadas no Banco de dados, mesmo que aconteça alguma falha no sistema. No exemplo da transferência entre contas, temos que garantir que o valor será realmente debitado da conta do usuário e creditado na conta do destinatário.

Colocando uma página ASP no contexto de uma transação.

Podemos definir que uma página ASP deve ocorrer no contexto de uma transação. Para isto podemos colocar a seguinte diretiva na primeira linha de código da página:

<%@ TRANSACTION =required %>

Usando os métodos Server.Transfer e Server.Execute, uma transação pode ocupar várias páginas ASP. Se um script contiver a diretiva @TRANSACTION, com o valor especificado como Required (Necessário), e o script for chamado pelo método Server.Transfer ou Server.Execute, ele continuará a transação do arquivo .asp que chama, caso esse arquivo tenha sido transacionado. Se o arquivo .asp que chama não tiver sido transacionado, o arquivo .asp chamado criará automaticamente uma nova transação.

Por exemplo, o script a seguir inicia uma transação:

<%@ TRANSACTION=Required %>

<HTML>

<BODY>

<%

  .

  'End transaction.

  Server.Transfer("/Capitulo10/segunda.asp")

%>

No entanto, o script abaixo chama um outro script que também inicializa uma transação:

<%@ TRANSACTION=Required %>

<%

  'Instancia um componente do Microsoft Transaction Services.

  Set objVendas = Server.CreateObject("VendasTransacted.Complete")

  .

  .

  .

%>

No entanto, a interação entre os dois scripts constituiria somente uma transação única.

Estabelecendo um script transacional

Quando você declarar uma página como sendo transacional, quaisquer comandos de script e objetos utilizados na página serão executados no mesmo contexto de transação. Os Serviços de componente controlam os detalhes da criação da transação e determinam se a transação foi bem-sucedida (confirma) ou falhou (anula). Para declarar uma página transacional, adicione a diretiva

@TRANSACTION ao topo da página:

<%@ TRANSACTION = valor %>

Onde o parâmetro “valor” pode assumir um dos seguintes valores:

Valor              Descrição

Required            O Script inicia uma nova transação.

Requires_New        O Script inicia uma nova transação.

Supported           O Script não inicia uma nova transação.

Not_Supported       O Script não inicia uma nova transação.

A diretiva @TRANSACTION deverá estar na primeira linha da página; caso contrário, será gerado um erro. Você deve adicionar a diretiva a cada página a ser executada em uma transação. A transação atual é finalizada quando o processamento do script termina.

A maioria dos aplicativos requer o contexto de transação somente para determinadas operações. Por exemplo, o site de uma companhia aérea pode usar scripts transacionais para operações de compra de passagem e reserva de assento. Todos os demais scripts podem ser executados de maneira segura sem um contexto de transação.

IMPORTANTE: Visto que as transações devem ser utilizadas apenas para páginas que necessitam de processamento de transação, você não pode declarar o arquivo Global.asa de um aplicativo como transacional.

Se uma transação for anulada, os Serviços de componente (COM+) reverterão quaisquer alterações efetuadas nos recursos que oferecem suporte a transações. No momento, somente os servidores de banco de dados dão suporte integral a transações, pois esses dados são os mais importantes para os aplicativos de empresa. Os Serviços de componente não revertem alterações efetuadas em um disco rígido, em uma sessão ASP e em variáveis ou coleções de aplicativos. No entanto, você pode gravar scripts que restauram variáveis e coleções através da gravação de eventos de transação, conforme descrito mais adiante neste tópico. Seu script também poderá confirmar ou anular explicitamente uma transação em caso de falha de uma operação como, por exemplo, a gravação de dados em um arquivo.

Restabelecendo ou abortando um script

Como os Serviços de componente controlam o processamento de transações, eles determinam se uma transação foi concluída com êxito ou se falhou. Um script pode declarar explicitamente que está anulando uma transação através da chamada de ObjectContext.SetAbort. Por exemplo, o seu script poderá anular uma transação se receber um erro de um componente, se uma regra comercial for violada (por exemplo, se o saldo da conta ficar negativo) ou se uma operação não transacional, como a leitura ou gravação de um arquivo, falhar.

IMPORTANTE; A transação também será anulada se a página exceder o tempo limite antes da conclusão da transação.

Gravando eventos de transação

O próprio script não pode determinar se uma transação obteve êxito ou falhou. No entanto, você pode gravar eventos que serão chamados quando a transação for confirmada ou anulada. Por exemplo, suponha que você tenha um script que efetua créditos em uma conta bancária e deseje retornar páginas diferentes ao usuário, dependendo do status da transação. Você pode usar os eventos OnTransactionCommit e OnTransactionAbort para gravar diferentes respostas para o usuário.

Observe o exemplo a seguir, retirado da documentação do IIS 5.0. Neste exemplo estamos utilizando um componente chamado MyExample.BankComponent. Este é um componente que foi registrado e pode ser gerenciado através do Microsoft Transaction Services. Existe uma infinidade de componentes comerciais que podem ser adquiridos e instalados de tal forma que os mesmos possam ser utilizados em nossas páginas ASP.

<%@ TRANSACTION=Required %>

<%

      Response.Buffer = True

%>

<HTML>

<BODY>

<H1>Bem-vindo ao serviço bancário on-line</H1>

  <%

        Set BankAction = Server.CreateObject("MyExample.BankComponent")

        BankAction.Deposit(Request("AcctNum"))

  %>

  <P>Obrigado.  A sua transação está sendo processada.</P>

  </BODY>

</HTML>

<%

      'Mostra esta página em caso de sucesso da transação.

      Sub OnTransactionCommit()

%>

<HTML>

<BODY>

 Obrigada.  A sua conta foi creditada.

</BODY>

</HTML>

<%

  Response.Flush()

  End Sub

%>

<%

  'Mostra esta página se a transação falhar.

      Sub OnTransactionAbort()

      Response.Clear()

%>

<HTML>

 <BODY>

Não foi possível concluir a transação.

</BODY>

</HTML>

<%

     Response.Flush()

      End Sub

%>

Registrando um componente no Gerenciador de serviços de componente

Para participar de uma transação, um componente deve estar registrado em um aplicativo COM+ e deve estar configurado para requerer uma transação. Por exemplo, se o seu script processar pedidos chamando um componente que atualiza um banco de dados de inventário e um componente que atualiza um banco de dados de pagamento, você desejará que os dois componentes sejam executados em um contexto de transação. Os Serviços de componente garantem que, se um dos componentes falhar, o pedido inteiro será revertido e nenhum banco de dados será atualizado. Alguns componentes não exigem transações; por exemplo, o componente Ad Rotator não precisa de transações.

Utilize o Gerenciador de serviços de componente (Iniciar -> Programas -> Ferramentas administrativas -> Serviços de componentes), para registrar e configurar um componente transacional. Os componentes devem ser registrados em um aplicativo COM+. Não coloque os seus componentes no aplicativo COM+ em processo do IIS; em vez disso, crie o seu próprio aplicativo COM+. Normalmente, você deve colocar todos os seus componentes em um aplicativo de biblioteca. Os componentes de aplicativos de biblioteca podem ser usados por vários aplicativos ASP e são executados no processo do aplicativo ASP.

Você também pode registrar componentes transacionais em um aplicativo do servidor, um aplicativo COM+ que sempre é executado em um processo separado no servidor. Utilize os aplicativos do servidor para os componentes transacionais, a fim de utilizar segurança baseada em função ou para que o acesso aos componentes seja possível a partir de aplicativos em computadores remotos.

Para que você possa usar o Gerenciador de serviços de componente, é necessário que os Serviços de componente estejam instalados.

Para acessar o Serviço de componentes faça o seguinte:

1.Faça o logon com permissões de administrador.

2.Selecione Iniciar -> Programas ->Ferramentas Administrativas -> Serviços de componentes.

3.Surge o Snap-in indicado na Figura 12.4.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 12.4 O Snap-in para gerenciamento do Serviço de componentes.

Dê um clique no sinal de + ao lado de Serviços de componente.

Nas opções que surgem dê um clique no sinal de + ao lado de Computadores.

Nas opções que surgem dê um clique no sinal de + ao lado de Meu computador.

Nas opções que surgem dê um clique no sinal de + ao lado de Aplicativos do COM+.

Surge a janela indicada na Figura 12.5

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 12.5 Os componentes COM+ disponíveis neste computador.

9.Para instalar um novo componente COM+, clique com o botão direito na opção Aplicativos do COM+, aponte para a opção Novo e dê um clique sobre Aplicativo.

10.          Será aberto o “Assistente de instalação de Aplicativos COM”, conforme indicado na Figura 12.6.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 12.6 O assistente para Instalação de aplicativos COM.

11.          Agora é só seguir os passos do assistente.

Para maiores informações sobre a instalação de Aplicativos e componentes COM, consulte a ajuda do Windows 2000.

Escopo de Objeto

Normalmente, você não deve armazenar objetos criados a partir de um componente do COM nos objetos ASP Application ou Session. Os objetos COM serão desativados quando a transação for concluída. Como os objetos Session e Application se destinam a instâncias de objeto que podem ser utilizadas em múltiplas páginas ASP, você não deverá utilizá-los para manter objetos que serão liberados ao final de uma transação.

Um script ASP é a raiz, ou o início, de uma transação declarada. Qualquer objeto COM utilizado em uma página ASP transacional será considerado parte da transação. Quando a transação estiver concluída, os objetos COM utilizados na página serão desativados, incluindo objetos armazenados no objeto Session ou Application. Tentativas posteriores de chamar o objeto com o escopo Session ou Application de outra página transacional falharão.

Colocando transações em fila

Atualizações em um banco de dados de um servidor remoto podem atrasar ou anular a conclusão de uma transação devido a atrasos ou falhas na rede. Visto que todas as partes de uma transação devem ser confirmadas, o aplicativo poderá ficar aguardando a mensagem de confirmação ou anulação do servidor remoto, ou poderá anular uma transação porque a atualização do banco de dados não pôde ser enviada dentro do tempo de TimeOut.

No caso de atualizações que devem ser concluídas simultaneamente, é aconselhável anular ou mesmo atrasar a conclusão da transação até que todos os participantes da transação possam ser confirmados. Por exemplo, um aplicativo de compra de passagens de uma companhia aérea deve concluir simultaneamente o débito na conta corrente do cliente e o crédito na conta corrente da companhia aérea. Caso uma atualização seja essencial para uma transação, mas possa ocorrer depois das outras atualizações, talvez seja preferível não fazer o cliente aguardar a conclusão da atualização. Por exemplo, uma transação para solicitar uma passagem aérea também poderia enviar uma solicitação de refeição especial a um fornecedor de serviços alimentícios ou atualizar a milhagem do cliente. Essas atividades devem ser concluídas, mas isso poderá ser feito posteriormente.

O enfileiramento de mensagens permite que você agrupe uma atualização ou um conjunto de atualizações em uma mensagem transacional, que é enviada a um servidor remoto. Garante que as atualizações sejam enviadas ao servidor remoto, mesmo que a rede não esteja disponível no momento. O seu aplicativo receberá uma mensagem de confirmação e poderá continuar a transação. Para o enfileiramento de mensagens podemos utilizar o Microsoft Queue Server.

Para maiores detalhes sobre o Microsoft Queue Server consulte a ajudo do Windows 2000 ou o site da Microsoft (www.microsoft.com).


Promoção: Livro Windows Server 2012 R2 e Active Directory - Curso Completo, 2100 Páginas. Tudo para você se tornar um administrador de redes altamente qualificado para o mercado de trabalho e levar a sua carreira para o próximo nível!

Promoção: Livro Windows Server 2012 R2 e Active Directory

Curso Completo, 2100 páginas.

Tudo para você se tornar um administrador de redes altamente qualificado para o mercado de trabalho e levar a sua carreira para o próximo nível!

MAIS DETALHES | COMPRAR ESTE LIVRO


« Lição anterior Δ Página principal ¤ Capítulos Próxima lição »
Quer receber novidades e e-books gratuitos?

Cursos Online

  • Banco de Dados
  • Carreira
  • Criação/Web
  • Excel/Projetos
  • Formação
  • + Todas as categorias
  • Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

    Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

    Todos os direitos reservados, Júlio Battisti 2001-2019 ®

    [LIVRO]: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2010 - PASSO-A-PASSO

    APRENDA COM JULIO BATTISTI - 1124 PÁGINAS: CLIQUE AQUI