Cenário:
- Imaginem o seguinte cenário: O sistema precisa ter alta
disponibilidade, performance, gerenciamento de estado em memória e
lidar com algoritmos de cálculos a todo tempo. O sistema tem uma grade
de inicio e fim para funcionamento durante o dia e os clientes se
conectam à ele sob demanda.
Arquitetura:
- * Núcleo (C#), WCF, Modelagagem DDD, Windows services e MSMQ para
persistência assincrona no SQL.
- Servidores WinServer2003 (64Bits), 8 processadores, 32GB Ram
(inicial - porém expansivel para 32 processadores e mais alguns Gigas
de RAM)
Plataforma:
- VStudio 2008, C#, SQL Server 2005
A questões são?
1 - O .Net, especificamente o CLR suporta uma arquitetura como essa?
2 - Será possível definir um arquitetura em C# que surporte uma
"camada de ** prevelancia"?
3 - É possível controlar o GC para que ele não afete o gerenciamento
de estado dos objetos na memoria?
4 - Como o CLR e o Windows se comportariam num cenário multi-
processado?
* Os núcleos podem ser "levantados" em memória sob demanda.
**Prevalencia nesse caso, não siginifica ter um sistema 100% OO e sem
o banco de dados, mas sim o conceito da prevalencia para o
gerenciamento do estado em memoria dos objetos e o MSMQ para
persistencia assync no SQL Server!
Pessoal, a principio é isso, gostaria de compartilhar com voces essa
dúvida...o que posso dizer é que esse cenário existe....
[]s!
--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetar...@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.com
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
1 - O .Net, especificamente o CLR suporta uma arquitetura como essa?
Sim. A maior limita��o seria hardware, e n�o do CLR.
2 - Ser� poss�vel definir um arquitetura em C# que surporte uma "camada de
** prevelancia"?
Sim. Claro que voc�s j� devem saber dos riscos deste tipo de abordagem, mas
pelo cen�rio provavelmente n�o h� outra sa�da.
3 - � poss�vel controlar o GC para que ele n�o afete o gerenciamento de
estado dos objetos na memoria?
Qual � sua necessidade para esta quest�o? O GC altera o estado daqueles
objetos que n�o ser�o mais utilizados, marcando-os para "descarte" posterior
ou movendo-os para uma outra gera��o. J� me adiantando: sim, � poss�vel
evitar por mais tempo o deslocamento entre as gera��es, o que poder� te
auxiliar na performance caso suas necessidades cheguem a este n�vel (o que
eu acho pouco provavel) - neste ponto o risco seria maior que o benef�cio
(talvez). Controlar qualquer ponto do GC pode ser a morte para qualquer tipo
de aplica��o, portanto seria muito interessante saber ao m�ximo seu ponto de
vista para esta quest�o.
4 - Como o CLR e o Windows se comportariam num cen�rio multi- processado?
Sim, basta voc� utilizar os recursos que permitem esta utiliza��o, como
Paralelismo
(http://www.msteched.com/online/view.aspx?tid=40858c4c-9624-4912-8b6c-f6b85db9bf7b)
Kemps,
1. Mais de um servidor? Voc�s j� pensaram na solu��o da aplica��o para este
cen�rio?
--------------------------------------------------
From: "Kemps Almeida Vieira" <kemps....@gmail.com>
Sent: Tuesday, January 26, 2010 9:56 PM
To: ".Net Architects" <dotnetar...@googlegroups.com>
Subject: [dotnetarchitects] Maturidade CLR .Net x Arquitetura com camada de
prevalencia
> Boa noite pessoal, gostaria de criar um nova "Thread" sobre um assunto
> que ultimamente tem me deixado um pouco em d�vida sobre o n�vel de
> maturidade da plataforma .Net.
> Serei simples e breve:
>
> Cen�rio:
> - Imaginem o seguinte cen�rio: O sistema precisa ter alta
> disponibilidade, performance, gerenciamento de estado em mem�ria e
> lidar com algoritmos de c�lculos a todo tempo. O sistema tem uma grade
> de inicio e fim para funcionamento durante o dia e os clientes se
> conectam � ele sob demanda.
> Arquitetura:
> - * N�cleo (C#), WCF, Modelagagem DDD, Windows services e MSMQ para
> persist�ncia assincrona no SQL.
> - Servidores WinServer2003 (64Bits), 8 processadores, 32GB Ram
> (inicial - por�m expansivel para 32 processadores e mais alguns Gigas
> de RAM)
> Plataforma:
> - VStudio 2008, C#, SQL Server 2005
>
> A quest�es s�o?
> 1 - O .Net, especificamente o CLR suporta uma arquitetura como essa?
> 2 - Ser� poss�vel definir um arquitetura em C# que surporte uma
> "camada de ** prevelancia"?
> 3 - � poss�vel controlar o GC para que ele n�o afete o gerenciamento
> de estado dos objetos na memoria?
> 4 - Como o CLR e o Windows se comportariam num cen�rio multi-
> processado?
>
> * Os n�cleos podem ser "levantados" em mem�ria sob demanda.
> **Prevalencia nesse caso, n�o siginifica ter um sistema 100% OO e sem
> o banco de dados, mas sim o conceito da prevalencia para o
> gerenciamento do estado em memoria dos objetos e o MSMQ para
> persistencia assync no SQL Server!
>
> Pessoal, a principio � isso, gostaria de compartilhar com voces essa
> d�vida...o que posso dizer � que esse cen�rio existe....
>
> []s!
>
> --
> Voc� recebeu esta mensagem porque faz parte do grupo .Net Architects
> hospedado no Google Groups.
> Para postar envie uma mensagem para dotnetar...@googlegroups.com
> Para sair do grupo envie uma mensagem para
> dotnetarchitec...@googlegroups.com
> Para mais op��es visite o grupo em
> http://groups.google.com/group/dotnetarchitects?hl=pt-br
Com relação ao GC, o meu ponto de vista seria, o sistema precisa estar
no "ar" durante a grade inicio e fim. Ao longo desse período,
provavelmente o sistema irá no banco uma única vez, no inicio da grade
pra obter os dados, e traz para a memória todos os objetos e
referências, gerencia essas referencias e faz as persistência assync
no SQ, ao longo do dia.
Uma vez feito isso, o sistema irá trabalhar nessa camada de
prevalencia controlando o estado dos objetos, porém, todavia, contudo
o GC por algum motivo marca alguma referência ao longo do dia para ser
descartada e num instante seguinte o sistema tenta obter a mesma
referência e recebe um NullReferenceException....
Suponhamos que isso aconteça esporadicamente, mas como controlar esse
cenário?
Qdo vc diz paralelismo, vc quer dizer o .net 4 ou o .Net parallel? Uma
vez que já se tem um ambiente paralelo de 8 processadores, mas o SW é
feito em .net 3.5 e não possue recursos de programação paralela!
O .net 4 nem foi lançado ainda, mas milhões de dolares já foram gastos
com SW e HW...e no olhos dos executivos é isso que importa, qual o meu
custo e qual o meu ROI?....
O fato é o seguinte, um cenário semelhante a este e uma arquitetura tb
semelhante a esta foram postas em "cheque". Um sistema projetado e
arquitetado junto com a MS está indo por agua abaixo devido à
problemas que o proprio time da MS e do .net framework não conseguiram
resolver. Um deles é esta questão do CG e outro é a questão de que o
aumento de HW o sistema ficou pior e mais lento. Tudo foi projeto e
arquitetado conforme as melhores práticas e o pior, com os próprios
arquitetos da MS.
Onde está o problema? O nível de maturidade nesse caso é do SW ou do
ser humano que estuda a tecnologia e projeta sistemas, sejam eles, um
simples CRUD ou um sistema de missão critica?
Até qdo iremos ficar ansiosos com as evoluções do .net? Agora em Abril
de 2010 o VS e o .net 4 serão lançados, provavelmente esse sistema que
irá por agua abaixo, não se beneficiará com essas evoluções, uma vez
que ele será substituido pela plataforma rival e open source...! Como
justificar aos executivos, que os milhoes de dolares serão recuperados
com o .net 4 e o Windows Server 2008!
Pessoal, desculpem o desabafo...eu ainda acredito na plataforma .net!
[]s!
On 27 jan, 10:13, André Nobre <an...@andrenobre.com.br> wrote:
> Ol Kemps,
>
> 1 - O .Net, especificamente o CLR suporta uma arquitetura como essa?
> Sim. A maior limita o seria hardware, e n o do CLR.
>
> 2 - Ser poss vel definir um arquitetura em C# que surporte uma "camada de
> ** prevelancia"?
> Sim. Claro que voc s j devem saber dos riscos deste tipo de abordagem, mas
> pelo cen rio provavelmente n o h outra sa da.
>
> 3 - poss vel controlar o GC para que ele n o afete o gerenciamento de
> estado dos objetos na memoria?
> Qual sua necessidade para esta quest o? O GC altera o estado daqueles
> objetos que n o ser o mais utilizados, marcando-os para "descarte" posterior
> ou movendo-os para uma outra gera o. J me adiantando: sim, poss vel
> evitar por mais tempo o deslocamento entre as gera es, o que poder te
> auxiliar na performance caso suas necessidades cheguem a este n vel (o que
> eu acho pouco provavel) - neste ponto o risco seria maior que o benef cio
> (talvez). Controlar qualquer ponto do GC pode ser a morte para qualquer tipo
> de aplica o, portanto seria muito interessante saber ao m ximo seu ponto de
> vista para esta quest o.
>
> 4 - Como o CLR e o Windows se comportariam num cen rio multi- processado?
> Sim, basta voc utilizar os recursos que permitem esta utiliza o, como
> Paralelismo
> (http://www.msteched.com/online/view.aspx?tid=40858c4c-9624-4912-8b6c-...)
>
> Kemps,
> 1. Mais de um servidor? Voc s j pensaram na solu o da aplica o para este
> cen rio?
>
> --------------------------------------------------
> From: "Kemps Almeida Vieira" <kemps.vie...@gmail.com>
> >http://groups.google.com/group/dotnetarchitects?hl=pt-br- Ocultar texto das mensagens anteriores -
>
> - Mostrar texto das mensagens anteriores -
--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetar...@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.com
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
Tenho um cenário muito similar no setor bancário.
1 - O .Net, especificamente o CLR suporta uma arquitetura como essa?
Sim suporta. A disponbilidade não é garantida apenas com .net, é
necessário pensar em falhas de hardware. Para escalar a aplicação e
deixá-la disponível, utilizamos NLB(Network Load Balance) com 5
máquinas. Outro ponto, é definir o significado de alto desempenho para
você, ou seja, quais os requisitos de tempo de resposta em diversos
cenários, de preferência o pior, no caso de n usuários utilizando
concorrentemente. Vale uma POC para provar a arquitetura escolhida.
Com relação a estado em memória, caso quisesse usar um produto, havia
Velocity, que mudou para appFabric Caching(http://msdn.microsoft.com/
en-us/library/ee790942.aspx), que é o cache distribuido da Microsoft,
mas está em Beta. O legal destes framework é que o cache fica fora do
processo da sua aplicação e é comportalhido peloservidores do cluster,
fora que pode ser distribuído.
Outra opção, seria utilizar o mecanismo de caching do proprio Asp.net.
Terceira opção seria comprar um produto de cache. Há o NCache que é
muito bom(http://www.alachisoft.com/ncache/)
Como quarta opção, criar um cache custom, mas não sei se vale apena
devido ao tempo que será gasto, visto que há n variável relevantes na
construção de um cache corporativo.
2 - Será possível definir um arquitetura em C# que surporte uma
"camada de ** prevelancia"?
Não entendi este item.
3 - É possível controlar o GC para que ele não afete o gerenciamento
de estado dos objetos na memoria?
O GC mata objetos que não possuem nenhuma referencia. Se houver
qualquer tipo de referencia a eles, por exemplo, o objeto está em uma
lista, o gc não o afetará.
4 - Como o CLR e o Windows se comportariam num cenário multi-
processado?
http://blogs.msdn.com/pfxteam/
[]'s
Fabio Margarito
Ou como vc bem disse, pode ser feito em C++ ou Managed C++, só que vc
precisar dizer para o diretor que para ter um sistema com essa
tecnologia vc precisa elevar o custo do projeto para mais alguns
milhões, pois vc precisa do intelecto humano especialista em C++ e uma
equipe com mais de 50 pessoas.
O fato é que pelo menos (das que eu tenho conhecimento) duas grandes
empresas estão migrando seus sistemas de core business para plataforma
rival open source...devido ao fato do mundo Windows e Intel não
estarem suportando tais sistemas de missão critica com grandes volumes
de transações online.
Foi por isso que lancei esse post no fórum...não estou aqui para
criticar a plataforma .net, mas sim para compartilhar das dúvidas
sobre a tecnologia com que trabalhamos...posto isso, não preciso dar
nome aos bois, o fato é que isso aconteceu e está acontecendo....
[]s!
On 27 jan, 13:56, André Nobre <an...@andrenobre.com.br> wrote:
> Kemps,
> não podemos pensar somente na "limpeza" dos objetos. Como o processo é longo é possível que a "movimentação" de uma geração para outra também não seja desejável, visto que, por exemplo, transferir objetos da Gen 1 para Gen 2 é um processo caro, imagine então se envolvermos o LOH, etc. Como o pessoal já disse, basicamente o GC considera objetos para limpeza quando não existem raízes na aplicação que cheguem neste objeto (para não entrarmos tanto em detalhe). Mas se as operações do GC são um problema, é possível aumentar o tamanho dos Heaps, configurar corretamente a utilização da memória, a associação com as threads, etc, etc.
>
> O fato é o seguinte, um cenário semelhante a este e uma arquitetura tb semelhante a esta foram postas em "cheque". Um sistema projetado e arquitetado junto com a MS está indo por agua abaixo devido à problemas que o proprio time da MS e do .net framework não conseguiram resolver. Um deles é esta questão do CG e outro é a questão de que o aumento de HW o sistema ficou pior e mais lento. Tudo foi projeto e arquitetado conforme as melhores práticas e o pior, com os próprios arquitetos da MS.
>
> Se este cenário já existe seria interessante que você passasse os problemas encontrados com o GC, ou qualquer outro problema. Sinceramente, pela experiência que tenho com post-mortem debugging, windbg, etc, etc, acho dificil o GC ser um problema que impeça a aplicação de ser um sucesso. O que temos que ter em mente que trabalhar com hardware 64-bit em uma aplicação de altíssima performance e com estes detalhes realmente exige atenção em alguns aspectos da memória.
>
> Onde está o problema? O nível de maturidade nesse caso é do SW ou do
> ser humano que estuda a tecnologia e projeta sistemas, sejam eles, um
> simples CRUD ou um sistema de missão critica?
>
> Encontrar soluções que se encaixem perfeitamente com a necessidade de negócio não é simples. O conjunto software + conhecimento técnico faz o sucesso, e não somente um ou outro.
> Claro que não temos detalhes da sua solução ou da necessidade do cliente, mas talvez a plataforma .NET na versão utilizada não seja a melhor opção. Talvez um C++ ou até Managed C++, quem sabe?
>
> Abraços.
>
> From: Juan Pedro A. Lopes
> Sent: Wednesday, January 27, 2010 12:14 PM
> To: dotnetar...@googlegroups.com
> Subject: Re: [dotnetarchitects] Re: Maturidade CLR .Net x Arquitetura com camada de prevalencia
>
> O GC somente coleta objetos se nenhum item de pilha referenciar um certo objeto ou conjunto de objetos na heap, i.e. mesmo que exista uma thread em sleep, se no contexto dela existir algum registro de ativação que aponte pra um determinado objeto (com strong references), direta ou indiretamente, ele não é coletado.
>
> Até onde eu saiba, a finalização de um item é não-determinística, mas os critérios de não-seleção de um objeto são determinísticos. Ou seja, não existe isso de um objeto "sumir" da memória, a menos que ele seja uma WeakReference.
>
> Mais detalhes em:http://msdn.microsoft.com/en-us/library/0xy59wtx.aspx
>
> 2010/1/27 Kemps Almeida Vieira <kemps.vie...@gmail.com>
> > >http://groups.google.com/group/dotnetarchitects?hl=pt-br-Ocultar texto das mensagens anteriores -
> >
> > - Mostrar texto das mensagens anteriores -
>
> --
> Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
> Para postar envie uma mensagem para dotnetar...@googlegroups.com
> Para sair do grupo envie uma mensagem para
> ...
>
> mais »
Mas esse é ponto X da questão, concordo com todos os argumentos postos
Para sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.com
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
Com relação a suas perguntas, nao sei responder se fosse escrito em
outra plataforma teria outro resultado, seja para melhor ou pior, o
fato é que o recente e atual sistema será substituido por uma outra
plataforma, que possui benchmark comprovados de alto throughput em
ambientes multi-processados e com alta disponibilidade...
Eu acredito que pelo fato do Windows e o do proprio .net nao serem
open source, isso pode limitar o desenvolvimento de sistemas de alta
performance e disponibilidade. Acredito tb que a MS está ciente desses
problemas e que talvez seja necessário mudar um pouco paradigma de
desenvolvimento de sistemas de missão critica.
[]s!
On Jan 27, 6:25 pm, Eduardo Miranda <duda...@gmail.com> wrote:
> Kemps,
>
> Não há dúvidas que um projeto deste porte exige um conjunto de
> conhecimento + tecnologia. No entanto, acredito que a tecnologia para
> atender os seus requisitos já está disponível há algum tempo. Lógico que
> novas tecnologias surgem diariamente que visam facilitar a implementação,
> elevando o nível de abstração. O que é ótimo, mas cabe ao time do projeto
> fazer o trade-off entre tecnologias comprovadas e conhecidas versus
> tecnologias mais novas e menos testadas em cenários reais.
>
> Para entender melhor o seu caso, que é interessante, eu tenho algumas
> dúvidas.
>
> Vc acredita que o mesmo projeto utilizando outra tecnologia teria outro
> resultado? Em que pontos isto mudaria utilizando estas tecnologias
> alternativas?
>
> Até que ponto o .Net Framework não estar em seu controle tem te atrapalhado?
> Que outras tecnologias vc teria acesso/controle nestes pontos?
>
> 2010/1/27 Kemps Almeida Vieira <kemps.vie...@gmail.com>
> ...
>
> read more »
Como o F# ainda não tá pronto, o Scala ou Erlang resolveria muito
processamento matemático e facilitaria o paralelismo.
Para o Banco de Dados, vc pode escala fácil com CouchDB, o que é bem
diferente com qualquer banco de dados objeto-relacional.
Eu acho que você pode muito bem forçar o C#, Windows, MSMQ e bla bla
bla...
Mas para mim faz mais sentido utilizar tecnologias que foram criadas
para resolver especificamente este tipo de problema...
> ...
>
> mais »
Com relação ao .Net e em especifico ao CLR, ele ainda está evoluindo a
cada versão novas "features" surgem com algum proposito de correção e
melhorias das versões anteriores. O windows também está evoluindo e a
propria MS já percebeu a importância da interoperabilidade entre as
plataformas, principlamente dos sistemas em .net, serem portáveis para
outras plataformas que não e somente o Windows....!
[]s!
On 28 jan, 02:18, Laercio Simões <netl...@gmail.com> wrote:
> Kemps, eu trabalho em sistemas semelhantes a esse. Já trabalhei com 12
> processadores, nas maquinas que tinha 2 GB de RAM, mas o conceito é o mesmo.
>
> Neste tipo de aplicação as arquiteturas "convencionais" de web que estamos
> acostumados não se aplicam totalmente, sendo necessárias algumas adaptações.
>
> Uma solução interessante da Microsoft é o Microsoft HPC,http://www.microsoft.com/hpc/en/us/default.aspxonde voce pode montar um
--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetar...@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.com
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
Eu acredito que pelo fato do Windows e o do proprio .net nao serem open source, isso pode limitar o desenvolvimento de sistemas de alta performance e disponibilidade
Eduardo, eu não participei do projeto diretamente, o que eu conheço do
--
Como o F# ainda não tá pronto, o Scala ou Erlang resolveria muito processamento matemático e facilitaria o paralelismo.
Com relação ao Open source, tb acho que a MS precisa cada vez mais
elevar o nível de abstração e melhorar o .net a cada nova versão,
porém é importante tb levar em consideração conceitos de "plugin" e
que muitos cenários especificos de projetos, precisam ser tratados de
forma especifica, para que os recursos da máquina, do Windows e do
próprio .net sejam exclusivos daquela aplicação, etc....Com certeza
isso elevará o nível de maturidade das pessoas e somente os gênios e
especialistas de verdade existirão!
[]s!
On 29 jan, 21:29, Eduardo Miranda <duda...@gmail.com> wrote:
> Kemps,
>
> 2010/1/27 Kemps Almeida Vieira <kemps.vie...@gmail.com>
> ...
>
> mais »- Ocultar texto das mensagens anteriores -
--
Com relação a plataforma, acredito que a cada versão do .net, ela se
torna mais madura do que a versão anterior, assim como o próprio
Windows Server...tudo é um conjunto, e esse conjunto precisa evoluir!
O objetivo do forum não foi polemizar com relação a arquitetura
Windows X RISC/Unix, muito menos SQL X Oracle!! mas sim do ponto de
vista do próprio .net em relação a arquiteturas que trabalham com uma
camada de prevalência e o seu nivel de maturidade sobre essa
arquitetura! É lógico que esse tema sempre vai nos remeter ao OS e ao
gerenciamento de memória, etc, etc....
[]s!
On 1 fev, 11:23, Alexandre Valente <alexandre.g.vale...@gmail.com>
wrote:
> 2010/2/1 Kemps Almeida Vieira <kemps.vie...@gmail.com>
--
On 3 fev, 20:41, Eduardo Miranda <duda...@gmail.com> wrote:
> E estes detalhes apenas reforçam o meu argumento que é possivel fazer em
> diversas plataformas, não é? :)
>
> Em 2 de fevereiro de 2010 10:41, Juan Pedro A. Lopes
> <zerova...@gmail.com>escreveu:
>
>
>
> > E o Twitter usa backend em Scala.
>
> >http://www.artima.com/scalazine/articles/twitter_on_scala.html
>
> > 2010/2/2 Cássio Rogério Eskelsen <eskel...@gmail.com>
>
> > Só um detalhe: Facebook possui um backend Java utilizando Hadoop.
>
> >> Cássio Rogério Eskelsen
> >>http://www.cassio.tel
>
> >> 2010/2/1 Eduardo Miranda <duda...@gmail.com>
>
> >> Kemps,
>
> >>> Há alguns anos era comum escutar que "para uma solução enterprise era
> >>> necessário utilizar Java", seja lá o que quer dizer enterprise. Mas a
> >>> falácia era mais ou menos a mesma, será as outras plataformas são maduras
> >>> para o nível de requisitos necessários?
>
> >>> O Facebook é em PHP, o MSN em .Net, o twitter em Ruby, o MySpace também
> >>> em .Net. Todos com um nível de requisitos não funcionais altíssimos, todos
> >>> tem sua particularidade, todos com seus problemas, mas todos resolvendo os
> >>> problemas a que se propõem a resolver.
>
> >>> Então talvez a pergunta seja até que ponto a plataforma precisa de
> >>> maturidade, até que ponto o time precisa de maturidade e até que ponto a
> >>> empresa precisa de maturidade. Não é apenas a plataforma, mas um misto de
> >>> tudo.
>
> >>> Em 1 de fevereiro de 2010 11:01, Kemps Almeida Vieira <
> >>> kemps.vie...@gmail.com> escreveu:
--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetar...@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.com
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br