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.