MVC–O padrão.    

Olá pessoal!

Estou planejando para os próximos posts uma pequena série sobre Asp.Net MVC. Uma série para quem é desenvolvedor WebForms, e quer fazer suas primeiras aventuras no mundo MVC. Para isso, vou fazer alguns posts introdutórios, sobre conceitos que um desenvolvedor Web deve saber antes de iniciar suas aventuras em Asp.Net MVC.

Praticamente todos os assuntos tratados nessa posts introdutórios devem ser de conhecimento de qualquer desenvolvedor Asp.Net, porém, muitos dos desenvolvedores WebForms migraram do VB6 sem o menor conceito de Web, por isso, para que não surjam desenvolvedores Asp.Net MVC tão desconhecedores de Web como existe no WebForms, acho interessante esses posts introdutórios.

Os temas serão tratados ao longo de quatro post, como segue:

Caso eu vá percebendo ao longo da escrita desses post a necessidade de mais assuntos, eu posso atualizar a lista acima. Qualquer dúvida quantos aos assuntos tratados, por favor, me avisem.

Então vamos lá!

Separation of concerns (Separação de Interesses)

Antes de começarmos a falar de MVC, devemos falar do que veio antes, que é a idéia de Separation of Concerns (SoC). SoC é o processo de agrupar códigos com características distintas, separando em blocos de códigos especialistas, responsáveis por interesses específicos.

Se falarmos em orientação a objetos, seria deixar cada objeto responsável apenas por aquilo para o que ele foi criado, conhecendo apenas o seu escopo, e interagindo com outros objetos quando necessário para realizar atividades fora do seu escopo de conhecimento.

Normalmente isso é feito através de padrões de projetos (Design Patters), implementável em qualquer linguagem, e em qualquer paradigma, não apenas em Orientação a Objetos, como Linguagens Procedurais, ou em programação orientada a serviços.

Entre muitos padrões que implementam SoC, existe o MVC, que vamos falar no próximo tópico.

MVC, o que é?

MVC é a sigla para Model View Controller, um Design Pattern que implementa o conceito de SoC. MVC não foi criado pela Microsoft e muitos menos é algo exclusivo do Asp.Net. É um padrão de projeto que existe desde 1979, originalmente utilizado em uma antiga linguagem chamada Smalltalk.

Sua implementação é possível em qualquer ambiente que tenha interface de usuário, ou seja, não é aplicável apenas em Web, inclusive sua utilização foi muito disseminada em aplicações Desktop, devido a complexidade das telas, onde era necessário existir um padrão para facilitar a manutenção.

A idéia do MVC é separar a lógica de apresentação da lógica de negócio, e fazer com que uma lógica não conheça a outra. Dessa forma, é possível alterar a interface (podendo mudar inclusive de Desktop para Web, por exemplo), sem ter necessidade de alterar a lógica de negócio, ou vice-versa.

Cada parte ficaria da seguinte forma:

Model – Define o domínio do negócio, muitas vezes representado pelo Modelo de Dados (não é o mais correto, mas com tantos ORMs por ai, acaba sendo o que acontece), ou entidades de negócio, como por exemplo Cliente, ContaCorrente,  etc. As operações de negócio fazem parte do Model (Domínio da aplicação), ou seja, um método para obter o saldo de uma conta corrente faz parte do domínio e está no Model do MVC. O Model conhece apenas o que diz respeito a ele, ou seja, não sabe quem está visualizando os dados ou para que os dados estejam sendo visualizados.

View – Define uma visão do Modelo (Model), de acordo com a necessidade de um usuário. Muitos acham que a View no MVC é sempre uma tela (Página na Web ou Formulário no Desktop), mas na realidade vai muito além disso, qualquer tipo de exibição de dados de um modelo é chamado de View. Pensando em uma aplicação Web, poderia ser: A própria página (mais comum), um relatório (em qualquer formado – PDF, Excel, etc), um arquivo (TXT, XML), um formado de dados (JSON), enfim, qualquer representação do domínio de negócio que seja necessário para representar uma necessidade da aplicação. Várias Views podem existir para o mesmo Model

Controller – Faz o meio campo entre o Model e a View, é ele quem sabe qual View gerar de acordo com uma entrada específica. Ele conhece a View e o Model na aplicação. Um Controller geralmente é invocado a partir de uma View gerada por um Controller anterior.

Abaixo segue uma ilustração retirada do Wikipédia.

image

Falando um pouco de Web, existem muitos frameworks que implementam o padrão MVC, um dos mais conhecidos é o Ruby On Rails, inclusive é um dos que mais inspiraram a criação do Asp.Net MVC. Em Asp.Net já existia MVC desde o .Net 1.1, mas em iniciativas particulares, como o Monorail. Nas demais tecnologias Web, como Java, PHP, Asp 3, etc; também existem framework MVC disponíveis.

É importante conhecer bem o padrão MVC, para que ao desenvolver uma página nesse conceito, você não fique perdido em relação de onde colocar suas informações, seria interessante estudar um pouco de outro padrões, como DDD (Domain Driven Design), que não pretendo abordar nesta série de posts, mas que ajuda muito a modelar seu Domínio (Model), sem sempre trabalhando apenas no Modelo de Dados (Com frameworks ORM, como NHibernate ou Entity Framework).

Desenvolvendo MVC sem conhecer bem o padrão MVC, você cai no risco de misturar conceitos, como é comum acontecer com Orientação a Objetos, onde muita genta fala que trabalha com OOP só porque a linguagem dá suporte, mas acaba programando sempre proceduralmente.

Bom para introduzir o conceito MVC, acredito que esse Post seja suficiente, caso necessite de mais informações, faça um comentário logo ali abaixo.

Até o próximo.

13. outubro 2010 07:42 by Frederico | Comments (2) | Permalink

Comments

Eu mesmo sou um que tenho origem no WindowsForms, e já apanhei muito (ainda apanho às vezes) por não conhecer a fundo o conceito Web.

Acompanharei com toda certeza essa série de posts sobre ASP.NET MVC!

Abraços!
14/10/2010 02:14:02 #
HTML   JavaScript   CSS

HTML   JavaScript   CSS
31/05/2013 00:50:43 #
Comments are closed

Sobre mim

Minha Imagem

Meu nome é Frederico Batista Emídio, trabalho com desenvolvimento de sistemas profissionalmente a oito anos, porém, já faço sites pessoais a pelo menos dez anos.

Para saber mais clique aqui.

Páginas

Calendário

<<  novembro 2017  >>
seteququsedo
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

Visualizar posts em um Calendário
Sigua @fredemidio

MCP Asp.NET