28 julho, 2008

ABC MVC 2008 - parte 0.75

Não, não estou enrolando... Hehehe...


Eu esqueci que faremos acesso a base de dados, mas não vou ficar criando banco de dados por que não é o foco. Por isso resolvi usar um banco de dados pronto e não vai ser o antigo NorthWind!


Já que estamos usando o MS SLQ Server 2005 usaremos o novo banco de dados AdventureWorks.


Quem baixou o MS SQL Server 2005 Express percebeu que não vem bancos de dados de exemplo. O banco AdventureWorks tem que ser instalado a parte!
O projeto foi movido para o CodePlex e encontra-se disponível aqui, página do projeto.
Especificamente os bancos para a versão 2005 estão aqui.

Baixe o arquivo "AdventureWorksLT.msi" que é uma versão light banco. A versão completa é a "AdventureWorksDB.msi", baixe ela também um dia poderá ser útil.

Se você esta usando uma máquina 64bits, o seu SQL Server deverá ser a versão para 64bits e os bancos de dados de exemplo tem tem que ser dessa versão também!

A instalação é simples, o famoso "Next...Next...Finish", ele coloca os arquivos .MDF e .LDF no pasta padrão "c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data".

Depois é só ir no Management Studio, e fazer o Attach do banco, clicando com o botão direito do mouse em cima de Databases, escolha a opção Attach, procure pelo banco na pasta indicada acima e... voilá! Esta no ar!

DICA:
Para terminar, vou deixar essa dica, para quem tem dificuldade em modelagem de banco de dados ou quer algum pronto para servir de base para a criação de algum projeto e o AdventureWork não tem o que precisa a Microsoft disponibiliza 10 bancos de dados de exemplo SQL Server 2005 Express Database Schemas, tem desde banco de Gerenciamento de contatos até e-Commerce, passando por Catálogo de Produtos.

O próximo post será a parte 01, e vamos começar a aplicação ABC MVC!

ABC MVC 2008 - parte 0.5

O código fonte deste projeto esta hospedado no CodePlex, e como o projeto é para quem também esta iniciando vamos usar o TortoiseSVN que esta na versão 1.5.0, é só baixar o arquivo MSI e instalar. Não é necessária a instalação do Subversion, ele é um server, e nós precisamos só do client que é o Tortoise. Eu tenho instalado o VisualSVN, que para Windows parece ser a versão mais simples e fácil de ser instalada.

Para conectar com o servidor do CodePlex, que usa o Team Foudation Server, usando o Tortoise deve-se usar o SvnBridge, desenvolvido pela equipe do site.

Eu criei o projeto na pasta Projects que o VS.Net cria dentro da pasta Documentos do Usuário.

É possível baixar em qualquer lugar o projeto, basta clicar com o botão direito do mouse dentro de uma pasta vazia, e escolher a opção "SVN Checkout" do menu de contexto.

Conforme o projeto for evoluíndo é só atualizar o fonte, para isso clique com o botão direito do mouse dentro da pasta e escolha "SVN Update".

Quem tem uma licença do VS.Net, pode baixar aqui o Team Explorer, ele não vai funcionar com as versões Express, infelizmente!

Qualquer dúvida entre em contato.
Para quem quer saber mais sobre o Subversion e Tortoise saiu uma matéria na edição 07 de Fevereiro/Março da Mundo.Net, e aqui você pode baixar um livro sobre o Subversion.

25 julho, 2008

Ajude a sustentar a Wikipédia e outros projetos, sem colocar a mão no bolso, e concorra a um Eee PC!


Ajude a sustentar a Wikipédia e outros projetos, sem colocar a mão no bolso, e concorra a um Eee PC!
…e também a pen drives, card drives, camisetas geeks, livros e mais! O BR-Linux e o Efetividade lançaram uma campanha para ajudar a Wikimedia Foundation e outros mantenedores de projetos que usamos no dia-a-dia on-line. Se você puder doar diretamente, ou contribuir de outra forma, são sempre melhores opções. Mas se não puder, veja as regras da promoção e participe - quanto mais divulgação, maior será a doação do BR-Linux e do Efetividade, e você ainda concorre a diversos brindes!

