1 | | |
2 | | -- EM CONSTRUÇÃO -- |
| 1 | === Documento de Arquitetura do Novo Expresso === |
| 2 | |
| 3 | |
| 4 | '''1. Objetivo''' |
| 5 | |
| 6 | 1.1. Proporcionar ao Expresso uma plataforma em que possa evoluir de modo a prover segurança, usabilidade, qualidade, desacoplamento de camadas MVC, principalmente relacionadas a negócio e visão, performance, reaproveitamento de componentes, mobilidade, orientação a serviços e suporte a estrutura de Nuvem. |
| 7 | |
| 8 | 1.2. Será adotado software TINE20, como base tecnologia para este NOVO EXPRESSO, agregando necessidades ou funcionalidades nesta |
| 9 | plataforma. |
| 10 | |
| 11 | '''2. Elementos de software Significativos e Licenciamentos ''' |
| 12 | |
| 13 | '''ExtJS''' |
| 14 | ExtJS é um framework Javascript orientado a objetos. Ele permite o controle de eventos |
| 15 | desacoplado das páginas HTML e possui vários componentes gráficos prontos para uso (widgets). |
| 16 | Versão utilizada: 3.1.1 |
| 17 | Licença: GPLv3 |
| 18 | Site: http://www.sencha.com/products/extjs [[BR]] |
| 19 | |
| 20 | |
| 21 | |
| 22 | '''Zend''' |
| 23 | Zend Framework é um framework para desenvolvimento de aplicações PHP orientado a objetos e com |
| 24 | arquitetura de baixo acoplamento. Pode ser usado para construir toda a estrutura de uma aplicação e |
| 25 | governá-la pelo padrão MVC ou compor uma aplicação a partir de um modelo 'selfservice' de uso de classes. |
| 26 | Zend Framework possui um modelo de desenvolvimento de componentes que permite o encapsulamento de |
| 27 | classes de terceiros em uma interface padronizada e um estilo de codificação reconhecido pela ferramenta |
| 28 | PHP_CodeSniffer. |
| 29 | No caso do Tine 2.0, o Zend Framework não governa a aplicação, mas é utilizado por ela. O Tine 2.0 possui |
| 30 | uma implementação própria de MVC que faz uso das classes do Zend Framework. |
| 31 | Versão utilizada: 1.9.1 |
| 32 | Licença: New BSD |
| 33 | Site: http://framework.zend.com |
| 34 | |
| 35 | |
| 36 | '''Ajam''' |
| 37 | Ajam (Asynchronous Javascript Asterisk Manager), é tecnologia disponibilizada na versão 1.4 do |
| 38 | servidor de comunicação por voz Asterisk, para permitir o uso de sua interface de gerenciamento por HTTP, |
| 39 | via requisição assíncrona. O Tine 2.0 possui uma classe que serve de interface para um cliente Ajam remoto. |
| 40 | Versão utilizada: Asterisk 1.4 |
| 41 | Licença: GPLv2 |
| 42 | Site: http://www.asterisk.org/asterisknow/developers/guide |
| 43 | |
| 44 | '''GeoExt''' |
| 45 | GeoExt é um framework Javascript para sistemas de informação geográfica. Ele faz uso de ExtJS e OpenLayers. |
| 46 | Versão utilizada: não informada |
| 47 | Licença: BSD |
| 48 | Site: http://www.geoext.org |
| 49 | |
| 50 | '''Hash''' |
| 51 | Classes para criptografia de senhas. |
| 52 | |
| 53 | '''HTMLPurifier''' |
| 54 | HTMLPurifier é uma biblioteca de filtros escrita em PHP compatível com padrões HTML. Ela |
| 55 | remove código malicioso enviado em tentativas de ataque XSS (CrossSite Scripting), utilizando |
| 56 | uma lista branca auditada. Ela também verifica se os documentos estão compatíveis com as especificações do W3C, tarefa |
| 57 | possível somente com um grande conhecimento dos padrões. |
| 58 | Versão utilizada: 4.2.0 |
| 59 | Licença: LGPL |
| 60 | Site: http://htmlpurifier.org |
| 61 | |
| 62 | '''OpenDocument''' |
| 63 | Classes para criação de documentos ODT e ODS. |
| 64 | |
| 65 | '''OpenLayers ''' |
| 66 | Framework Javascript para mapeamento dinâmico (construção de mapas geográficos em tempo real) em páginas Web. |
| 67 | Versão utilizada: 2.8 |
| 68 | Licença: Clear BSD |
| 69 | Site: http://openlayers.org |
| 70 | |
| 71 | '''PHPExcel ''' |
| 72 | Conjunto de classes PHP que permitem gravar e ler arquivos de diferentes formatos, |
| 73 | como Excel 2007, PDF e HTML. |
| 74 | Versão utilizada: 1.7.5 |
| 75 | Licença: GPL |
| 76 | Site: http://phpexcel.codeplex.com |
| 77 | |
| 78 | '''qCal ''' |
| 79 | qCal é um gerador e leitor de iCalendar para PHP 5. É baseado na especificação iCalendar |
| 80 | 2.0(RFC 2445). iCalendar é um formato de arquivo que permite a usuários de Internet enviarem |
| 81 | requisições de reunião e tarefas para outros usuários por email ou compartilhamento de arquivos |
| 82 | com extensão .ics. |
| 83 | Versão utilizada: Não informada |
| 84 | Licença: LGPL |
| 85 | Site: http://code.google.com/p/qcal |
| 86 | |
| 87 | '''SabreDAV ''' |
| 88 | É um framework WebDAV para PHP. WebDAV (Webbased Distributed Authoring and |
| 89 | Versioning) é definido pela especificação RFC 4918. |
| 90 | Versão utilizada: 1.3.0 |
| 91 | Licença: Modified BSD |
| 92 | Site: http://code.google.com/p/sabredav |
| 93 | |
| 94 | '''vcardphp ''' |
| 95 | Classe para geração de cartões virtuais de visita. |
| 96 | Versão utilizada: Não informada. |
| 97 | Licença: BSD |
| 98 | Site: http://vcardphp.sourceforge.net |
| 99 | |
| 100 | '''Wbxml ''' |
| 101 | WBXML (WAP Binary XML) é uma representação binária de XML que permite a transmissão |
| 102 | de documentos em redes móveis. |
| 103 | |
| 104 | |
| 105 | '''3. Descrição da Arquitetura''' |
| 106 | |
| 107 | '''3.1. Camadas e Subsistemas''' |
| 108 | |
| 109 | A proposta de evolução está baseada em uma implementação MVC. Essa implementação tem fraco acoplamento com o Zend Framework, |
| 110 | evitando heranças das classes do framework. |
| 111 | |
| 112 | Descrição das camadas : |
| 113 | Camada de modelo está dentro da pasta Tinebase/Model. [[BR]] |
| 114 | |
| 115 | Camada de controle está dentro da pasta Tinebase/Controller. [[BR]] |
| 116 | |
| 117 | Camada de visão está dentro da pasta Tinebase/views. |
| 118 | |
| 119 | A camada de visão é baseada em arquivos PHP que produzem conteúdo dinâmico em HTML e fazem uso intensivo de Javascript, |
| 120 | por meio do framework ExtJS. A Figura abaixo demonstra uma visão geral, mostrando a multiplicidade |
| 121 | de backends e frontends. |
| 122 | |
| 123 | |
| 124 | |
| 125 | |
| 126 | |
| 127 | '''4. Padrões Arquiteturais''' |
| 128 | |
| 129 | '''4.1.Single Page Application (SPA). ''' |
| 130 | |
| 131 | Servido por meio de uma única URL, o arquivo index.php. |
| 132 | O entendimento do fluxo da aplicação simplificado, uma vez que só há uma porta de entrada para as requisições. |
| 133 | Pode-se dizer que esse modelo SPA implementa o padrão de projeto Front Controller, o que resolve problemas |
| 134 | de organização e segurança. |
| 135 | |
| 136 | |
| 137 | |
| 138 | '''4.2. ISO-13407(processo voltado para usuários) e RIA(rich internet application)''' |
| 139 | |
| 140 | A navegação nos módulos do sistema será padronizada,baseada sempre no layout abaixo: |
| 141 | |
| 142 | |
| 143 | |
| 144 | |
| 145 | '''5. Topologia''' |
| 146 | |
| 147 | As camadas entre aplicação, backends e visualizações estão bem separadas. |
| 148 | A orientação a serviços e utilização do JSON como interface desta prestação de |
| 149 | serviços possibilitará a oferta de serviços a diferentes clientes em plataformas |
| 150 | diferentes, desde que suportem o protocolo JSON. |
| 151 | |
| 152 | Toda comunicação se dará por protocolos padrões, XML/RPC ou SyncML para conexão |
| 153 | a clientes de e-mail. |
| 154 | |
| 155 | '''JSON/RPC''' para comunicação com outras aplicações, independente de plataforma. |
| 156 | |
| 157 | '''SyncML/OMA''' – Para dispositivos móveis. |
| 158 | |
| 159 | |
| 160 | |
| 161 | |
| 162 | '''6. Topologia da Infraestrutura ''' |
| 163 | |
| 164 | O novo expresso interagirá com os seguintes componentes/serviços providos pela infraestrutura que |
| 165 | suporta a aplicação: |
| 166 | |
| 167 | A camada que trata dos backends será flexível suficiente para prover a troca de serviços, de modo configuráveis: |
| 168 | |
| 169 | '''Serviços LDAP''' – Poderão acoplar-se qualquer serviço que tenha suporte ao padrão LDAP, desde OpenLdap, RHDS, |
| 170 | Novell ou Ad(Windows). |
| 171 | |
| 172 | '''Banco de dados''' – Deverá suportar Mysql(default), podendo usar Postgresql ou mesmo Oracle. |
| 173 | |
| 174 | '''Imap''' – Suporte a Cyrus , Dovecot ou similar. |
| 175 | |
| 176 | '''SMTP''' – Suporte a Postfix ou similar. |
| 177 | |
| 178 | |
| 179 | |
| 180 | '''7. Arquitetura disponível em nuvem''' |
| 181 | |
| 182 | Os front-ends do Expresso permitirão acesso remoto, via internet e intranet, quantos necessário para crescimento horizontal, |
| 183 | com balanceamento de carga conforme a demanda de requisições: |
| 184 | |
| 185 | |
| 186 | '''8. Arquitetura com alta disponibilidade''' |
| 187 | |
| 188 | '''8.1.'''Disponibilidade e replicação do banco de dados |
| 189 | '''8.2.'''Disponibilidade e replicação do IMAP |
| 190 | '''8.3.'''Disponibilidade e replicação do LDAP |
| 191 | '''8.4.'''Disponibilidade e replicação do SMTP |
| 192 | |
| 193 | |
| 194 | '''9. Pontos a Exaltar''' |
| 195 | |
| 196 | Um passo estratégico, considerando os problemas atuais e perspectivas futuras, orientação a serviços, |
| 197 | ambiente de nuvem, visibilidade, usabilidade e segurança. |
| 198 | Foco na qualidade do produto e segurança, com consequente satisfação dos clientes e usuários. |
| 199 | |
| 200 | |