Revista Do Linux  
EDIÇÃO DO MÊS
  Atualidades
  Beowulf
  CAPA
  Corporativo
  Divirta-se
  Entrevista
  Estudo de Caso
  Interfaces Gráficas
  Mercado
  Programação
  Segurança
  Servidores
  WEB

Zope
Servidor de aplicações

Carlos Henrique Bauer
bauer@atlas.unisinos.br

Bastante utilizado em sites no exterior, o produto já começa a aparecer em aplicações locais Desenvolvido pela Digital Creations em conjunto com uma grande comunidade de usuários, o Zope é um servidor `open source' de aplicações web. Exemplos de sites, no Brasil, que o utilizam são o IDG Now! www.idg.com.br e o Magnet www.magnet.com.br, ambos desenvolvidos pela Hiperlógica hiper.com.br. No exterior podem ser encontrados vários outros. Uma iniciativa que merece menção é a da OpenClassroom www.openclassroom.org , uma organização que pretende levar o poder do `open source' à educação e utiliza o Zope como o servidor de aplicações. Escrito em Python, com alguns módulos críticos otimizados para performance em C, o Zope pode ser executado em plataformas Unix e NT e oferece aos desenvolvedores as seguintes funcionalidades:

  • Criação de aplicações através do uso de templates html;
  • Gerenciamento e desenvolvimento de aplicações através de interface Web;
  • Banco de dados orientado a objetos;
  • Controle de acesso com a possibilidade de criação de perfis de usuários;
  • Indexação de documentos e pesquisa por palavra-chave;
  • Acesso a bancos de dados;
  • Suporte à criação de versões;
  • Suporte nativo aos protocolos http, ftp, Webdav e XML-RPC;
  • Integração com outros servidores http;
  • Possibilidade de adição de módulos desenvolvidos em Python.

As aplicações para o Zope são criadas utilizando-se templates html escritos na linguagem `Document Template Markup Language' (dtml). Vemos no quadro na página ao lado um exemplo de um documento dtml que cria uma tabela contendo os identificadores, nomes e tipos dos objetos armazenados em uma pasta.

No exemplo, `PARENTS[0]' é uma referência ao objeto pasta que contém o arquivo index_html; `objectValues' é um método que pertence a esta pasta e retorna uma lista contendo referências para todos os objetos nela contidos. O comando `dtml-in' interage através de todas estas referências e executa, para cada uma delas, o código contido dentro do bloco <dtml-in> ... </dtml-in>. Os objetos são armazenados hierarquicamente pelo Zope em seu banco de dados. Eles representam pastas, documentos, ../imagens, consultas SQL, etc. As requisições recebidas dos clientes são mapeadas para esta estrutura hierárquica por um dispositivo chamado `Object Request Broker' (ORB). Quando o ORB recebe, por exemplo, uma URL como: /Representantes/pesquisar?estado=RS, ele automaticamente localiza no banco de dados a pasta `Representantes' e invoca o método dtml `pesquisar', passando-lhe uma variável chamada `estado', cujo conteúdo é `RS'. O conteúdo da variável pode ser acessado com uma simples linha <dtml-var estado> ou passado como parâmetro para uma consulta SQL.

Gerenciamento e desenvolvimento de aplicações através de uma interface Web

Figura 1

As aplicações para o Zope podem ser criadas e gerenciadas através de sua interface de gerenciamento Web, apresentada na figura 1. Os objetos podem ser manipulados clicando-se nas etiquetas que dão acesso às suas diferentes `views'. A figura 2 mostra a `view' de edição de um objeto `dtml Document'. Infelizmente, os recursos de edição disponíveis em um formulário html são limitados. Uma boa alternativa é utilizar o Emacs ou XEmacs, através de seus módulos ange-ftp ou efs, para acessar o site Zope via ftp e editar os seus documentos.

Banco de dados orientado a objetos

O Zope armazena os objetos em um banco de dados transacional orientado a objetos denominado Zope Object Data Base (ZODB), atualmente em sua terceira versão. Cada objeto pode receber, através de programa ou da interface de gerenciamento, atributos adicionais definidos pelo desenvolvedor da aplicação. Cada requisição Web é tratada atomicamente como uma transação pelo banco de dados. Se algum erro ocorrer em uma aplicação durante o processamento de uma requisição, a transação inteira será cancelada e os objetos por ela afetados retornarão ao estado em que estavam antes do seu início.

