Ferramentas do usuário

Ferramentas do site


twsg:dicas:implementando_spec

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Próxima revisão
Revisão anterior
twsg:dicas:implementando_spec [2008/09/25 14:46] – created 150.163.2.58twsg:dicas:implementando_spec [2008/09/25 16:53] (atual) emerson
Linha 17: Linha 17:
   * Nesta fase convém implementar esses conceitos em arquivos de testes simples, para identificar se a TerraLib pode ser usada   * Nesta fase convém implementar esses conceitos em arquivos de testes simples, para identificar se a TerraLib pode ser usada
   * Só passe adiante se __confirmar que é possível__ implementar os conceitos da Spec na TerraLib   * Só passe adiante se __confirmar que é possível__ implementar os conceitos da Spec na TerraLib
 +
 +
  
 ===== 3. Modelar as classes C++ ===== ===== 3. Modelar as classes C++ =====
  
   * Como praticamente TODAS as Specs usam XML Schema para modelar seus conceitos, e poder validar seus XMLs, realize a tradução desses Schemas para classes C++ usando UML   * Como praticamente TODAS as Specs usam XML Schema para modelar seus conceitos, e poder validar seus XMLs, realize a tradução desses Schemas para classes C++ usando UML
 +  * O [[http://jude.change-vision.com/jude-web/product/community.html|Jude]] é uma boa ferramenta para tal
 +  * Não confie em ferramentas que automatizem esse processo! Só a prática leva ao entendimento completo do problema e a modelagem correta dos conceitos. Existem **várias sutilezas** nos XML Schemas! Os próprios XSDs da Spec XSD são muito difíceis de entender
 +  * O diagrama de classes em UML vai ajudá-lo bastante na hora de implementar as classes em C++
 +
 +\\ FIXME colocar exemplos
 +
 +
 +===== 4. Implementar a Spec =====
 +
 +  * A fase de implementação consiste em traduzir os diagramas UML para classes em C++
 +  * Copie a documentação da Spec (no texto ou no Schema) para a documentação da classe -> esses dados passam a fazer parte da implementação
 +  * Implemente as classes se preocupando sempre com os métodos ''writeToXML'' e ''readFromXML'', que são o núcleo da Spec -> usar as classes e funções disponíveis no pacote ''xml'' do TerraOGC
 +  * Se for implementar um formato, faça os métodos de conversão de/para conceitos TerraLib (Exemplos: TeKMLPolygon <-> TePolygon, TeGMLPolygon <-> TePolygon)
 +  * Se for implementar um serviço, siga os passos seguintes:
 +
 +==== 4.1 Classes comuns ====
 +
 +  * É a implementação constante do item 4, ou seja, implementar as classes comuns do serviço
 +  * ''writeToXML'' e ''readFromXML'' serão usados nas partes cliente e servidor
 +
 +==== 4.2 Classes servidor ====
 +
 +  * É a implementação da interface do serviço como um servidor
 +  * Esta parte é necessária pois podemos construir várias **comunicações** do servidor, como CGI, ou até SOAP
 +  * É nesta fase que serão aplicados os conhecimentos da fase 2, que envolve fazer um mapeamento dos conceitos TerraLib para o serviço em questão
 +  * É nessa parte que realmente entra a TerraLib
 +
 +==== 4.3 Servidor CGI ====
 +
 +  * Uma implementação bastante simples do servidor
 +  * É o único aplicativo em todo o processo, todos os demais são bibliotecas (SOs ou DLLs)
 +  * Usar as funções CGI disponíveis no pacote ''common'' do TerraOGC
  
 +==== 4.4. Classes cliente ====
  
 +  * Também é interessante montar uma classe, similar ao que ocorre no servidor, para o cliente
 +  * Aqui são usadas algumas funções de conexão HTTP providas pela [[http://curl.haxx.se/libcurl/|libcURL]]
 +  * Seria interessante criar um pacote com essas classes comuns aos clientes -> será definido (TBD). Por enquanto usar os exemplos disponíveis nos pacotes ''wmsclient'' e ''wfsclient''
  
twsg/dicas/implementando_spec.1222353974.txt.gz · Última modificação: 2008/09/25 14:46 por 150.163.2.58