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

AGRADEÇA AO AUTOR COMPARTILHE!

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

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 tunning.

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:

Fonte: http://www.fabioprado.net/2011/03/conhecendo-o-oracle-application-express.html

AGRADEÇA AO AUTOR COMPARTILHE!

2 Comentários

Cornélio José Wiedemann
1

Até que enfim, um post bacana e de bom entendimento.
Muito bom mesmo esse post meu amigo

valeu pela ajuda

Att,
Cornélio José Wiedemann (TI & DBA)

Deixe seu comentário

Seu endereço de e-mail não será publicado. Campos com * são obrigatórios!

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">