Original Article: The gSOAP Toolkit for SOAP and REST Web Services and XML-Based Applications
Author: FSU

O kit de ferramentas gSOAP para SOAP e Serviços Web REST e aplicativos baseados em XML

O kit de ferramentas gSOAP é um kit de desenvolvimento de software C e C ++ para Serviços Web SOAP e REST XML e genérico C/C++ ligações de dados XML. O kit de ferramentas analisa WSDLs e esquemas XML (separadamente ou como um conjunto combinado) e mapeia os tipos de esquema XML e os protocolos de mensagens XML SOAP/REST para um código C e C ++ fácil de usar e eficiente. Ele também suporta a exposição de aplicativos (preexistentes) C e C ++ como serviços da Web XML por auto-geração de código de serialização XML e especificações WSDL. Ou você pode simplesmente usá-lo para Converter automaticamente XML para/a partir de dados C e C ++. O kit de ferramentas suporta opções para gerar ANSI puro C ou C ++ com ou sem STL.

O kit de ferramentas gSOAP é usado pela maioria das Top 500 empresas ricas e todos as Top 15 empresas de tecnologia. Velocidade, confiabilidade e flexibilidade, juntamente com um histórico comprovado e usado por alguns dos maiores fornecedores de tecnologia, torna-a uma plataforma ideal para desenvolver aplicações usando serviços da Web e processamento XML. As aplicações incluem sistemas embarcados, dispositivos móveis, telecomunicações, roteadores, jogos on-line, Web TV, sistemas bancários, sistemas de leilão, saídas de notícias, sistemas de gerenciamento de rede, plataformas de computação em nuvem e rede e software de segurança. Veja por exemplo histórias de sucesso .

O kit de ferramentas gSOAP oferece uma solução C/C++ Solução de ligação de dados XML através de técnicas de codificação automática. Este poupa tempo substancial dos desenvolvedores para implementar XML Web Services em C / C ++. Além disso, o uso de ligações de dados XML simplifica significativamente o uso de XML em aplicativos mapeando automaticamente os tipos de dados XML para C / C ++. Os desenvolvedores de aplicativos não precisam mais ajustar a lógica do aplicativo para bibliotecas específicas e representações de dados centradas em XML, como DOM.

O kit de ferramentas é compatível com WS-I Perfil Básico 1.0a, 1.1 e 1.2, passou os testes de interoperabilidade da vinculação de Data do W3C e é compatível com outras pilhas SOAP/REST, como WCF, .NET e Axis. Destaques são suporte para endereçamento e protocolos de segurança, streaming de anexos (MTOM, MIME, DIME) para transferências binárias eficientes. A transferência através de HTTP (S), TCP / UDP e outros protocolos de transporte é suportada usando plugins convenientes (ou callbacks definidos pelo usuário caso você queira substituir a E/S).

O kit de ferramentas gSOAP implementa uma ligação de dados ANSI C e C ++ XML através do uso de tecnologias de compilação. Essas tecnologias mapeiam esquemas XML para definições C/C ++ e vice-versa. Há duas vantagens principais para esta abordagem. Primeiramente, forte digitação garante o uso seguro de dados digitados em seu aplicativo e também garante que os dados XML passaram a validação de análise de XML. Em segundo lugar, baseado em compilador análise e validação de esquemas específicos é mais eficiente do que a maioria das outras técnicas de análise XML.

O kit de ferramentas gSOAP também consome e gera esquemas XML e WSDL (XSD). Ele mapeia os tipos de dados C/C ++ e as funções de aplicativo existentes para o WSDL, apoiando e simplificando a conversão do código legado em serviços da Web. A portabilidade de código foi conseguida para muitas plataformas, incluindo sistemas incorporados e software em tempo real.

Começando: Um tutorial rápido sobre o gSOAP. Há também outro como começar com gSOAP.

Guia de usuário: O guia com tudo gSOAP. Mas você pode querer começar com a compreensão Ligações de Dados XML

Folha de informações: Uma visão geral rápida das principais características.

Licenciamento: Duplo licenciado como código aberto GPL v2 e licença de uso comercial (disponível para compra).

Download: comece hoje.

Por que usar o gSOAP?