Controle de acesso com a possibilidade de criação de perfis de usuários

O controle de acesso disponibilizado pelo Zope permite o enquadramento dos usuários em perfis e o ajuste fino de seus direitos, incluindo a definição de quais tipos de objetos podem ser criados por eles. Os direitos aplicáveis a um objeto dependem do tipo do objeto e podem ser editados através de sua view `Security'.

Indexação de documentos e pesquisa por palavra-chave

Outra característica importante do Zope é o seu mecanismo de indexação e busca através de palavras-chave, disponibilizado através dos objetos ZCatalog. Estes objetos permitem que você crie diversos índices ou catálogos em seu site, indexando os documentos pelo seu conteúdo ou por seus atributos.

Acesso a bancos de dados.

Uma plataforma de aplicações para a Web não seria completa se não permitisse o acesso aos bancos de dados SQL mais utilizados no mercado. Atualmente, estão disponíveis adaptadores para os servidores: MySQL, Sybase e Oracle. Um adaptador para o PostGreSQL está em fase de desenvolvimento. Para plataformas NT, está disponível um adaptador ODBC, permitindo acesso a todos os bancos de dados para os quais esta interface está disponível.

Suporte à criação de versões.

O Zope também permite que você trabalhe com versões, `views' privadas de uma pasta. Todas as modificações realizadas em uma versão ficam invísiveis ao usuário da aplicação enquanto elas não forem efetivadas pelo seu desenvolvedor.

Suporte nativo aos protocolos http, ftp, WebDAV e XML-RPC.

O Zope possui suporte nativo a http, ftp e WebDAV através do seu próprio servidor Web, o ZServer. XML-RPC também é suportado. Para saber mais sobre o uso de XML-RPC com o Zope, leia o artigo de Jon Udell, XML-RPC Programming with Zope, www.byte.com/column/BYT19991021S0014.

Integração com outros servidores http

O uso do ZServer como servidor http do Zope não é obrigatório. Se você necessita de uma funcionalidade não disponível no ZServer, como, por exemplo, suporte a SSL, você pode integrar o Zope a outros servidores http, tais como o Apache, através de um mecanismo conhecido como Persistent CGI (PCGI).

Possibilidade de adição de módulos desenvolvidos em Python

Permite a adição de módulos desenvolvidos em Python, conhecidos no jargão do Zope como `produtos'. No site do Zope existem, disponíveis para download, vários produtos que foram contribuições de outros usuários.

Antes de sair desenvolvendo alguma coisa, para economizar trabalho, dê uma olhada neles. Um interessante é o Squishdot squishdot.org, um sistema de publicação de notícias inspirado pelo Slashdot www.slashdot.org.

O problema da documentação

Infelizmente, a pessoa que desejar desenvolver aplicações com o Zope deve superar o obstáculo da falta ou insuficiência de documentação, mesmo em inglês. Não existe um manual estruturado sobre o Zope. Estão disponíveis apenas alguns guias e diversos `How-tos'. Este problema aparentemente está para ser solucionado. No último dia 2 de novembro foi anunciada, em uma mensagem para lista de discussão do Zope, a publicação de um livro pela O'Reilly and Associates, conhecida editora de títulos na área de Unix.

Conclusão

O Zope é um poderoso servidor `open source' de aplicações que provê um conjunto importante de funcionalidades básicas para aplicações Web. Se você não se assusta com documentação escrita em inglês e necessita desenvolver aplicações Web, ele é uma opção que merece ser avaliada.

Figura 2


Exemplo 1

<dtml-var standard_html_header>
<h2><dtml-var title_or_id></h2>
<table border="1">
<tr>
<th>Id</th><th>Nome</th><th>Tipo do objeto</th>
</tr>
<dtml-in "PARENTS 0 .objectValues()">
<tr>
<td>
<a href="<dtml-varid>">
<dtml-var id>
</a>
</td>
<td>
<dtml-var title>
</td>
<td>
<dtml-var meta_type>
</td>
</tr>
</dtml-in>
</table>
<dtml-var standard_html_footer>

Figura 2

Para saber mais

 

A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade