PROGRAMAÇÃO MVC E ZEND FRAMEWORK MVC PROGRAMMING AND ZEND FRAMEWORK Rodolfo Vinícius Moimas Dias Centro Universitário Filadélfia de Londrina UniFil Rafael Francovig Cavicchioli Centro Universitário Filadélfia de Londrina UniFil Prof. Edson Shinki Kaneshima Centro Universitário Filadélfia de Londrina - UniFil RESUMO: Este trabalho teve por objetivo demonstrar a funcionalidade da arquitetura de programação MVC (model-view-controller), introduzida por desenvolvedores do Smalltalk da Xerox PARC (Palo Alto Research Center) em 1979. Foram pesquisadas algumas linguagens de programação que se utilizam desta arquitetura, como por exemplo, Zend, RubyOnRails, CakePHP, Symphony, Codeiginiter. Todos esses programas são basicamente Frameworks feitos para facilitar na modelagem da arquitetura de programação. Um framework é um subsistema de software incompleto ou inacabado que deve ser instanciado, e no caso, serão estudados Frameworks que se utilizem da arquitetura MVC, para descobrir se utilizada trará benefícios. PALAVRAS-CHAVE: MVC. Programação. Zend. ABSTRACT: This study is aimed to demonstrate the functionality of the programming architecture called MVC (model-view-controller), introduced by developers of Smalltalk at Xerox PARC (Palo Alto Research Center) in 1979. We survey some of the programming languages that use this architecture, such as Zend, Ruby On Rails, CakePHP, Symphony, Codeiginiter. All these programs are basically Frameworks made to facilitate the modeling of architectural programming. A framework is a software subsystem that is incomplete or unfinished that should be instantiated, and will be studied Frameworks that use the MVC architecture to discover if the use will bring benefits. KEYWORDS: MVC. Programming. Zend. O Zend framework (ZF) foi concebido no inicio de 2005 na Zend Conference enquanto muitos outros Frameworks estavam ganhando popularidade, tais como o RubyonRails e Spring Frameworks. O ZF é um Framework de aplicações web de código aberto, orientado a objetos, implementação em PHP 5 e licenciado como New BSD License. A BSD License é uma licença para Softwares de código aberto, A licença BSD permite que o software distribuído sob a licença, seja incorporado a produtos proprietários. Trabalhos baseados no material podem até ser liberados com licença proprietária. Alguns exemplos notáveis são: o uso de código do BSD (funções de
rede de computadores) em produtos da Microsoft, e o uso de muitos componentes do FreeBSD no sistema Mac OS X da Apple Computer. MVC é um padrão de arquitetura de software que descreve o relacionamento entre três camadas de desenvolvimento, essas camadas são Model, View e Controller. Model: Como o nome já diz é um modelo, representando os dados da aplicação e as regras do negocio que governam o acesso e a modificação dos dados. O modelo mantem o estado persistente do negocio e fornece ao controlador a capacidade de acessar as funcionalidades da aplicação encapsuladas pelo próprio modelo. View: Um componente de visualização renderiza o conteúdo de uma parte particular do modelo e encaminha para o controlador as ações do usuário; acessa também os dados do modelo via controlador e define como esses dados devem ser apresentados. Controller: O controlador define o comportamento da aplicação, é ele que interpreta as ações do usuário e as mapeia para chamadas do modelo. Em um cliente de aplicações Web essas ações do usuário poderiam ser cliques de botões ou seleções de menus. As ações realizadas pelo modelo incluem ativar processos de negocio ou alterar o estado do modelo. Com base na ação do usuário e no resultado do processamento do modelo, o controlador seleciona uma visualização a ser exibida como parte das respostas a solicitação do usuário. Esse sistema é a implementação de multicamadas. A camada de apresentação ou visualização não se preocupa em como a informação foi obtida ou onde ela foi obtida, apenas a exibe, incluindo os elementos de exibição no cliente (no caso o-zf-) sendo utilizada para receber a entrada de dados pelo usuário e apresentar o resultado. A camada lógica é o coração da aplicação, responsável por tudo que a aplicação vai fazer. É um encapsulamento de dados que se importa apenas com a modelagem de dados, comportamento, armazenamento e a geração de dados. Sendo tudo isso independente da apresentação.a camada de controle, como o
nome já diz controla, determina o fluxo e mapeia as ações, servindo como uma camada intermediaria entre a camada logica e a de apresentação. Nas camadas de controle e visualização, o framework possui um único componente de suporte. Isso se deve ao fato de que essas duas camadas estão estritamente ligadas, uma vez que o controlador é responsável por gerar as informações que serão apresentadas na camada de visualização e recebe desta os eventos de respostas das páginas web. Apesar de alguns frameworks fazerem uso de apenas um componente para as duas camadas, não significa que os códigos para essas serão misturados ou guardados em um único lugar. Ao invés disso, os códigos são divididos e estes componentes é que ficam responsáveis pelo transporte de informações entre as duas de maneira mais simples. Arquitetura MVC é usada para facilitar a modelagem de um sistema e organizá-lo, caso ocorra algum erro ou o sistema necessite de uma implementação no código, é necessário apenas à modificação da camada especifica. A Programação Estruturada ainda é de grande valia didática, pela simplicidade e facilidade de compreensão. O Zend segue seus próprios padrões de codificação e se utiliza de um programa chamado PHPunit para testar completamente todas as classes, revisando por partes e aprovando o código. Tem o apoio de grandes empresas como, por exemplo, a IBM (1888) e a FOX Interactive Media (1982). O sistema MVC possui duas dificuldades em relação com um projeto e suas soluções de hardware para a sua codificação, esses são o paralelismo e a memoria. É possível dividir os blocos de um banco de dados e despachá-los para vários núcleos de processamento operando de maneira paralela, acelerando a codificação de um banco de dados em muitas vezes. Vivendo em um tempo onde os processadores são divididos em múltiplos núcleos, dispositivos móveis como smartphones, tablets e consoles portáteis estão recebendo estes processadores. Mas grande parte das aplicações não estão preparadas para obter o máximo desempenho do hardware. Desta forma, é sempre recomendável procurar a utilização do paralelismo em banco de dados. Apesar de
essa preocupação ser recente, e muito mais comum para quem trabalha na área, a exploração de paralelismo deve ser considerada quando for necessário aperfeiçoar instruções de uma linguagem estruturada. Um grande problema para a gestão da memória na arquitetura MVC utilizada pelo Zend é que grande parte dos projetos desconsidera a maneira de como os dados de entrada serão acessados na memória principal, o que é feito é assumir que existe um módulo externo para fazer o trabalho e a entrega de vetores para a arquitetura nos momentos certos. Em codificadores de vídeo MVC a disponibilidade da memória não é verificada. A organização de memória do codificador deve ser acessada por quase todos os módulos. Isto pode ser evitado com a inserção de memórias internas à arquitetura que guarda os dados intermediários, evitando que todos os módulos acessem sempre a memória principal. Entretanto, memórias internas às arquiteturas têm seu custo por bit é muito alto, inviabilizando o seu uso indevido. Um bom uso da comunicação com a memória é necessário para a redução do gasto de recursos do sistema. Cada acesso tem seu custo especifico em potência e tem de ser aproveitado ao máximo. Outro problema é o quanto de memoria interna utilizar, visto que estas unidades possuem uma considerável taxa de consumo da memória. REFERÊNCIAS ZEND: framewok. Disponível em: <http://framework.zend.com/>. Acesso em: 19 ago. 2012. RUBY OnRails: Guides. Disponível em: <http://guias.rubyonrails.com.br/>. Acesso em: 17 ago. 2012. MVC: UFCG. Disponível em: <http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/arqu/mvc/mvc.htm>. Acesso em: 14 ago. 2012. DEACON, John. Model-View-Controller (MVC) architecture. 2009. Disponível em: <http://www.jdl.co.uk/briefings/mvc.pdf>. Acesso em: 23 ago. 2012.
ALEXANDER, Christopher. Model-View-Controller: A design pattern for software. 2004. Disponível em: <http://ist.berkeley.edu/as-ag/pub/pdf/mvc-seminar.pdf>. Acesso em: 23 ago. 2011. KRASNER, Glenn E; POPE, Stephen T. A description of the Model-View- Controller user interface paradigm in the Smalltalk-80 System. 1988. Disponível em: <www.create.ucsb.edu/~stp/postscript/mvc.pdf>. Acesso em: 26 ago. 2011.