Aqui está um resumo de 16 razões pelas quais acreditamos que você pode querer experimentar gSOAP para seus projetos:
  1. Portabilidade: O gSOAP suporta a maioria das plataformas, incluindo sistemas embutidos e sistemas operacionais pequenos (por exemplo, WinCE, Symbian e PalmOS). A portabilidade é testada para Windows (98, XP, Vista), Linux, Unix, Mac OS X, Solaris, HP-UX, AIX, FreeBSD, TRU64, Irix, QNX e VxWorks.
  2. Estabilidade: O software está maduro. Desenvolvimento e testes ocorreram ao longo de vários anos desde 2001. O software é usado por muitos projetos industriais e produtos.
  3. Ampla base de usuários: Cerca de um milhão de downloads desde 2003, mais de 6.000 membros da lista de discussão e milhares de contratos de licença/suporte com empresas. Aqui está uma breve história de sucesso e um resumo de depoimentos de usuários.
  4. Pacote tudo-em-um: Independência de ferramentas de terceiros e bibliotecas garante compilações bem-sucedidas e execução de execução confiável.
  5. Código aberto: Código aberto livre para uso não-comercial (GPL v2). licenciamento de uso comercial disponível para compra.
  6. C e C++ suporte: suporta o puro ANSI C e desenvolvimento de aplicativos C/C ++ misto.
  7. Abrangentes ligações de dados XML: O kit de ferramentas gSOAP implementa uma ligação de dados C/C ++ pura e nativa a XML usando mapeamentos automáticos e geração de código para tipos de dados C e C ++ definidos pelo usuário. O kit de ferramentas serializa automaticamente estruturas de dados baseadas em ponteiros, incluindo gráficos cíclicos, e suporta STL (em parte), uniões, enumerações e herança de classe. Tente o demo on-line (requer URL de WSDL ou XSD).
  8. Interoperabilidade e Conformidade: O kit de ferramentas segue as recomendações de conformidade do WS-I Basic Profile 1.0a, 1.1 e 1.2. Ele avisa sobre possíveis problemas de interoperabilidade antes de criar um novo aplicativo de serviço da Web, para que você não precise passar por outro ciclo de desenvolvimento para tornar seus serviços compatíveis. Além disso, um relatório está disponível para verificar o cumprimento. Em adição, os Resultados da interoperabilidade da ligação de dados para W3C para gSOAP mostram mapeamentos XML para tipos excepcionalmente bons (mapeamentos XML para tipos verdadeiros, não XML para estruturas estilo DOM).
  9. Protocolos padrão da indústria: SOAP 1.1 / 1.2 (codificação RPC e estilos de documento / literal), WSDL 1.1 / 2.0 e UDDI v2. WS-Policy 1.2 / 1.5, WS-SecurityPolicy 1.2, WS-ReliableMessaging, WS-Endereçamento. Suporta os tipos XSD primitivos de esquema XML, tipos simples, tipos complexos, extensão, restrição, elementos, atributos, referências de elemento/atributo, sequência/todos/escolha, grupos, atributo Grupos, substituições, qualquer/qualquer Atributo, esquema importar/incluir/redefinir e matrizes SOAP (Incluindo arranjos dispersos polimórficos e multidimensionais).
  10. Transporte: HTTP / S, TCP, UDP (SOAP sobre UDP), MIME (SwA), DIME (streaming), MTOM (streaming), HTTP1.0 / 1.1, IPv4, IPv6, RSS, XML-RPC, Endereçamento WS. A pilha HTTP suporta mensagem HTTP / 1.1 POST / GET SOAP / XML com compressão, fragmentação, mantém-vivo, registro e criptografia SSL.
  11. Segurança: HTTPS e WS-Security: autenticação, códigos, assinaturas digitais.
  12. Rapidez: O código gerado pelo compilador específico do esquema é rápido. A análise comparativa mostra velocidades comparáveis ou melhores do que os analisadores XML mais rápidos (relatados por artigos técnicos revisados por pares). As latências típicas de invocação de serviço SOAP de ida e volta são bem inferiores a 1ms.
  13. Depuração e teste: No modo de depuração gera registros de transporte e atividade, também no modo de depuração, o gerenciamento automático de memória avisa sobre vazamentos, as ferramentas geram mensagens XML de exemplo (de WSDL) para testes on- e off-line, geração automática de código de servidor de teste de eco para teste de cliente.
  14. Pequena pegada: Os aplicativos cliente podem ter menos de 100K com uma pegada total de memória em tempo de execução de menos de 150K. Gerenciamento de memória usa coleta de lixo assim dados (desserializados) podem ser limpos sem um incômodo.
  15. Numerosos exemplos: O pacote de software inclui muitos exemplos de código, incluindo autônomo HTTP / 1.1 e proteção HTTPS no servidor web.
  16. Integração com o servidor Web: Inclui interfaces Apache_mod, IIS, WinInet, CGI e FastCGI para integrar seus serviços.
  17. Manutenção e desenvolvimento ativos: O software é rico em recursos, mas há sempre novos recursos a serem desejados. Veja as últimas notícias sobre os desenvolvimentos atuais e os planos futuros.

