Freigeben über


Migre seu EnterpriseService (e outros assuntos)

Aguarde: esta semana teremos boas novas para quem está interessado em cloud computing e Azure! (não posso adiantar).

Enquanto isto, alguns tópicos de conversas com arquitetos em visitas e encontros...

1) Tem muita gente ainda usando COM+ com .Net através do uso de Enterprise Services. Quando pergunto por que não mudaram ainda para WCF + TransactionScope do .Net Framework,a resposta tem sido: silêncio. Simplesmente não conheciam.

Por que mudar? R.: porque alivia a distribuição/instalação de componentes e erros de operação. Componentes do Enterprise Services exigem instalação no GAC e no COM+. Além disto, por vezes a configuração pode ser mudada pelo operador através da console do COM+ e o operador pode acabar configurando uma operação composta (ACID) em duas operações distintas – o que pode causar sérios riscos de erros de consistência.

Como migrar? Usando a classe TransactionScope para definir o escopo da transação e o WCF para estabelecer a comunicação entre chamador e chamada.

Onde hospedar? R.: Hoje use o WAS ou o IIS. Amanhã use o AppFabric.

É simple usar o TransacionScope. Basta criar uma interface… e aqui vai um exemplo:

 [ServiceContract]
public interface INWService {
 [OperationContract]
  List<Customer> FindCustomerList(string companyName);
}

e depois criar dentro do método que implementa esta interface um escopo - segundo o padrão de código abaixo…

using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.Required)) {

try {

// chame seu código que deve estar neste escopo de transação

transaction.Complete();

} catch (Exception ex) {

// tratamento para erro

throw ex;

} finally {

// tratamento de finalização

}

}

Quanto ao WCF, basta usar o Visual Studio para criar um projeto WCF. O Rafael Godinho tem boas dicas no seu blog: https://blogs.msdn.com/rafaelgodinho/archive/tags/WCF/default.aspx

2) Tenho recebido perguntas sobre como usar Forms Authorization e Sessions dentro do Azure. Minhas dicas são:

  1. Para Forms Authentication o post https://blogs.msdn.com/jmeier/archive/2010/03/24/how-to-use-asp-net-forms-auth-with-sql-server.aspx do J.D . Meier;
  2. Para Sessions você pode usar o exemplo em https://azuresqlsession.codeplex.com/ ou o AspProvider Sample em https://code.msdn.microsoft.com/windowsazuresamples .

3) Tivemos bons debates no RAF (Regional Architect Forum) que aconteceu no escritório da Microsoft. Foi interessante ver a discussão sobre o perfil de atuação e conhecimento de um arquiteto. Arquitetos, segundo o palestrante (professor Becerra da USP), não só unem conhecimento sobre negócios, tecnologia e gerenciamento de time, mas, por terem um pensamento estratégico, têm um grande handcap grande para se tornarem um dia CIO’s. Os agilistas, que duvidam até da necessidade de arquitetos em projetos, se sentiram incomodados. Bom ter confrontos: deles entendemos as diferenças e costumam sair alguma luz.

Bom fim de semana.

Comments

  • Anonymous
    April 11, 2010
    The comment has been removed

  • Anonymous
    September 02, 2010
    A única coisa ruim dessa solução é a configuração do MSDTC pra aplicação rodar com sql server em um servidor diferente do servidor de aplicações. Ruim pq atrapalha um pouco o deploy. Isso por causa do uso do transaction scope.

  • Anonymous
    September 02, 2010
    Lobo, Três pontos:

  1. Quando você trabalha com SQL apenas, o .Net vai usar um light transaction e nem precisará do DTC. Outro ponto, se'não me engano, ao utilizar um único SQL, o lightTransaction usará o Begin Transaction do próprio SQL.
  2. É possível colocar o MSDTC na mesma máquina, se necessário.
  3. Mesmo no caso do COM+ nem sempre o melhor é ter o MSDTC na mesma máquina. Mas, concordo com você: transação distribuida é sempre um assunto mais complexo e que merece atenção especial. Abraços Otavio