Translate this page now :



»Programação
»Programação.NET
»Banco de Dados
»Webdesign
»Office
» Certificações Microsoft 4
»Treinamentos4
»Programação 4
»Webdesign«
»Office & User Tips«
»Grupos de Usuários
»Células Acadêmicas«

Morcegando
Você já está cadastrado e participa do grupo de usuários de sua cidade ? Se não, comente o porque.
 
 
Faça um pequeno teste com 10 questões de VB
.:.
Teste seus conhecimentos em Visual Basic, SQL Server e ASP 3.0 com nossas provas on-line
.:.
Aprimore seus conhecimentos em programação com nosso treinamento on-line de lógica de programação
.:.
Veja nosso calendário de treinamentos
Gostou da Página?
Então

para um amigo!
 







Pesquisa personalizada
Pesquisar Dicas:

 






Particionamento no COM+ : Mantendo diferentes versões no mesmo servidor

O COM+ 1.5, nova versão do COM+ que está chegando junto com o Windows .NET Enterprise Server , está trazendo muitas novidades, mas sem dúvida uma das mais atraentes é o particionamento do COM+. De fato, tenho ouvido falar no particionamento do COM+ já há alguns anos, mas só agora ele vem a tona nesta nova versão do sistema operacional.

Para explicar adequadamente a importância do particionamento do COM+ o ideal é explicarmos um pequeno cenário de desenvolvimento.

Os desenvolvedores de uma aplicação em camadas precisam de um servidor que eles possam manipular, um servidor de desenvolvimento, onde possam inserir componentes recém criados para realizar testes do conjunto da aplicação.

Em uma 2a etapa do desenvolvimento é necessário um ambiente preparatório para a implantação do sistema, um ambiente onde o sistema esteja estável, seja implantado em conjunto, sem alterações de partes e possa ser testado pelos coordenadores de projeto, usuários e supervisores dos usuários. Este ambiente muitas vezes serve também para testes de peformance e stress e é conhecido como ambiente de qualidade, ou ambiente de homologação, ou simplesmente ambiente de testes, enfim, o nome pode variar de empresa para a empresa.

Por fim, após o sistema haver sido testado e aprovado ele é passado para seu ambiente definitivo, o ambiente de produção.

Assim temos o cenário dividido em 3 estágios : Desenvolvimento, qualidade e produção.

A coisa começa a complicar quando começamos a nos preocupar com o versionamento do sistema. Surgem momentos em que existe uma versão nova de alguns componentes sendo testada em qualidade, mas ao mesmo tempo pode surgir a necessidade de manutenção corretiva em alguns componentes de produção. Além disso, ao preparar a passagem de uma 2a versão para produção o ambiente de qualidade funciona como uma contingência em relação a 1a versão : Ele tem ela como que "empacotada", aprovada, se a 2a versão falhar recupera-se a 1a versão do ambiente de qualidade.

Mas ai vem o dilema : A 2a versão também tem que ser testada, consequentemente também tem que passar para o ambiente de qualidade, então como manter, no ambiente de qualidade, duas versões da mesma aplicação ?

Banco e site Web é relativamente fácil, mas os componentes, que se utilizam de registros no sistema operacional, até agora só podiam ser mantidos em uma versão por máquina, não poderiamos ter na mesma máquina duas versões do mesmo componente.

Esse é o grande problema que sempre causou complicações entre os ambientes de desenvolvimento, qualidade e produção das empresas. Isso até agora. Com o particionamento no COM+ muitos problemas serão resolvidos.

Resumindo a questão do particionamento : É a capacidade de mantermos versões diferentes de mesmos componentes na mesma máquina.

Nesse momento você deve ter se enchido de perguntas : Mas como podem haver duas versões se é necessário o registro dos componentes no sistema operacional ? Quando o componente for chamado, como se vai saber qual a versão que está sendo chamada ?

As respostas são bem simples : O COM+ intercepta as chamadas ao componente, então ele pode realmente decidir qual versão do componente chamar. E como ele decide isso ? De acordo com o usuário que está chamando. Configuramos diversas partições no COM+, uma fica sendo a default e para as demais indicamos quais usuários usuários irão ativa-las. Então quando um determinado usuário solicita um componente o COM+ verifica se ele está vinculado a alguma partição específica. Se estiver, o usuário verá os componentes desta partição, se não estiver, verá os componentes da partição default.

Vamos montar um pequeno exemplo para demonstrar como isso é possível. Vamos primeiro montar o componente, com o progID prjteste.clsteste. Podemos criar um único método para o componente :

Public Function testando(x As Integer) As Double
testando = x * 2
End Function