Por que estou participando

Deixei de ser xiita à muito tempo, hoje eu uso Windows Vista, .Net, SQL Server. Porém amanhã eu não sei! Já tentei algumas vezes instalar o GNU/Linux, mas não me acostumei, sim, simplesmente isso, eu não me acostumei! Hoje acho mais interessante para mim o Windows. Mas vivo lendo sobre isso, e estou tentando subir uma VM com Ubuntu já faz alguns meses! :D
Então estou participando pois acho que projetos do tipo da Wikipedia, distros GNU/Linux, Android, são muito interessantes socialmente e até comercialmente! O avanço dos sistemas operacionais, banco de dados, linguagens de programação open source levou empresas privadas a melhorar seus produtos, então todo mundo ganha.

23 julho, 2008

ABC MVC 2008 - parte 0

Continuando o post anterior, vou iniciar um projeto voltado para exemplificação do padrão MVC e fazendo uso de POCO.

Alerta: Não sou um especialista em MVC, OO, .Net, etc... Sou apenas um desenvolvedor e por ter muita curiosidade e vontade de melhorar o meu trabalho tenho estudado sobre os assuntos que vou escrever a partir de agora. Quaisquer críticas (positivas e negativas), sugestões, cometários serão bem recebidas, e tentarei responder a todas. Se cometer algum erro por favor entre em contato, continuo aprendendo e querendo aprender!
Vamos lá!

Esse post é apenas uma preparação, vou apenas colocar o que vou usar no desenvolvimento, tipo os utensílios e ingredientes de uma receita de bolo!

Utensílios:

- Vou usar o MS Visual C# Express 2008 Edition, no fim da página do link você pode baixar uma imagem ISO com a instalação do VB.Net, C#, C++, Web Developer, e o MS SQL Express 2005. Inicialmente só é necessário o C#. E pode baixar a versão com o SP1 Beta, estou rodando ela sem problemas, mas não é para uso profissional.

- Para a parte de acesso a dados vou usar a MS Enterprise Library (atualmente uso a versão 3.1, mas para este exemplo vou testar a 4.1 que já é para o FrameWork 3.5). Sei que existem soluções interessantes de O/R M, como NHinernate ou o Linq To SQL no 3.5 e até o Entity Framework já disponível no SP1 Beta, que merece um post a parte; porém no momento vai ser na mão mesmo, assim que não conhece ADO.Net vai conhecer um pouco, já que a Enterprise Library abstrai muita coisa.

Os fontes do projeto como disse vou hospedar na web, para isso escolhi o CodePlex, para quem não conhece é um site da Microsoft para hospedar projetos Open Source no estilo do SourceForge.Net. O legal é que se você tiver uma licença do Visual Studio .Net você pode baixar o Team Explorer para acessar o Team Foudation, que também é um produto da MS, e é o que hospeda os projetos do CodePlex.
Porém como a idéia é possibilitar que não tem o VS.Net participar, vou usar:

- TortoiseSVN, que tem integração com o Team Foudation.

Vou fazer um post, chamarei de "parte 0.5", explicando um pouco sobre como instalar o Tortoise, comunicar com o CodePlex, etc...

Para quem já conhece o Tortoise já pode baixar o projeto que esta aqui: ABC MVC 2008.
Só tem o arquivo Solution do .Net, mas daí já fica pronto para quando eu atualizar!

Até!

21 julho, 2008

Arquitetura MVC <> Camadas

Estou desenvolvendo um novo sistema baseado na arquitetura MVC, ou melhor, pensei que estava.
Ano passado participei da integração de um sistema legado ASP.Net com SAP que estava sendo implantado. O sistema já estava construído e basicamente deveríamos integrá-lo ao SAP usando Web Services disponibilizados através do serviço XI da SAP. Ou seja, ao invés de continuar buscando os dados no banco Oracle, iríamos agora buscar no SAP, através de Web Services.

O sistema usava a arquitetura MVC. Usava? Bom, eu tinha uma DLL onde ficavam as classes Model, outra de Controller, tinha a interface gráfica em ASP.Net, mas eram somente camadas... Opa, mas MVC não são camadas?

