ANEXO 7
ARQUITETURAS TECNOLÓGICAS PROCERGS
Orientações para o desenvolvimento de Sites e Sistemas Web
Fronteira entre Site e Sistema Web
Definição de Site: um site é constituído por um conjunto de informações, bem estruturadas e facilmente
encontradas por seu público. Normalmente estas informações concentram-se em notícias, institucional, fotos,
vídeos e informações sobre serviços. Este tipo de construção atende um padrão para vários clientes. Exemplos:
www.spm.rs.gov.br, www.sdr.rs.gov.br
Deve conter somente funcionalidades referentes a gerência de conteúdo previstas no CMS
PROCERGS(Aplicativo padrão de implementação de Sites na PROCERGS). No momento em que for necessário
implementar funcionalidades que não sejam de conteúdo (exemplo: Cadastro de Alunos, Pesquisa de Cursos, etc)
que fogem do escopo destinado à ferramenta CMS, a solução é considerada como um Site integrado com um
Sistema Web.
Definição de Sistemas Web: Trata-se de uma aplicação, disponível na Web, específica para
atender determinado cliente ou público. Exige uma análise de sistemas e um projeto de software detalhados para
construção, uma estrutura de banco de dados específica e na maioria das vezes vem associada a uma área restrita
(com acesso por usuário e senha).
Quando for emitida uma ordem de serviço, a PROCERGS identificará o tipo de serviço que deverá ser
executando, optando por Site ou Sistema Web.
Quando a ordem de serviço for destinada ao desenvolvimento de sites, deverá ser utilizado a ferramenta
CMS PROCERGS – Conforme características descritas no ANEXO 11 – CMS PROCERGS.
Tratando-se de Sistema Web a PROCERGS indicará o framework que deverá ser utilizando, podendo optar
pelo Zend ou pelo Wafr.
Informações sobre os frameworks.
phpWAFR - Framework para o desenvolvimento de Sistemas Web em PHP
O phpWAFr (PHP Web Application Framework) é um framework full-stack orientado ao desenvolvimento de
aplicações Web utilizando a linguagem PHP.
Possui componentes que resolve grande parte da complexidade da arquitetura, como acesso a banco de dados,
autenticação de usuários, controle de sessão, tratamento de dados, validações, renderização de elementos HTML
(botões, abas, formulários, campos, listas, etc).
Faz parte do framework, uma estrutura de pastas e arquivos que define uma arquitetura simplificada de layout e
navegação, bem como a organização dos módulos da aplicação.
Também está incluido no framework um conjunto de templates que representam os diálogos mais comuns em
sistemas que utilizam o padrão de interface PROCERGS, como pesquisa, lista, edição, navegação entre abas,
relacionamentos um-para-muitos, relacionamentos muitos-para-muitos, geração de relatórios PDF, geração de
arquivos XLS, exemplos de campos especializados, exemplos de chamadas ajax para os mais diversos fins.
Componentes
Banco de dados - Classes para abstração da camada de dados, que resolvem a conexão, as queries, as
expressões SQL INSERT e UPDATE e a recuperação de dados em nível de coluna, linha ou várias
linhas;
Requisições e Parâmetros - Classes para tratamento e recuperação de dados da sessão (session) e da
requisição (request), com filtros de prevenção a invasões por injection;
Elementos HTML - Classes que renderizam os elementos que formam a estrutura base da página, como
o cabeçalho (HEAD) e o layout (BODY);
Padrão de interface - Classes que renderizam os elementos de interface de acordo com o padrão de
interface PROCERGS, são eles: deck de botões, listas paginadas, abas, formulários, campos, lista de
valores, popups, calendário, autocomplete;
Layout - Classes que renderizam o layout geral da aplicação, o menu dropdown, a área de ações (onde
está localizado o deck de botões e o título da página) e a área de dados (com scroll redimensionável e
independente);
Segurança - Classes que tratam a sessão do usuário, verificam a permissão de acesso, direcionam para a
tela de login quando necessário;
Mensagens - Classes para o tratamento e exibição de mensagens entre as requisições e as trocas de telas;
Erros - Classe para a coleta e o tratamento de erros durante as transações.
Templates
Pesquisa - Formulário com critérios de pesquisa, direciona para a lista;
Lista - Lista de dados com controle de paginação, filtro a partir dos critérios da Pesquisa, controle de
ordenação de colunas, controle de quebras, suporte a listas aninhadas;
PesquisaLista - Mescla de Pesquisa e Lista na mesma página;
Edição - Formulário para inclusão ou edição de dados;
Relacionamento 1:N - Lista relacionada com o registro em edição, demonstrada através de abas. Edição
por formulário em janela popup;
Relacionamento N:N - Lista relacionada com o registro em edição, demonstrada através de abas. Edição
por lista com seleção múltipla em janela popup;
Minicrud - Modelo para manutenção de tabelas auxiliares, que geralmente possuem a chave primária e o
campo de descrição. Este modelo fornece a lista, inclusão, alteração e exclusão dos dados;
Calendário - Exibição de dados representados por um calendário mensal;
PDF - Modelo para geração de relatórios PDF;
XLS - Modelo para geração de arquivos excel;
LOV - Modelo de lista de valores, são substitutos dos listboxes, com recuperação de dados mais eficiente;
MLOV - Modelo de lista de valores com seleção múltipla, utilizado nos relacionamentos N:N;
Controller - Modelo de controlador, arquivo de recebe as requisições dos diálogos e processa as regras de
negócio.
Algumas telas - Exemplos
Maiores detalhes poderão ser consultadas em: http://phpwafr.wordpress.com
Zend - Framework para o desenvolvimento de Sistemas Web em PHP
Zend Framework é um framework para aplicações Web de código aberto, orientado a objetos, implementado em
PHP 5 e licenciado como New BSD License. Zend Framework, freqüentemente referido como ZF, é desenvolvido
com o objetivo de simplificar o desenvolvimento web enquanto promove as melhores práticas na comunidade de
desenvolvedores PHP.
A arquitetura use-a-vontade do ZF permite que os desenvolvedores reutilizem componentes quando e onde eles
fizerem sentido em suas aplicações sem requerer outros componentes ZF além das dependências mínimas. Não há
portanto nenhum paradigma ou padrão que todos os usuários Zend Framework devam seguir, embora ZF forneça
componentes para os padrões de projeto MVC e Table Gateway que são usados na maioria das aplicações ZF.
Zend Framework fornece componentes individuais para muitos outros requisitos comuns no desenvolvimento de
aplicações web, incluindo autenticação e autorização via listas de controle de acesso (ACL), configuração de
aplicações, data caching, filtragem/validação de dados fornecidos pelo usuário para segurança e integridade de
dados, internacionalização, interfaces para funcionalidades AJAX, composição/entrega de email, indexação e
consulta no formato de busca Lucene, e todas as Google Data APIs com muitos outros web services populares. Por
causa de seu projeto fracamente acoplado, os componentes ZF podem ser usados de modo relativamente ao lado de
componentes de terceiros.
História e Filosofia
Zend Framework foi concebido no início de 2005 enquanto muitos novos frameworks, tais como Ruby on Rails e
Spring Framework, estavam ganhando popularidade na comunidade web development. ZF foi publicamente
anunciado pela primeira vez na Zend Conference. Ao mesmo tempo, nenhum framework amplamente usado tem
sido disponibilizado para a comunidade PHP para preencher completamente necessidades de desenvolvimento
web similares. Os projetistas do Zend Framework buscaram combinar características de uso final e rapid
application development (RAD) desses novos frameworks com a simplicidade, abertura e praticidade do mundo
real que é altamente valorizada na comunidade PHP.
Tipicamente, cenários de uso de desenvolvimento específicos são implementados usando componentes de
softwares mais genéricos através de configuração automática e/ou geração de código. A comunidade Zend
Framework optou pelo desenvolvimento completo desses componentes essenciais antes de começar a trabalhar na
simplificação de tarefas de desenvolvimento tais como migrações de banco de dados, geração de scaffolding, e
configuração e criação de projeto. Essa prática tem sido objeto de algumas críticas desde que algumas
funcionalidades consideradas por muitos como necessárias para um release geral para frameworks de aplicação
web modernos foram deixadas para futuros releases do Zend Framework. Muitos usuários ZF, entretanto, têm
achado tais componentes de software geneŕicos mais reusáveis e extensíveis na implementação de suas aplicações.
Zend Framework também procura promover as melhores práticas de desenvolvimento web na comunidade PHP;
convenções não são tão comumente usadas no ZF como em muitos outros frameworks. Apropriadamente as
sugestões são substituidas por padrões razoáveis de configuração que podem ser sobrescritos por cada requisito
específico da aplicação ZF.
Licenciamento
Zend Framework está licenciado sob Open Source Initiative(OSI)-approved New BSD License, e todos os
contribuidores de código devem assinar um Contributor License Agreement (CLA) baseado no Apache Software
Foundation’s CLA. O licenciamento e as políticas de contribuição foram estabelecidas para frustrar quaisquer
questões de propriedade intelectual por usuários ZF comerciais.
Patrocinador e parceiros
Zend Tecnologia, co-fundada pelos contribuidores do núcleo PHP Andi Gutmans e Zeev Suraski, é a patrocinadora
corporativa do Zend Framework. Os parceiros tecnológicos incluem IBM, Google, Microsoft, e StrikeIron.
Requisitos
Zend Framework requer PHP 5.1.4 ou superior, embora o Guia de Referência do Programador Zend Framework
recomende PHP 5.2.4 ou superior por melhorias de segurança e desempenho incluídas entre essas versões de PHP.
PHPUnit 3.0 ou superior é requerido para rodar os testes unitário embarcados com Zend Framework. Muitos
componentes também requerem extensões PHP; uma lista completa de componentes e suas dependências pode ser
encontrada no Guia de Referência do Programador.
Releases
Os releases do Zend Framework são versionados com três números no formato x.y.z, onde uma mudança no x, y,
ou z corresponde ao maior, menor e mini releases, respectivamente. O primeiro Disponibilidade Geral release do
ZF foi lançado em 30/06/2007 como Zend Framework 1.0.
Características
•
Todos os componentes são PHP 5 completamente orientados a objeto e tem conformidade com E
STRICT
•
Arquitetura use-a-vontade com fraco acoplamento de componentes e interdependências mínimas
•
Implementação MVC extensível suportando layouts e templates baseados em PHP por padrão
•
Implementação flexível de Table Gateway para acessar dados de um banco de dados relacional em um
ambiente orientado a objetos
•
Suporte para múltiplos sistemas de bancos de dados, incluindo MySQL, Oracle, IBM DB2, Microsoft
SQL Server, PostgreSQL, SQLite, e Informix Dynamic Server
•
Autenticação e autorização baseada em ACL usando uma variedade de sistemas de backend
•
Filtro de dados e validação para fortalecimento da segurança da aplicação
•
Gerenciamento de sessão
•
Componente de configuração para promover um gerenciamento de configuração consistente através de
Zend Framework e aplicações ZF
•
Composição e entrega de email, recuperação via mbox, Maildir, POP3 e IMAP4
•
Indexação e busca que suporta o formato de arquivo índice Lucene
•
Internationalização e localização
•
Criação de formulários usando PHP, arquivos de configuração ou XML
•
Tecnologias de Identity 2.0 tais como Microsoft InfoCard e OpenID
•
Múltiplos formatos para web services, incluindo XML-RPC, REST, e Google Gdata.
•
Subsistema de caching flexível com suporte para muitos tipos de backends, tais como memory ou um
sistema de arquivos.
•
Componente de logging simples inspirado por log4j
•
Componente nativo PHP para leitura, atualização e criação de documentos PDF
•
Serialização de estruturas de dados PHP para e de JSON de modo a facilitar o desenvolvimento AJAX
•
API para consumir RSS e alimentadores Atom
•
Bibliotecas cliente para muitos repositórios de web services, incluindo Amazon E-Commerce Service ,
Akismet, del.icio.us, Flickr, StrikeIron, Yahoo!, Audioscrobbler, e Simpy.
O Zend Framework segue o padrão MVC - Model View Controller ou Modelo-Visão-Controlador que é um
padrão de arquitetura de aplicações que visa separar a lógica da aplicação (Model), da interface do Usuário (View)
e do fluxo da aplicação (Controller). Permite que a mesma lógica de negócios possa ser acessada e visualizada por
várias interfaces.
Componentes do Zend Framework
Zend_Controller e Zend_View
Zend_Controller fornece os alicerces para a construção de websites baseados no MVC.
Zend_View separa o script de visualização dos controladores e modelos.
Zend_Config
Simplifica o uso de dados de configuração para aplicações web.
Zend_Db
Componente que provê acesso a banco de dados. Adicionalmente, ele ajuda a proteger suas consultas contra
ataques de SQL Injection.
Zend_Fed
Componente que auxilia a geração de dados RSS e Atom para feeds.
Zend_Http_Client
Componente para o desenvolvimento de CLIENTES web services.
Zend_Filter_Input
Componente para filtragem e validação de campos de entrada.
Zend_Json
Componente que transforma estruturas PHP em JSON - JavaScript Object Notation (http://www.json.org/) para
uso em aplicações com AJAX.
Zend_Log
Componente utilizado para geração de log de erros.
Zend_Mail e Zend_Mime
Componente para envio de email com suporte a anexos de todos os MIMES suportados.
Zend_PDF
Componente para criação e alteração de documentos PDF.
Zend_Search_Lucene
Para que não conhece o Lucene é uma software de busca e uma API de indexação de documentos escritos na
linguagem Java e é mantido pela Apache Software Foundation (http://lucene.apache.org/java/docs/). O
Zend_Search_Lucene é um componente do Lucene totalmente escrito em PHP 5.
Zend_XMLRpc
Componente para chamada remota de procedimentos. O SOAP é um padrão de RPC para WebServices.
Maiores detalhes poderão ser consultadas em http://framework.zend.com/
Importante
A PROCERGS não fornecerá treinamento nos frameworks Zend nem Wafr.
Download

Orientações para o desenvolvimento de Sites e Sistemas