O conteúdo do artigo de hoje faz parte de uma apresentação que fiz para propor o Oracle Application Express (Apex) como ferramenta para desenvolver pequenas e médias aplicações web na empresa em que trabalho.
Irei apresentar a definição, arquitetura, principais conceitos, componentes e recursos do Apex na versão 3.0.1. A 3.0.1 não é a última versão do Apex, ainda assim, creio que este artigo servirá como referência para quem está analisando e quer conhecer melhor esta ferramenta (versão 3.0.1 ou superior).
Visão Geral
O Apex 3.0.1, conhecido em versões anteriores como HTMLDB, é um framework para desenvolvimento rápido de pequenas e médias aplicações Web Oracle Database-Centric (aplicações que interagem com BD Oracle).
Para desenvolver aplicações com o Apex é necessário apenas um browser e poucos conhecimentos de programação. Ao criar uma aplicação no Apex nenhum código é gerado. Metadados são criados e armazenados no Banco de Dados e são utilizados por uma série de PL/SQL packages que geram páginas HTML.
O Apex é composto por dados armazenados em tabelas de Banco de Dados e código PL/SQL que renderiza as páginas das aplicações em tempo real. O Browser envia um REQUEST que é traduzido em uma chamada APEX PL/SQL. O Banco de Dados processa o PL/SQL e os resultados são retornados para o browser como HTML. A aplicação reside completamente em um BD Oracle que é composto por aproximadamente 215 tabelas e 200 objetos PL/SQL contendo mais de 300.000 linhas de código.
O Apex possui serviços e recursos básicos necessários para implementar segurança e otimizar performance em aplicações web. Ele é um ambiente de desenvolvimento com gerenciamento centralizado, mas fornece Workspaces independentes, que permitem aos desenvolvedores operar em áreas de trabalho isoladas de outros usuários. A maior parte do desenvolvimento é realizada através da entrada de valores em uma série de wizards para criar os objetos básicos e possibilitar posteriormente o ajuste das propriedades destes objetos através de telas de definição.
Arquitetura (no Oracle 10g)
- Roda no Oracle HTTP Server (que contém o Apache) com o módulo mod_plsql (Oracle PL/SQL Toolkit);
- É dividida em 3 camadas: Web Browser + Apache com mod_plsql + Banco de Dados Oracle com Apex Engine.
Requisitos de Browser (Cliente)
- Deve suportar JavaScript, HTML 4.0 e CSS 1.0;
- Cookies devem estar habilitados;
- Recomenda-se o uso do Internet Explorer 6.0 (ou superior) ou Firefox 1.0 (ou superior);
Componentes
Os 3 principais componentes do Apex são: Application Builder, SQL Workshop e Utilitários (Data Workshop).
Application Builder: principal componente de desenvolvimento, possibilita criar aplicações web, gerar scripts das aplicações, definir e configurar linguagem das aplicações (globalização) etc.
SQL Workshop: permite criar e gerenciar objetos de BD, executar e carregar instruções e scripts SQL.
Utilitários: permite ler e extrair dados do Banco de Dados Oracle, monitorar o BD, gerar scripts DDL, ver relatórios e views do Apex etc.
Recursos gerais
- Geração de relatórios nos seguintes formatos: PDF, HTML, RTF e XLS;
- Gerenciamento de Estado de Sessão: realiza gerenciamento do estado de sessão no BD. As páginas automaticamente salvam estado de sessão em tabelas do BD;
- Temas de Interface de Usuário: separa apresentação da lógica de aplicação, permitindo alterar a qualquer momento a interface das aplicações;
- Condicionalidade: é possível efetuar processamento condicional em todos os componentes de aplicação;
- Navegação: possui componentes p/ simplificar o desenvolvimento e manutenção de controles de navegação, tais como: tabs, breadcrumbs, árvores de controle, listas e links;
- Interfaces externas e extensibilidade: opções para desenvolver interfaces ou controles customizados, tais como: html e web services. Pode extender funcionalidades utilizando api´s do apex ou database links etc.Segurança
- Aplicações públicas ou autenticadas. A autenticação pode ocorrer através dos seguintes mecanismos: Single Sign-On, LDAP, credenciais de contas de BD ou usuários do APEX;
- É possível autenticar usuários de aplicações utilizando o Microsoft Active Directory ou qualquer outro serviço de diretório acessível por LDAP;
- Autorização por aplicação, página ou componente;
- Proteção de estado de sessão para prevenir URL tampering, SQL injection e ataques XSS (cross-site scripting);
SQL Workshop Tools
Ferramenta para ver e gerenciar objetos de BD via comandos, scripts, query builder ou object browser.
Utilitários de suporte
- Permite criar pacotes de aplicação para exportação, atualização, instalação e desinstalação;
- Permite criar scripts de objetos de BD, dados, imagens, CSS e JS;
Performance
- Alto nível de performance pelo fato da aplicação residir no BD e gerar mínimo impacto de tráfego de dados na rede;
- Relatórios p/ monitorar e identificar “pontos” para análise e tuning.
Recursos avançados
- Controle de locks em operações DML. Estados possíveis: em espera, falha ou aguardando por um tempo definido;
- Criação de Database links para acessar objetos em outras instâncias de BD;
- Implementação de Web Services, recursos para envio de e-mail e utilização de coleções;
- Tradução e suporte para múltiplos idiomas: aplicações podem rodar concorrentemente em diferentes linguagens;
- Ferramenta para migração de BD Microsoft Access para Oracle;
CONCLUSÃO
Vantagens: - Possui ótimos recursos de segurança e performance para aplicações web, tais como:
. Armazenamento de estado de sessão em BD ;
. Funcionalidades para evitar XSS (Cross-site scripting) ou Adulteração de URL´s;
. Funcionalidades para implementar Cache de Páginas ou Regiões de Páginas;
. Apesar de nesta versão não ser muito simples, permite a implementação de AJAX.
- Facilidade de aprendizado e desenvolvimento;
- Ferramentas para geração de scripts, pacotes e criação de objetos de BD;
- Funcionalidades para facilmente gerar backups das aplicações (incluindo páginas web e objetos de BD);
- Possui relatórios para análise de desempenho e auditoria de acesso de workspaces, aplicações, páginas etc;
- Possibilidade de criar aplicações web rapidamente, utilizando diversos templates e wizards;
- Possibilidade de utilização (consumo) de Web Services, permitindo a integração das aplicações desenvolvidas em Apex com aplicações desenvolvidas em outras linguagens.
- Possui recursos (fáceis de serem utilizados) para autenticação e autorização baseada em diretórios LDAP (Ex.: Microsoft Active Directory).
Desvantagens:
- Limitado para construção de aplicações que interagem com BD Oracle: não permite interação com outros BD´s;
- A integração com outros sistemas é possível somente através de Web Services. Não é possível consumir componentes desenvolvidos em outras linguagens e tecnologias, tais como: JAVA, .NET, Delphi, VB6 etc.;
- Arquitetura engessada: dificuldade de reutilização e especialização de código:
- Não permite utilizar conceitos de programação orientada a objetos, tais como: Herança, polimorfismo e encapsulamento;
- Não permite dividir aplicação em camadas especializadas, tais como: Apresentação, Negócios, Dados, Segurança, Recursos de Localização, Auditoria e Log etc.
- Não possui integração com sistemas de gerenciamento de configuração (SCM), tais como: VSS, Sub-version, CVS.
Referências:
- ORACLE. Oracle Database 2 Day + Application Express Developer’s Guide, Release 3.0. Jun. 2007. Disponível em: http://download.oracle.com/docs/cd/B32472_01/doc/appdev.300/b32470.pdf. Acesso em: 14 ago. 2007;
- ORACLE. Application Express Installation Guide, Release 3.0. Jul. 2007. Disponível em: http://download.oracle.com/docs/cd/B32472_01/doc/install.300/b32468.pdf. Acesso em: 14 ago. 2007;
- ORACLE. Oracle Application Express Home. Disponível em: http://www.oracle.com/technology/products/database/application_express/index.html. Acesso em: 14 ago. 2007;
- ORACLE. Application Express Architecture. Disponível em: http://www.oracle.com/technology/products/database/application_express/html/apex_arch.html. Acesso em: 14 ago. 2007.
- ORACLE. Oracle Application Express Packaged Applications. Disponível em http://www.oracle.com/technology/products/database/application_express/packaged_apps/packaged_apps.html. Acesso em: 14 ago. 2007.
Alguma previsão do curso de Apex, Fabio? Obrigado!
ResponderExcluirIsrael, não terei curso de Apex.
Excluir[]s