Esse foi o meu primeiro contato com MVC e a partir daí comecei a estudar mais sobre padrões e arquitetura, e lógico vi que era hora de me aprofundar em Orientação a Objetos... Sim isso mesmo, aprofundar.

Eu vim do VB6 (por favor, VB6 é sim uma linguagem de gente grande!), quando comecei o ADO.Net estava sendo lançado, praticamente, logo em seguida tive contato com a arquitetura Win DNA (Windows Distributed interNet Applications Architecture), como o link diz é um nome marketeiro para tecnologias que já existiam mas foram agrupadas em uma arquitetura (COM, COM+, antigo MTS; ADO, ActiveX, ASP). Na época a minha bíblia era o livro Mary Kirtland, posteriormente li também o livro do Fábio Câmara.

E foi ai que surgiu para mim o conceito de camadas, dividir para conquistar, já que na época tínhamos o DLL Hell, era muito bom você criar pequenos componentes que sofreriam manutenção em separado, e nada melhor do que juntar esses componentes por funcionalidades! Assim os componentes usados para a interface gráfica ficavam juntos, o de acesso a dados ficavam em outro, o que diminuía a possibilidade de dar um problemão quando algo coisa sofria manutenção, eu disse diminuía...

Daí pra frente eu só desenvolvia em camadas, camadas lógicas, pois na verdade o software ficava instalado todo na máquina cliente, ou seja, eram instaladas várias DLL's, mas todas no mesmo lugar. Algum projeto saiu usando o COM+, aí tinhamos Tiers, componentes usados em interface gráfica ficava na máquina cliente e compoentes de negócio e banco de dados ficavam no servidor.

Mas onde entra o MVC (http://pt.wikipedia.org/wiki/MVC) aí? Aí é que está... Não entra!! O MVC não é sinônimo de desenvolvimento em camadas! Nem em tiers! O MVC é um padrão de arquitetura, e ele é baseado no comportamento dos objetos. Sim comportamento!!
Muitos de nós, principalmente que viemos do VB6, Win DNA, ...; começamos desenvolvendo em OO criando classes que tem os atributos como os RecordSets do ADO, ou seja somente dados! Mas um objeto por definição possui comportamento. Então não adianta criar uma classe de dados, como se fosse um RecordSet, uma classe de serviço como se fosse uma classe do VB6 (que sim, antes que alguém fale, não é orientado a objeto, porém chegava perto...), e ficar passeando pelas camadas, que isso é MVC. Aliás nem OO é, pois você não estará usando comportamentos dos objetos.

Não vou chover no molhado explicando isso aqui, o Phillip Calçado Shoes já escreveu um artigo muito bom sobre isso, então usando um dos princípio de OO que é a reusabilidade leia os artigos MVC e Camadas e Evitando VO's e BO's, leia também as referências e acompanhe o blog dele! :D

Na edição 46 da .Net Magazine o Rodrigo Sendin escreveu um artigo sobre MVC, porém quem leu o artigo e ler os artigos do Phillip Calçado vai entender que a crítica do Rodrigo esta errada quanto ao padrão MVC.

Bom se eu não vou explicar o que é MVC, nem camadas, nem BO ou VO, então pra que este post? Como eu disse estava desenvolvendo um projeto pensando estar usando MVC, no momento na versão 1.0 ele irá sair usando BO's, trafegando pelas camadas, etc... Mas estou monstando a arquitetura da versão 2.0 em MVC, não vou usar nenhum framework, pelo menos por enquanto.

No próximo post vou começar uma série de artigos compartilhando minha experiência, principalmente com uso de objetos POCO, pois percebo que no Brasil o uso de DataSet's é abusivo, logicamente para pequenos projetos é uma boa solução mas para projetos médios, ou com muitos acessos ao banco de dados o peso começa aumentar. E também vou dar um foco no acesso a dados. Vou publicar o código acho que no CodePlex ou no MSDN Code Gallery, ainda não sei qual é o mais indicado, daí é só baixar o código para estudar ou começar outro projeto em cima. Quem quiser se unir a empreitada é só entrar em contato.

Espero que acompanhem, comentem, entrem em contato para trocarmos idéias.