A questão é que precisamos compilar esse componente 2 vezes para termos 2 versões diferentes e fazermos o teste. Precisaremos marcar a compatibilidade binária entre as duas DLLs que iremos gerar, para garantir que a aplicação funcione. A única alteração que faremos no método entre as compilações será mudar a multiplicação, o que nos permitirá ver o resultado do particionamento. Veja :

Public Function testando(x As Integer) As Double
testando = x * 3
End Function


Vamos fazer os testes com um client VB, apenas por questão de exemplo. Uma textbox e um botão servirão perfeitamente, Veja o código do botão :

Private Sub Command1_Click()
Dim x As New clsTeste
MsgBox x.testando(Text1.Text)
End Sub


Montaremos o client usando early binding. Não faz diferença de fato para o particionamento. Vamos compila-lo e transforma-lo em um executável.

Provavelmente você estará conectado na máquina como administrator, precisará então de um novo usuário na máquina para fazer os testes. Clicando com o botão direito em My Computer, clique em Manage, Local users and groups e crie um novo usuário. Entre em seguida nas propriedades do usuário e o defina como membro do grupo administrators.

Vamos então fazer a configuração do COM+. Por default o uso de partições encontra-se desabilitado no COM+. Precisamos então habilita-lo, entrando nas propriedades do My Computer (agora dentro de component services), clicando na aba options e marcando a opção enable partitions e check local store when choosing partition for user.

A partir dai passamos a ver duas novas pastas : COM+ Partitions e COM+ Partitions Users . Abrindo a pasta COM+ Partitions veremos a Base Application Partition, ou seja, a partição default. Essa partição sempre está lá, podemos ve-la desta forma ou não dependendo do uso de partições estar ou não habilitado.

Vamos criar um pacote na partição default e inserir neste pacote uma das versões de nosso componente, a mais antiga. A criação de pacotes no COM+ não deve ser novidade para vocês.

Em seguida vamos criar uma nova partição, clicando com o botão direito na pasta COM+ Partitions e selecionando a instrução New->Partition. Abre-se um wizard no qual a primeira pergunta é se queremos criar uma partição vazia ou importar uma partição exportada de outro servidor. Vamos criar uma partição vazia. Nos é perguntado em seguida o nome da partição e o wizard é finalizado. Temos, enfim, uma nova partição.

A partição já é criada com uma role chamada Activator e na verdade essa fica sendo a única role da partição. Todas as partições, com excessão da default, checam automaticamente as permissões do usuário para que ele possa ativar um componente dentro da partição, independentemente das permissões dos packages. Assim sendo todos os usuários que utilizarão esta partição deverão estar incluidos na role Activator. Podemos já incluir nela o usuário que você criou, clicando na pasta users e selecionando new->user.

Vamos criar nesta partição um novo package e inserir neste novo package a 2a versão de nosso componente. Temos então duas versões do mesmo componente instaladas na mesma máquina, precisamos agora definir quando cada uma será ativada.

Para isso selecionamos a pasta COM+ Partitions Users e, clicando com o botão direito, selecionamos a instrução new->user. Na tela que é exibida selecionamos na combobox da parte inferior uma partição e na parte de cima os usuários que utilizarão essa partição como partição padrão (no caso, selecione o usuário que você criou).

Está feito, podemos testar. Se você se logar como administrator e testar o executável ele gerará um resultado (multiplicação por 2). Se alterar o login, se logando como seu novo usuário, o resultado será diferente (multiplicação por 3), demonstrando assim o funcionamento das partições.

A esta altura você talvez esteja com uma ponta de desapontamento : Ter que configurar usuário por usuário no COM+ !

Existem duas ressalvas importantes quanto a isso : primeiramente em todos os momentos que citei a identificação de um usuário poderiamos também estar trabalhando com grupos, quer sejam grupos locais ou grupos no active directory.

Mas o mais importante é que normalmente as aplicações que se beneficiarão do recurso das partições são aplicações Web. Aplicações Web utilizam usuários anônimos em seus sites. Então a questão é configurar o usuário anônimo do site das aplicações, cada aplicação fica sendo identificada por um usuário diferente, e até mesmo versões da aplicação identificadas por usuários diferentes. Assim podemos manter duas versões da mesma aplicação na mesma máquina, mantendo duas versões dos mesmos componentes, diferenciando o componente que será acessado a partir do usuário anônimo da aplicação web.

Sem dúvida, as partições do COM+ são um excelente recurso no gerenciamento dos ambientes de desenvolvimento e uma das mais importantes evoluções do COM+ (pelo menos em minha opinião).

Dennes Torres
MCSD,MCSE,MCDBA



� Búfalo Informática, Treinamento e Consultoria - Rua Álvaro Alvim, 37 Sala 920 - Cinelândia - Rio de Janeiro / RJ
Tel.: (21)2262-1368 (21) 9240-5134 (21) 9240-7281 e-Mail:
contato@bufaloinfo.com.br