Quais são as ferramentas gSOAP?

Faça o download do pacote gSOAP mais recente nosite do projeto gSOAP SourceForge. O pacote de distribuição gSOAP inclui duas ferramentas de compilador para desenvolver seus aplicativos:
  • O analisador WSDL 'wsdl2h'. Esta ferramenta converte arquivos WSDLs e XSD em definições C/C ++ anotadas.
  • O 'soapcpp2' stub e esqueleto compilador. Esta ferramenta gera código RPC e serializadores XML das definições anotadas C/C ++.
O analisador 'wsdl2h' converte WSDL em especificações de arquivo de cabeçalho gSOAP de serviços da Web. Esta especificação dá uma visão transparente C/C ++ da funcionalidade do servidor. O arquivo de cabeçalho é processado por 'soapcpp2' para gerar os canhotos e esqueletos do código fonte para invocar o serviço ou criar um novo serviço baseado no WSDL.

A próxima seção explica como essas ferramentas são usadas para criar aplicativos cliente e servidor.

Uma maneira rápida de fazer

Usamos o gSOAP 'wsdl2h' analisador WSDL para obter a especificação de arquivo de cabeçalho gSOAP de um serviço da Web a partir de um documento WSDL.

Para obter um arquivo de cabeçalho de um documento WSDL, execute 'wsdl2h' em um WSDL:

wsdl2h -o outfile.h infile.wsdl
Onde infile.wsdl pode ser um arquivo WSDL residente ou um local da Web do WSDL. O outfile.h é o arquivo de saída gerado. Por exemplo:
wsdl2h -o XMethodsQuery.h http://www.xmethods.net/wsdl/query.wsdl
Isso gera o arquivo de cabeçalho XMethodsQuery.h. O arquivo de cabeçalho define o serviço em um formato de cabeçalho C/C ++ mais familiar que você pode navegar dentro de seu IDE (ou com Doxygen).

Em seguida, executamos o compilador gSOAP 'soapcpp2' no arquivo de cabeçalho gSOAP para produzir o código-fonte para implementar o aplicativo cliente. O canhoto e esqueleto compilador 'soapcpp2' gera proxies (e canhotos RPC) para o seu aplicativo cliente, como ilustrado abaixo.


A biblioteca de tempo de execução gSOAP fornece uma camada de transporte com uma pilha HTTP em cima do TCP/IP, bem como o SSL seguro e suporte de anexos DIME/MIME.

Desenvolver um serviço que execute o analisador gSOAP 'wsdl2h' em um WSDL para criar um arquivo de cabeçalho gSOAP. O arquivo de cabeçalho é compilado com o compilador 'soapcpp2':


O compilador 'soapcpp2' gera os esqueletos de serviço da Web C/C ++. Você também pode ter um aplicativo legado C/C ++ e desenvolver um serviço simplesmente digitando as operações do método de serviço da Web C/C ++ e os tipos de dados em um arquivo de cabeçalho. O compilador 'soapcpp2' gera o código-fonte do seu projeto e produz um WSDL para anunciar seu serviço da Web.

Exemplo de cliente

O Serviço Web de cotação de ações diferido da XMethods oferece uma cotação de ações com atraso para um determinado nome do ticker, veja XMethods cotação de Ações Atrasadas para detalhes. A descrição WSDL do Serviço da Web de cotação de ações tem os seguintes detalhes:
 
URL do ponto de extremidade:  http://services.xmethods.net:80/soap
Ação SOAP:  "" (2 citações) 
Espaço para nome do método remoto:  urn:xmethods-delayed-quotes
Nome do método remoto:  getQuote
   Parâmetro de entrada:  símbolo do tipo xsd:string
   Parâmetro de saída:  Resultado do tipo xsd:float
