Páginas

25 de mar. de 2011

Desenvolvendo aplicações web com o Oracle Application Express (Apex)

Pessoal,

     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.

      Com o Apex é possível escrever funcionalidades através de código PL/SQL, HTML, Javascript e uma Application Programming Interface (API) da Oracle (APEX_UTIL, APEX_MAIL, APEX_LDAP etc.);
    
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.

2 comentários: