Permanent link to this article: http://fernandovezzali.com/2012/03/04/dez-podcasts-em-portugues-tecnologia-da-informacao/
Mar
02
O papel da ViewModel no ASP.NET MVC
Quando começamos aprender ASP.NET MVC, é comum vermos o controller passando o modelo para a view e este encaixe acontecendo com perfeição. Mas no mundo real, o cenário muda e este encaixe entre modelo e view pode não acontecer com tanta facilidade.
Os templates do Visual Studio são ótimos, eu os utilizo diariamante, apenas me preocupo quando vejo pessoas encarando o código gerado pelos templates como se fossem a única/melhor implementação a ser seguida. Definitivamente este não é o propósito dos templates.
Vamos entender algumas coisas sobre geração de código:
- Os templates nos fornecem apenas um “starter code”, um esqueleto, uma estrutura.
- Poupa o programador da digitação repetitiva que acontece, por exemplo, quando adicionamos novos elementos ao projeto, tais como: uma classe, uma view, um teste unitário, etc.
- Os templates podem e devem ser modificados. A Microsoft estimula isto de diversas formas, só para citar uma delas: MVCScaffolding (open source)
Voltando ao tema, o nosso modelo raramente atenderá a todas as necessidades da view, na realidade não é responsabilidade dele atender à estas necessidades. O modelo deve representar o domínio da aplicação, e só. Elementos relacionados à camada de apresentação, ex.: paginação, inputs e grid, não podem estar no modelo.
Vamos resolver este problema usando uma ViewModel:
A ViewModel é um modelo. Sim, um modelo, porém é projetada especificamente para atender às necessidade da view. Esta é a sua função, simples assim. Abaixo mostro a comparação entre um “modelo de domínio” e uma ViewModel. Neste exemplo a ViewModel foi projetada para uma view de consulta, com um filtro por palavra-chave e uma listagem de produtos, as diferenças são evidentes:
O código do modelo de domínio:
public class Produto { public int Id { get; set; } public string Nome { get; set; } public decimal Preco { get; set; } }
O código da ViewModel:
public class ProdutoViewModel { public ProdutoViewModel() { Produtos = new List(); } public string Nome { get; set; } public List Produtos { get; set; } }
O código da View:
@model PetApplication.Models.ProdutoViewModel
@{
ViewBag.Title = "ListaProdutos";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Lista de Produtos</h2>
@using (Html.BeginForm())
{
@Html.LabelFor(model => model.Nome)
@Html.TextBoxFor(model => model.Nome)
foreach (var produto in Model.Produtos)
{
<ul>
<li>@Html.DisplayFor(modelItem => produto.Id)</li>
<li>@Html.DisplayFor(modelItem => produto.Nome)</li>
<li>@Html.DisplayFor(modelItem => produto.Preco)</li>
</ul>
}
<input id="Submit1" type="submit" value="Buscar" />
}Permanent link to this article: http://fernandovezzali.com/2012/03/02/o-papel-da-viewmodel-no-asp-net-mvc/
Feb
25
Como contribuir com projetos open source sem codificar
Contribuir com projetos Open Source é uma ótima maneira de ampliar seu networking e ganhar muito conhecimento. Dentro do Github existem milhares de projetos interessantes, usando as mais diferentes tecnologias e plataformas.
Projetos famosos como o jQuery, Linux, Rails, Modernizr e o Git estão lá. Até a Microsoft usa o GitHub para alguns de seus projetos, vide o exemplo do KnockOut: https://github.com/SteveSanderson/knockout.
Você pode colaborar com estes projetos, sem necessariamente codificar.
Exemplos de como você pode ajudar:
- Encontrar e avisar sobre existência de um bug
- Sugerir uma nova funcionalidade (new feature)
- Escrever uma boa documentação
- Traduzir uma documentação existente
- Atualizar uma documentação obsoleta
- Enviar uma melhoria gráfica (ícone, logo ou um css)
- Corrigir um erro ortográfico
- Propor compatibilidade com outra plataforma (mobile por exemplo)
- Aprimorar a documentação com diagramas e screen-shots
- Criar um glossário com os principais termos
- Responder perguntas de usuários
- Escrever um post sobre o projeto
Aconteceu comigo:
Eu já trabalho desenvolvendo software à 12 anos e notei um crescente interesse por parte das empresas (inclusive durante entrevistas) sobre o assunto “Open Source”. As empresas de fora valorizam isto, em uma ocasião me fizeram a seguinte pergunta:
- Fernando, você possui contribuições no GitHub ? Posso dar uma olhada ?
Infelizmente eu não tinha, mas já corrigi isto !
Permanent link to this article: http://fernandovezzali.com/2012/02/25/como-contribuir-com-projetos-open-source-sem-codificar/

