MVC: Model View Controller e os Três Macacos
Posted: 07/01/2008 Filed under: Cairngorm, Tecnologia 9 Comments »Muito se fala sobre MVC, e no desenvolvimento de aplicativos em Flex comenta-se muito em relação a ele também. Embora o próprio modelo de desenvolvimento de aplicativos em Flex já possibilite o desenvolvimento de aplicativos em MVC, o advento de frameworks e micro-arquiteturas como o Cairngorm fomenta ainda mais a discussão sobre o MVC.
E a estrutura para entender o MVC, uma vez que ele é um padrão de arquitetura (alguns o chamam de framework, de paradigma, etc.. mas acredito que chamá-lo de arquitetural seja mais significativo) é o mesmo do entendimento de um design pattern: entender o problema (que é a motivação para o surgimento de um padrão), entender o padrão, e por fim entender como o padrão resolve o nosso problema.
A partir do momento que o software começa a ficar grande e complexo demais e que muitos dados são apresentados para o usuário, sentimos a necessidade de separar os dados (model) da interface (a view), de modo que as mudanças na UI não mudem o modo como gerenciamos os dados. E isso é feito desacoplando (removendo a relação direta) da user interface do acesso aos dados através de um elemento adicional, o controller, que irá intermediar essa relação.
Assim, a responsabilidade de cada um dos três elementos fica bem definida:
O Model representa as informações do domínio do aplicativo (a Folha de Pagamento, por ex) e fornece funções para operar os dados (calcular o total da Folha, por ex.), isto é, ele que expõe as funcionalidade do aplicativo. O Model também é responsável por notificar a View quando os dados forem alterados.
A View, objetivamente, deve renderizar o Model e possibilitar a interação do usuário, bem como consultar ao Model quando este notificá-la de que houve alterações nos dados afim de manter a consistência entre ambos.
O Controller, o maestro da orquestra, responde às ações dos usuários (um clique, por exemplo), possibilita mudanças no Model (fazer uma requisição ao servidor e obter novos dados, por exemplo) e seleciona a View correspondente.
E deste modo, desacoplando a View do Model e com a separação de responsabilidade, reduz-se consideravelmente o nível de complexidade do software, permitindo também uma maior especialização e foco do desenvolvedor, algo de extrema importância hoje em dia com a necessidade cada vez maior de interfaces com o usuários mais efetivas.
Esse fluxo pode ser sintetizado conforme a imagem abaixo, cujo original é da Sun:
Um ponto importante aqui é não confundir o MVC com desenvolvimento em Três Camadas. Desenvolvimento em Três Camadas é uma arquitetura para softwares cliente-servidor, e as camadas representam sistemas distintos (camada de apresentação, camada de negócios e camada de dados, que podem, análoga e respectivamente, ser um aplicativo em Flex, o código Java no servidor e um banco de dados). E fundamentalmente a camada de apresentação nunca pode acessar os dados diretamente, isto é, deve passar pela camada intermediária (ou pelas camadas, já que há sistemas com mais de três camadas).
E embora MVC e Três Camadas pareçam significar a mesma coisa, o nível em que eles atuam é bem diferente. Enquanto o MVC trata do código do aplicativo propriamente dito, o desenvolvimento em Três Camadas refere-se a um nível topologicamente mais alto (entre os sistemas). Outra diferença vital é que em Três Camadas o fluxo é linear (da camada de apresentação para a de negócios, de negócios para dados, voltando de dados para negócios e de negócios para dados), em MVC é triangular (a View envia um comando para o Controller, que por sua vez atualiza o Model e a View é consulta os novos dados no Model). Portanto, não vamos confundir as coisas!
E as implementações em MVC variam de acordo com a linguagem, claro. Mas nada disso é realmente novo, e há algo mais que gostaria de apresentar aqui, agora que já estamos contextualizados.
Eu e Beck Novaes, quando trabalhávamos juntos em um projeto educacional e de treinamento em desenvolvimento em Adobe Flex e Cairngorm, criamos uma série de idéias e conceitos, dos quais uma delas era relacionada à MVC.
Você provavelmente já escutou a história dos Três Macacos Sábios, não é mesmo? Muito possivelmente associada a Gandhi, que sempre levava consigo os três totens dos macaquinhos. Um os macacos está tampando os olhos, outro tampando os ouvidos e o terceiro tampando a boca, representando “não veja o mal, não ouça o mal, não fale o mal”.
Da mesma forma, apresento os Macacos MVC (ou MVC Monkeys para os gringos…):
- A View é muda, mas faz gestos (user gestures) para o Controller e escuta mudanças no Model;
- O Model é cego, mas escuta o Controller e fala para a View sobre as mudanças nele próprio;
- O Controller é surdo, fala para o Model quando mudar de estado e vê os gestos da View.
Resenha: As Leis da Simplicidade
Posted: 03/01/2008 Filed under: Livros Comments OffCerta vez ouvi falar de uma fita de vídeo chamada “Como dizer o que você tem a dizer em 5 minutos?”, mas que tinha mais de uma hora de duração. Um tanto questionável, não é mesmo? A resposta do autor era simples: “Ninguém compraria uma fita com apenas 5 minutos de duração!”.
John Maeda, em contrapartida, seguiu suas próprias leis. Utilizando-se das duas primeiras leis, Reduzir e Organizar, escolheu 10 das 16 leis que tinha em mente, e de acordo com a terceira, Tempo, escreveu um livro curto de 100 páginas, que pode ser lido rapidamente.
A cada capítulo eu associava a lei em questão com situações do dia a dia e vários pensamentos me vinham à cabeça. As leis são concisas, e o livro, além de criativo, com muitas histórias e comparações com a vida real, é livre de jargões tecnológicos e muito mais focado em negócio do que nessa ou naquela tecnologia – o que para mim é muito positivo.
Contudo, não nego que em razão da “buzz” que ocorreu com o livro, eu esperava mais. Mas fazendo uma análise fria do preço do livro, do tempo que levei para ler, da introdução ao assunto da simplicidade e das perguntas que ele me fez fazer, considero uma boa leitura.
Assim, se você procura um livro com dez leis que possam ser traduzidos em dez passos para aplicar simplicidade em seu negócio (ou para aplicar em seu website), esse livro não é para você. O livro em si é uma ótima base para questionamentos e fomenta muitas perguntas, de modo que você próprio deve decidir como e o quão simples seu produto ou serviço pode e deve ser.
Vídeos da Globo.com agora em Flash
Posted: 26/12/2007 Filed under: Adobe 3 Comments »E “atendendo a pedidos”, os vídeos sob demanda da Globo.com agora são em Flash Video! Ponto para o time da Globo.com!
PS: Até onde sei, me parece que os vídeos ao vivo (como Big Brother) continuaram a ser transmitidos em Windows Media.
Livro: Pense Grande
Posted: 26/12/2007 Filed under: Livros 1 Comment »Seu longo subtítulo – A história de dez empreendedores que concretizaram suas idéias em empresas sólidas e lucrativas trabalhando com persistência e criatividade – descreve exatamente o assunto tratado em “Pense Grande”. É um livro raro, contudo, já que foi concebido e patrocinado pelo Banco Mutiplic em 1989, e oferecido como presente. Hoje pode ser encontrado a venda em sebos.
O livro apresenta dez pequenas estórias de dez grandes empresas, passando das mais tradicionais em casos de sucesso, como Ford e Nestlé, até por menos comentadas, como Romi e Agroceres. São histórias, portanto, que podem ser lidas em diversos outros livros e possivelmente já conhecida de muitas pessoas. Mas o idéia mais marcante do livro, certamente, é a visão da origem da maioria destes empreendimentos.
George Eastman, por exemplo, só foi estudar o processo fotográfico quando, depois de dez ano trabalhando em um banco, resolveu viajar de férias e um amigo inocentemente sugeriu que ele tirasse fotos. Eastman ficou intrigado com as máquinas fotográficas da época que pesavam mais de 100 quilos, e alguns anos mais tarde cunhou o slogan “Você aperta o botão e nós fazemos o resto” na Kodak, revolucionando e popularizando a fotografia (e viabilizando anos mais tarde o cinema, graças ao filme flexível em rolo).
Assim, a partir de um fato aparentemente sem importância, de uma situação do dia a dia, como uma conversa entre amigos, surge um empreendimento de sucesso que mudou o estilo de vida e comportamento das pessoas, e essa é a essência das histórias apresentadas e compiladas nesta excelente leitura.
ColdFusion 8 mais rápido com Java 5/1.5
Posted: 06/12/2007 Filed under: ColdFusion 1 Comment »Aparentemente a versão 6 do Java VM (a JVM configurada por padrão no CF8) apresenta problemas para carregar grandes quantidades de .class na memória. Um número grande de .class é típico de aplicações ColdFusion grandes ou em provedores de hospedagem, que armazenam muitos sites em ColdFusion. A sugestão é trocar a VM do CF8 para a 5/1.5 (não há diferença em termos de suporte à linguagem nem mudanças significativas em termos de estabilidade) até que a Sun resolva o problema.
[1] Java 6 and ColdFusion 8
[2] Huge Performance Gain in Moving ColdFusion 8 to Java 1.5
Dreamweaver lento com muitos CFINCLUDES
Posted: 30/11/2007 Filed under: ColdFusion 1 Comment »Dica boba, mas que demorei a descobrir. Se o Dreamweaver demora alguns segundos a mais do que o normal para abrir um .cfm que contenha muitos cfincludes (típico em aplicações fusebox 2), desabilite a opção “Show contents of included file” em “Server-side includes” da categoria “Invisible Elements” nas preferências do programa. A melhora na velocidade é perceptível.
Frase do dia
Posted: 28/11/2007 Filed under: Frase do dia 13 Comments »“Não se faz na vida pública o que se faz na privada.”
Viagra natural…
Posted: 22/11/2007 Filed under: Snapshots 2 Comments »
Mercado Ver-o-Peso, Belém do Pará
"Robin Hoods" do Brasil
Posted: 18/11/2007 Filed under: Unsorted 2 Comments »Antes se roubava para benefício próprio, familiar ou para o círculo íntimo… Com o PT (não apenas na esfera federal), uma nova era surgiu: passou-se a roubar pelo partido, pela “causa”, pela “luta”. O roubo ideológico trouxe um mudança importante: ele proporciona o distanciamento necessário para que se roube ainda mais. Afinal, não se está roubando de forma mesquinha, egoísta, para beneficio e enriquecimento próprio… A motivação é maior, é para o “bem” do povo. Se o partido não cresce, não chega ao poder, se não chega ao poder, não pode promover as mudanças necessárias… é o roubo estilo Robin Hood. Afinal, desde que o PT é partido, os fins sempre justificaram os meios: PF: Cisco usou laranjas para doar R$ 500 mil ao PT
Por que o ColdFusion não é gratuíto?
Posted: 17/11/2007 Filed under: ColdFusion 2 Comments »Aqui no Brasil/Portugal ninguém comentou sobre este post no blog CFInsider (blog de Jason Delmore, gerente para ColdFusion da Adobe). Até porque, sejamos francos, por mais que o autor diga o contrário, os argumentos que ele apresentou são válidos apenas na esfera do marketing. Tecnicamente, a lista de produtos que ele listou – que segungo ele, compõem o “ColdFusion como solução” e não como linguagem – pode ser contraposta de forma relativamente simples, utilizando alternativas abertas/gratuítas (que existem aos montes) para suplantá-las e substituí-las (aliás, a Adobe vêm fazendo exatamente isso ao adotar padrões abertos como o Yahoo! User Interface Library (YUI) e FCKEditor, só para ficar em alguns exemplos). Eu até já caí nessa conversa no passado. Defendia com unhas e dentes que o CF custava barato perto de outras soluções existentes (ASP por exemplo). Mas isso mudou, especialmente porque nos últimos anos temos visto surgir iniciativas excelentes e abertas na área de desenvolvimento web. Estas (não preciso citar exemplos) estão fazendo com que o CF não tenha um valor tão apelativo como tinha antes (lá pelos idos de 2002/2003, quando saiu a versão MX). È minha opinião, compre-a se quiser. Em suma: para mim a Adobe precisa parar com essa história de tentar convencer seus desenvolvedores de que o CF é uma solução barata pelo que oferece. Confesso, é um senhor pacote, mas acho que não justifica os preços e a modalidade de licenciamento atual. Se os argumentos da Adobe a favor do alto valor da licença do CF fossem coerentes, o que dizer então do Flex e as mudanças que a Adobe implementou em termos de licença neste produto? Vai entender…
Entretanto os comentários que se seguiram ao post valem a pena a leitura. Valem para saber o que pensa a comunidade internacional sobre essa história de o ColdFusion ser gratuíto, aberto, whatever.
Agora, não pense que eu sou a favor de uma versão livre e gratuíta do CF. Eu não sou, que fique bem claro. Eu prefiro o CF sob as asas da Adobe ou de alguma outra grande empresa (ok, menos a Microsoft), por enquanto. Explico: sim, sim… eu ia adorar o CF “na faixa”, mas como comentei na minha apresentação de abertura na última vinda do Forta, acho que estaríamos em maus lençóis se dependêssemos apenas da comunidade de usuários desta tecnologia.
Quem daqui se considera capaz de contribuir de forma efetiva (eu estou falando: codificar, botar a mão na massa e fazer a coisa acontecer) para modificar e incrementar um produto como o CF? Eu, por exemplo, não tenho, nem de longe, o conhecimento em desenvolvimento de software (seja colaborativo ou não), Java, J2EE, protocolos, etc, etc, para ousar abrir e alterar um fonte de um módulo qualquer (por exemplo, o que converte CFML em Java e depois para Java bytecode – ok, esse último fica à cargo do compilador) de um software como o ColdFusion. O que falar do tempo?? Falta conhecimento, falta experiência, falta tudo. São poucos os que seriam capazes de fazer isso com o CF. Inevitavelmente ficaríamos na dependência de engenheiros de software que ganham para isso: leia-se, dependeríamos da Adobe ou uma outra empresa. Temos um exemplo na nossa comunidade: o CFEclipse. É um puta produto, mas só existe por conta de apenas alguns gatos pingados (mais notadamente Mark Drew). E CFEclipse é um cisco em termos de software perto do ColdFusion. Não é a toa que a comunidade fica implorando para a Adobe assumir o produto e colocá-lo como “a” IDE para ColdFusion. Tornando-se aberto e gratuito o CF poderia estagnar e morrer. Por isso, na hora em que você for comprar uma licença de CF, lembre-se que software pago é isso aí mesmo: pagar por algo que você não é capaz de fazer igual ou não tem tempo para tal. Até rimou…
Agora… se a Adobe abrisse o CF e adotasse um outro modelo de negócios/lucro em cima do produto (eu ouvi Flex?…), a história poderia ser diferente… Poderia? Não sei… só sei que essa é uma longa discussão…