O gSOAP 'wsdl2h' WSDL analisador de ferramenta converte o WSDL:
wsdl2h -c -o quote.h http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl
As -c opções garantem que o aplicativo cliente possa ser desenvolvido em C. O arquivo gerado quote.h contém:
//gsoap ns1 service name: net_DOTxmethods_DOTservices_DOTstockquote_DOTStockQuoteBinding
//gsoap ns1 service type: net_DOTxmethods_DOTservices_DOTstockquote_DOTStockQuotePortType
//gsoap ns1 service port: http://66.28.98.121:9090/soap
//gsoap ns1 service namespace: urn:xmethods-delayed-quotes
//gsoap ns1 service documentation: Definições geradas pelo gSOAP WSDL parser 1.0
// Service net.xmethods.services.stockquote.StockQuoteService : net.xmethods.services.stockquote.StockQuote web service
//gsoap ns1 service method-style: getQuote rpc
//gsoap ns1 service method-encoding: getQuote http://schemas.xmlsoap.org/soap/encoding/
//gsoap ns1 service method-action: getQuote urn:xmethods-delayed-quotes#getQuote
int ns1__getQuote(char *symbol, float &Result);
(Nota: o conteúdo pode variar dependendo da versão 'wsdl2h'.)

Porque o nome do serviço é um pouco longo, nós o renomeamos no arquivo de cabeçalho em algo mais simples por razões de conveniência:

//gsoap ns1 service name: Quote
O método de serviço é declarado como um ns1__getQuote protótipo de função que especifica todos os detalhes necessários para o canhoto gSOAP e compilador de esqueleto 'soapcpp2' para gerar a rotina de canhoto e código de ordenação de parâmetro para um aplicativo cliente para interagir com o serviço de Cotação de Ações Atrasadas.

O canhoto gSOAP e o compilador de esqueleto são invocados neste quote.h arquivo de cabeçalho dentro de um IDE (por exemplo, MSVC ++ ou Borland C ++), de um criador de arquivo ou da linha de:

soapcpp2 -c quote.h
A -c opção assegura que o código gerado é puro C.

A seguinte função é gerada pelo compilador gSOAP:

int soap_call_ns1__getQuote(struct soap *soap, char *URL, char *action, char *symbol, float &Result);
Observe que os parâmetros do soap_call_ns1__getQuote Proxy são idênticos aos ns1__getQuote Protótipo de função com três parâmetros de entrada adicionais: soap e um ambiente de tempo operacional gSOAP, URL e o serviço Web SOAP URL do nó de extremidade passado como uma sequência de caracteres que deve ser NULL para usar o nó de extremidade especificado no WSDL e ação é uma string que deve indicar a ação SOAP exigido pelo serviço da Web, que deve ser NULL para usar o SOAPAção especificado no WSDL. A utilização do prefixo ns1__ no nome do método remoto na declaração de protótipo de função serve como um prefixo de conjunto de nomes para o método remoto. Um prefixo de conjunto de nomes é distinguido do nome da função por um par de sublinhados como em ns1__getQuote.

O seguinte programa de cliente C invoca o proxy para obter as cotações de ações mais recentes da IBM a partir do serviço de cotações de ações diferidas da XMethods:

#incluir "soapH.h" // obter o stub gerado 
#incluir "Quote.nsmap" // obtenha a tabela de mapeamento de conjunto de nomes XML gerada para o serviço Quote 
main() 

   struct soap *soap = soap_new();
   float quote; 
   if (soap_call_ns1__getQuote(soap, NULL, NULL, "IBM", quote) == SOAP_OK) 
      printf("Current IBM Stock Quote = %g\n", quote);
   else // um erro ocorreu 
      soap_print_fault(soap, stderr); // Exibir a falha SOAP no fluxo stderr 
}
Um aplicativo cliente C ++ pode usar a classe proxy gerada, como mostrado neste exemplo:
#incluir "soapQuoteProxy.h" // Obter proxy
#incluir "Quote.nsmap" // Obter ligações de conjunto de nomes
int main()
{
   Quote q;
   float r;
   if (q.ns1__getQuote("IBM", r) == SOAP_OK)
      std::cout << r << std::endl;
   else
      soap_print_fault(q.soap, stderr);
   return 0;
}
Isso pressupõe que o código foi produzido omitindo o -c, opção para 'wsdl2h' e 'soapcpp2'.

exemplo de serviço Web

