Há alguns dias atrás me deparei com a nescessidade de criar uma arquitetura .NET para criar um novo sistema, e como fazia alguns anos que não programava em .NET fui pesquisar o que estava sendo mais usado no mercado e me deparei com várias opções, mas a que se melhor adaptou para a minha nescessidade foi essa:
- ASP NET MVC 1 – Framework desenvolvido pela Microsoft para criar aplicações baseadas em MVC
- NHibernate 2.1 – ORM para mapear nossos objetos em entidades relacionais
- ExtJs 3.2 – Framework para criar a camada de vizualização
- Postgress 8.4 – Banco de dados para armazenar as informações
Por esse motivo a partir de hoje estaremos criando um passo a passo para criar um pequeno sistema totalmente didático para controle de contatos usando essa arquitetura.
Então vamos colocar a mão na massa…
Parte 1 – Criando a aplicação no Visual Studio 2008
1) Abrir o Visual Studio 2008 e criar um novo Solution em branco, ir em File -> New -> Project e depois selecionar a opção do lado esquerdo Other Project Types -> Visual Studio Solutions, coloque o nome de Contatos.
2) Depois de criado uma Solution em branco vamos adicionar os projetos, na janela Solution Explorer (geralmente do lado direito) clicar com o botão direito em cima da solution Contatos e selecionar a opção Add -> New Project e depois selecionar Visual C# -> Web -> ASP.NET MVC Web Application coloque o nome de Contatos.Web
Quando o Visual Studio oferecer a opção de criar um projeto de Teste Unitário, selecione “No”, vamos criar os testes em um outro segundo momento.
Também podemos apagar as pastas App_Data e Models que não vamos usar nessa arquitetura.
3) Agora vamos criar um projeto do tipo Class Library para a camada que vai ser responsável por fazer os mapeamentos das nossas entidades para nossas tabelas no banco de dados. Seguir os mesmos passos, clicar com o botão direito em cima da solution Contatos e selecionar a opção Add -> New Project depois Visual C# -> Windows -> Class Library e coloque o nome de Contatos.Factory
4) Depois de criado o projeto, clicar com o botão direito em cima do projeto Contatos.Factory e selecionar a opção Add -> New Folder, vamos adicionar duas pastas uma chamada Entity que servirá para controlar nossas entidades (classes) e outra chamada Mappings que servirá para criar os XMLs de mapeamento para o NHibernate.
5) Agora vamos criar mais um projeto do tipo Class Library onde vamos codificar todas nossas regras de negócio, siga os mesmos passos descrito acima, a única diferença é o nome do projeto que será Contatos.Business.
6) Depois de criado o projeto Contatos.Business também vamos criar duas pastas, uma chamada Repository que conterá todas nossas interfaces com todos nossos métodos e outra Implementation que será a implementação dos métodos declarados na nossa interface.
No final dessas etapas nossa solution Contatos deverá conter 3 projetos, conforme abaixo:
Pronto, o esqueleto do nosso sistema esta criado, no próximo post vamos criar nossas entidades e mapear com o NHibernate.
Qualquer erro, dúvida, opinião favor entrar em contato!
Até a próxima!





Leandro, estou dando manutenção em um sistema que utiliza algumas das tecnologias que você mencionou, com algumas diferenças:
- MVC: foi utilizado o MonoRails
- EXT JS versao 2.1.1
- NHibernate
E a primeira coisa que me questionei, poque não utilizar os mesmos recursos utilizando uma mesma tecnologia, como:
- ASP.NET MVC 2 (framework 4) ou MVC 1 (framework 3.5)
- LINQ To SQL (ORM de mapeamento classes x banco de dados) ou até mesmo o Entity Framework.
E para a parte de visualização utilizar mesmo o ASP.NET com AJAX ou até mesmo o JQuery.
- SQL SERVER ou EXPRESS para banco de dados.
Marcus,
Sua proposta esta correta, podemos usar essas tecnologias sem problema, tudo vai depender do projeto e do pedido do cliente….
Sobre o EXT JS, seu resultado final é muito bom, deixa os usuários bem felizes, já o desenvolvimento é um pouco chato, já que sua sintaxe é um pouco confusa e puro JS
A grande vantagem de usar ORM é a facilidade de mudar de SGBD com um menor impacto para a aplicação e com uma maior velocidade…
att,
Leandro Prado
Leandro, parabéns pelo excelente tutorial. Achei excelente a solução de usar ExtJS com Asp.Net MVC. Você comentou que o resultado é bom e o desenvolvimento chato, mas concorda que, uma vez que se usa MVC, estes controls caem como uma luva devido a Microsoft ainda não disponibilizar nada especial para client-side no ASP.NET MVC? Concordo que usar ExtJS com WebForms acaba tirando a vantagem da produtividade do WebForm, mas no caso do MVC, já que não temos saida mesmo, temos de qualquer maneira ir pro mundo JavaScript + JSON + HTML… ExtJS as vezes acaba até ajudando em controles mais complexos.
Santos, concordo com vc em partes…
vamos lá… essa sintaxe do EXT que eu acho ruim de desenvolver… no começo eu penei muito para desenvolver um form básico que com HTML estava feito em 10 min….
agora ele possui várias vantagens.. como: trabalha muito bem com JSON, facilidades com Grids, TreView, Drag and Drop, etc…. depois de uns meses se batendo vale a pena….
Acho que o EXT é legal de usar em projetos não muito críticos… porque quando o cronograma pega o que vale é a facilidade!!!
att,
Leandro Prado
Boa tarde Leandro,
Parabéns pela iniciativa de compartilhar esse conhecimento.Uma dúvida,Esse framework para UI tem alguma versão que não seja paga?
Rodrigo,
Sim, tem uma versão OpenSource, porém usa aplicação que será desenvolvida usando os componentes também tem que ser OpenSource
att,
Leandro Prado
Bom dia Leandro,
dúvida básica,
estou tentando criar a estrutura “esqueleto” acima, mas não tive sucesso, utilizo VS 2010 Express, ele não tem opção “other project types”, tenho que instalar algum plugin? ou minha versão não permite a opção? o que fazer neste caso?
Obrigado
Danilo
Com o VS Express você só pode ter um projeto por Solution, por esse motivo você não está conseguindo montar a estrutura!
att,
Leandro Prado