Use o analisador gSOAP 'wsdl2h' WSDL para criar um arquivo de cabeçalho para um serviço que você deseja desenvolver, ou você pode escrever suas próprias especificações de arquivo de cabeçalho para desenvolver um novo serviço da Web. A última abordagem é útil quando você não tem um WSDL para começar e você não quer se preocupar com os detalhes da especificação WSDL. O exemplo a seguir especifica um novo serviço de calculadora Web SOAP em um arquivo de cabeçalho. Não usamos o analisador WSDL para criar um serviço, porque podemos definir o serviço em um arquivo de cabeçalho e deixar o compilador gSOAP 'soapcpp2' gerar um WSDL para nós. Queremos desenvolver um serviço que implemente três métodos remotos usando a codificação SOAP RPC (nota: doc/lit é o padrão):
 
// Conteúdo do arquivo "calc.h": 
//gsoap ns service name: calculator
//gsoap ns service style: rpc
//gsoap ns service encoding: encoded
//gsoap ns service port: http://mydomain/path/calculator.cgi
//gsoap ns service namespace: urn:calculator
int ns__add(double a, double b, double &result); 
int ns__sub(double a, double b, double &result); 
int ns__sqrt(double a, double &result); 

Os métodos add e sub são destinados a adicionar e subtrair dois números de ponto flutuante duplos armazenados em parâmetros de entrada a e b e retornar o resultado da operação no resultado saída. O método sqrt destina-se a tomar a raiz quadrada do parâmetro de entrada a e retornar o resultado no parâmetro de saída resultado.

O canhoto gSOAP e o compilador de esqueleto são invocados neste arquivo calc.h de cabeçalho dentro de um IDE (por exemplo, MSVC ++ ou Borland C ++), de um criador de arquivo ou da linha de:

soapcpp2 calc.h

O compilador gera as rotinas de esqueleto e uma descrição WSDL do serviço. Aqui está um exemplo de aplicativo de serviço Calculadora que usa os esqueletos gerados. A rotina do soap_serve processa solicitações do cliente:

// Conteúdo do arquivo "calc.cpp": 
#incluir "soapH.h" 
#incluir "calculator.nsmap" 
#incluir <math.h> 
main() 

   soap_serve(soap_new()); // Chamar o despachante de solicitação de método remoto de entrada 

// Implementação do método remoto "add": 
int ns__add(struct soap *soap, duplo a, duplo b, duplo &resultado) 

   resultado = a + b; 
   return SOAP_OK; 

// Implementação do método remoto "sub": 
int ns__sub(struct soap *soap, duplo a, duplo b, duplo &resultado) 

   result = a - b; 
   return SOAP_OK; 

// Implementação do método remoto "sub": 
int ns__sqrt(struct soap *soap, duplo a, duplo &result) 

   if (a >= 0) 
   { 
      resultado = sqrt(a); 
      return SOAP_OK; 
   } 
   outro
   { 
      retorno soap_sender_fault(soap, "Raiz quadrada de valor negativo "," Eu só posso calcular a raiz quadrada de um valor não negativo");
   } 

A implementação dos métodos remotos devolve um código de estado SOAP. O código SOAP_OK denota sucesso, enquanto soap_sender_fault retorna uma exceção. Este aplicativo é destinado a ser executado como um aplicativo CGI no local especificado (http: //mydomain/path/calculator.cgi). No entanto, você pode criar um servidor Web HTTP/HTTPS autônomo que ofereça conteúdo HTML dinâmico regular e serviços Web SOAP/XML, consulte o gSOAP servidor web (Captura de tela). Você também pode usar Apache_mod, WinInet, IIS ou CGI rápido. Apache, WinInet e IIS são recomendados em relação a serviços autônomos e fornecem balanceamento de carga, controle de acesso, rastreamento e mais.

Citando o gSOAP: Publicações

Ao citar o projeto gSOAP, por favor cite o seguinte artigo que introduziu pela primeira vez gSOAP: Outras publicações relacionadas ao gSOAP e serviços da Web:
  • Robert A. van Engelen, empurrando o Envelope SOAP com Serviços da Web para Computação Científica, nos trabalhos da Conferência Internacional sobre Serviços da Web (ICWS), 2003, páginas 346-354.
  • Robert van Engelen, Gunjan Gupta, e Saurabh Pant, desenvolvimento de Serviços da Web para C e C++, Em IEEE Jornal Computacional da Internet, março de 2003, páginas 53-61.
  • Giovanni Aloisio, Massimo Cafaro, Daniele Lezzi, e Robert van Engelen, Serviços da Web Seguros com Globus GSI e gSOAP, Nos trabalhos da EUROPE 2003.
  • Robert van Engelen, técnicas de geração de código para desenvolver serviços da Web para dispositivos incorporados, Nos trabalhos do 9º Simpósio ACM sobre Computação Aplicada SAC, Nicosia, Chipre, 2004, páginas 854-861.
  • Robert van Engelen, construindo Autômatos de Estado Finito para Serviços Web XML de Alto Desempenho, Nos trabalhos do Simpósio Internacional sobre Serviços da Web (ISWS), 2004, páginas 975-981.
  • M. Govindaraju, A. Slominski, K. Chiu, P. Liu, R. van Engelen, e M. Lewis, para caracterizar o desempenho dos Kits de Ferramenta SOAP, nos trabalhos do 5º Workshop Internacional IEEE/ACM sobre Grid Computing, páginas 365-372, Pittsburgh, EUA, 2004.
  • Giovanni Aloisio, Massimo Cafaro, Italo Epicoco, Daniele Lezzi, e Robert van Engelen, o plug-in GSI para gSOAP: segurança, desempenho e confiabilidade aprimorados, na conferência ITCC 2005, IEEE Press, Volume I, páginas 304-309.
  • Michael R. Head, Madhusudhan Govindaraju, Aleksander Slominski, Pu Liu, Nayef Abu-Ghazaleh, Robert van Engelen, Kenneth Chiu, Michael J. Lewis, Análise referencial para comunicação baseada em SOAP em Rede de Serviços da Web, no processo ACM / IEEE Supercomputação (SC), 2005.
  • Robert van Engelen, Wei Zhang, e Madhusudhan Govindaraju, rumo à Coerência de Objetos Remotos com Serialização de Objetos Compilados para Computação Distribuída com XML de Serviços da Web, no processo Compiladores para Computação Paralela (CPC), 2006, páginas 441-455.
  • Wei Zhang e Robert van Engelen, TDX: um analisador XML de tabela de alto desempenho, Nos trabalhos da conferência ACE SouthEast, 2006, páginas 726-731.
  • Wei Zhang e Robert van Engelen, Uma metodologia de trasmissão XML orientada por tabela para serviços Web de alto desempenho, nos trabalhos da Conferência Internacional sobre Serviços da Web do IEEE (ICWS), 2006, páginas 197-206, (prêmio de melhor papel estudantil).
  • Robert van Engelen, Madhusudhan Govindaraju, e Wei Zhang, explorando Coerência de Objetos Remotos em XML Web Services, em procedimentos da IEEE Conferência Internacional sobre Serviços da Web (ICWS), 2006, páginas 249-256.
  • M. Head, M. Govindaraju , R. van Engelen, e W. Zhang, Análise Comparativa de Processadores XML para Aplicações em Rede de Serviços da Web, nos trabalhos da Supercomputação 2006.
  • M. Cafaro, D. Lezzi, S. Fiore, G. Aloisio, e R. van Engelen, O plug-in GSI para gSOAP: a criação de serviços interoperáveis de grade segura inter-grid, nos trabalhos da Conferência Internacional sobre Processamento Paralelo e Matemática Aplicada (PPAM) 2007, seminário sobre Modelos, Algoritmos e Metodologias para o Ambiente de Computação com Grade (MAMGCE), Springer Verlag LNCS Volume 4967, páginas 894-901, 2008.
  • Robert van Engelen e Wei Zhang, Visão geral e avaliação das otimizações de desempenho de segurança de serviços da Web, para comparecer nos trabalhos da Conferência Internacional IEEE sobre Serviços Web (ICWS), 2008.
  • Wei Zhang e Robert van Engelen, Análise e Validação de XML de Alto Desempenho com Parâmetros de Gramática de Frases de Permutação, para comparecer nos trabalhos da Conferência Internacional IEEE sobre Serviços da Web (ICWS), 2008.
  • Robert A. van Engelen e Wei Zhang, Identificando oportunidades para otimização de desempenho de segurança de serviços da Web, para comparecer nos procedimentos da Conferência de Computação de Serviços IEEE (SCC),2008.
  • Robert A. van Engelen, um Quadro para Computação Orientada de Serviços com C e C ++ como Componentes de Serviços da Web, ACM Transações na Tecnologia da Internet, Volume 8, Edição 3, Artigo 12, Maio 2008.