Author: FSU
As ferramentas gSOAP para SOAP e Aplicativos baseados em REST Web Services e XML
O kit de ferramentas gSOAP é um kit de ferramentas de desenvolvimento de software C e C ++ para serviços da Web SOAP e REST XML e ligações genéricas de dados XML C/C++. O conjunto 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 SOAP/REST XML para um código C e C++ fácil de usar e eficiente. Ele também suporta expor (legacy) aplicações C e C++ como serviços Web XML, gerando automaticamente código de serialização XML e especificações WSDL. Ou você pode simplesmente usá-lo para converter automaticamente XML para/de C e C ++. O toolkit suporta opções para gerar puro ANSI C ou C ++ com ou sem STL. O kit de ferramentas gSOAP é usado pela maioria das principais empresas da Fortune 500 e de todas as 15 principais empresas de tecnologia. Velocidade, confiabilidade e flexibilidade, juntamente com um histórico comprovado e usado por alguns dos maiores fornecedores de tecnologia, o torna uma plataforma ideal para desenvolver aplicativos usando serviços da Web e processamento XML. Os aplicativos incluem sistemas embutidos, dispositivos móveis, telecomunicações, roteadores, jogos online, Web TV, sistemas bancários, sistemas de leilão, meios de comunicação, sistemas de gerenciamento de rede, plataformas de computação em nuvem e em nuvem e software de segurança. Veja por exemplo histórias de sucesso . O kit de ferramentas gSOAP oferece uma solução de ligação de dados XML abrangente e transparente C/C++ através de técnicas de auto-codificação. Isso economiza muito tempo aos desenvolvedores para implementar serviços Web XML em C/C ++. Além disso, o uso de ligações de dados XML simplifica significativamente o uso de XML em aplicativos mapeando automaticamente tipos de dados XML para C/C ++. Os desenvolvedores de aplicativos não precisam mais ajustar a lógica do aplicativo em bibliotecas específicas e representações de dados centrados em XML tais como os DOM. O kit de ferramentas é compatível com WS-I Basic Profile 1.0a, 1.1 e 1.2, os testes de interoperabilidade W3C Databinding aprovados e interage com outras pilhas SOAP/REST como WCF, .NET e Axis. Os destaques são o suporte para protocolos de endereçamento e segurança, anexos de transmissão (MTOM, MIME, DIME) para transferências binárias eficientes. Transferir HTTP (S), TCP/UDP e outros protocolos de transporte é suportado usando plugins convenientes (ou chamadas de definidas por usuário caso você deseje apagar o I/O). O kit de ferramentas gSOAP implementa uma ligação de dados XML ANSI C e C++ através do uso de tecnologias de compilação. Essas tecnologias mapeiam esquemas XML para definições C/C++ e vice-versa. Existem duas vantagens principais para essa abordagem. Em primeiro lugar, a digitação forte garante o uso seguro de dados digitados em seu aplicativo e também garante que os dados XML tenham passado a validação de análise XML. Em segundo lugar, a análise e validação específica do esquema baseada em compilador é mais eficiente do que a maioria das outras técnicas de análise de XML. O kit de ferramentas gSOAP também consome e gera esquemas WSDL e XML (XSD). Ele mapeia os tipos de dados C/C++ existentes e as funções da aplicação para WSDL, apoiando e simplificando a conversão de código legado em serviços da Web. A portabilidade do código foi alcançada para muitas plataformas, incluindo sistemas integrados e software em tempo real.Começando: um rápido tutorial de instruções sobre o gSOAP. Há também outro mais antigo como começar para começar com o gSOAP. Guia do Usuário: o guia com tudo o que gSOAP. Mas você pode querer começar com a compreensão de XML Data Bindings Planilha Informativa: 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.
Porque usar o gSOAP?
Aqui está um resumo de 16 razões pelas quais acreditamos que você pode querer tentar o gSOAP para seus projetos:- Portabilidade: o gSOAP suporta a maioria das plataformas, incluindo sistemas embarcados 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.
- Estabilidade: o software está maduro. O desenvolvimento e o teste ocorreram ao longo de vários anos desde 2001. O software é utilizado por vários projetos industriais e produtos.
- Base de usuários ampla: cerca de um milhão de downloads desde 2003, mais de 6.000 membros da lista de discussão e milhares de acordos de licença/suporte com empresas. Aqui está uma breve seleção das histórias de sucesso e um resumo do depoimentos dos usuários.
- Pacote tudo-em-um: independência de ferramentas e bibliotecas de terceiros garante compilações bem-sucedidas e execução de tempo de execução confiável.
- Código aberto: código aberto aberto para uso não comercial (GPL v2). Licensa de uso comercial disponível para compra.
- Suporte C e C++: suporta tanto o ANSI C puro quanto o desenvolvimento de aplicativos mistos C/C++.
- Ligações de dados XML abrangentes: 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 conjunto de ferramentas serializa automaticamente estruturas de dados baseadas em ponteiros, incluindo gráficos cíclicos, e suporta STL (em parte), sindicatos, enums e herança de classe. Experimente a demo on-line (requer URL de WSDL ou XSD).
- 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 potenciais problemas de interoperabilidade antes de criar um novo aplicativo de serviço da Web, portanto, você não precisa passar por outro ciclo de desenvolvimento para tornar seus serviços compatíveis. Além disso, um relatório está disponível para verificar a conformidade. Além disso, os resultados de interoperabilidade de W3C ligação de dados W3C para interoperabilidade gSOAP mostram mapeamentos XML-to-type excepcionalmente bons (mapeamentos de XML-to-type verdadeiros, e não estruturas de XML como as DOM).
- Protocolos padrão do setor: 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-Addressing. Suporta tipos de XSD primitivos de esquema XML, tipos simples, complexo-Tipos, extensão, restrição, elementos, atributos, referências de elemento/atributo, seqüência/tudo/escolha, grupos, grupos de atributos, substituições, any/anyAttribute, importar/incluir/redefinir esquema e matrizes SOAP (incluindo matrizes dispersas polimórficas e gamas de análise multidimensionais).
- Transporte: HTTP / S, TCP, UDP (SOAP-over-UDP), MIME (SwA), DIME (transmissão), MTOM (streaming), HTTP1.0 / 1.1, IPv4, IPv6, RSS, XML-RPC, WS- Endereçamento. A pilha HTTP suporta HTTP / 1.1 mensagens POST / GET SOAP / XML com compactação, fragmentação, keep-alive, logging, e encriptação SSL.
- Segurança: HTTPS e WS-Security: autenticação, tokens, assinaturas digitais.
- Rapidez: o código gerado pelo compilador específico do esquema é rápido. O benchmarking mostra velocidades comparáveis ou melhores do que os analisadores XML mais rápidos (relatados por documentos técnicos revisados por pares). As latências típicas de invocação do serviço SOAP de ida e volta são bem abaixo de 1ms.
- Depuração e teste: no modo de depuração gera logs 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 teste on-line e off-line, geração automática de servidor de teste de eco código para teste do cliente.
- Pequeno impacto: as aplicações cliente podem ter menos de 100K com uma pegada de memória de tempo de execução total inferior a 150K. O gerenciamento de memória usa coleta de lixo para que os dados (de-serializados) possam ser limpos sem problemas.
- Numerosos exemplos: o pacote de software inclui muitos exemplos de código, incluindo servidor HTTP autônomo HTTP/1.1 e HTTPS-secure.
- Integração do servidor Web: inclui interfaces Apache_mod, IIS, WinInet, CGI e FastCGI para integrar seus serviços.
- Manutenção e desenvolvimento ativos: o software é rico em recursos, mas sempre há novos recursos a serem desejados. Veja as últimas notícias sobre desenvolvimentos atuais e planos futuros.
O que são as ferramentas gSOAP?
Faça o download do pacote mais recente do gSOAP no site do projeto SourceForge do gSOAP. O pacote de distribuição gSOAP inclui duas ferramentas de compilação para desenvolver suas aplicações:- O analisador WSDL 'wsdl2h'. Esta ferramenta converte WSDLs e arquivos XSD em definições C/C++ anotadas.
- O compilador de "soapcpp2" e esqueleto. Esta ferramenta gera código RPC e serializadores XML a partir das definições de C/C++ anotadas.
Um Guia Rápido
Utilizamos o analisador WSDL do gSOAP 'wsdl2h' para obter a especificação do 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 |
wsdl2h -o XMethodsQuery.h http://www.xmethods.net/wsdl/query.wsdl |
A biblioteca de tempo de execução gSOAP fornece uma camada de transporte com uma pilha de HTTP em cima do TCP/IP, bem como suporte seguro SSL e DIME/MIME. Para desenvolver uma aplicação de serviço 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 do serviço da Web C/C++. Você também pode ter um aplicativo C/C++ legado e desenvolver um serviço simplesmente digitando as operações e os tipos de dados do método de serviço da Web C/C++ 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.
Cliente Exemplo
O XMethods Delayed Stock Quote Web Service fornece uma cotação de estoque atrasada para um nome de ticker dado, veja a Cotação de dados atrasada Xmethods para detalhes. A descrição WSDL do Serviço da Web de Tarefas Disponíveis fornece os seguintes detalhes:
|
wsdl2h -c -o quote.h http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl |
//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); |
//gsoap ns1 service name: Quote |
soapcpp2 -c quote.h |
int soap_call_ns1__getQuote(struct soap *soap, char *URL, char *action, char *symbol, float &Result); |
#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 } |
#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; } |
Exemplo Web Service
Use o analisador WSDL do gSOAP 'wsdl2h' para criar um arquivo de cabeçalho para um serviço que 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 possui um WSDL para começar e não quer se preocupar com os detalhes da especificação WSDL. O exemplo a seguir especifica um novo serviço de calculadora da 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 soapSppp2 de gSOAP 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); |
soapcpp2 calc.h |
// 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"); } } |
Citando gSOAP: Publicações
Ao citar o projeto gSOAP, cite o seguinte artigo que primeiro introduziu o gSOAP:- Robert A. van Engelen e Kyle Gallivan, Theo kit de ferramentas gSOAP para serviços Web e redes de comunicação Peer-to-Peer, nos trabalhos do 2º Simpósio Internacional IEEE sobre Cluster Computing e Grid (CCGrid2002), páginas 128-135, 21 de maio -24, Berlim, Alemanha.
- Robert A. van Engelen, Pushing the SOAP Envelope with Web Services for Scientific Computing, nos trabalhos da Conferência Internacional sobre Serviços Web (ICWS), 2003, páginas 346-354.
- Robert van Engelen, Gunjan Gupta e Saurabh Pant, desenvolvendo serviços da Web para C e C ++, no IEEE Internet Computing Journal, março de 2003, páginas 53-61.
- Giovanni Aloisio, Massimo Cafaro, Daniele Lezzi, e Robert van Engelen, Serviços Web seguros com Globus GSI e gSOAP, nos procedimentos da EUROPAR 2003.
- Robert van Engelen, Code Generation Techniques for Developing Web Services for Embedded Devices, nos trabalhos do 9º Simpósio ACM em Informática Aplicada SAC, Nicosia, Chipre, 2004, páginas 854-861.
- Robert van Engelen, Constructing Finite State Automata for High Performance XML Web Services, nos trabalhos do Simpósio Internacional sobre Serviços 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 ferramentas SOAP, nos trabalhos do 5º Workshop Internacional IEEE / ACM sobre Computação Grid, páginas 365-372, Pittsburgh, EUA, 2004.
- Giovanni Aloisio, Massimo Cafaro, Italo Epicoco, Daniele Lezzi, e Robert van Engelen, o plugin 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, Benchmark Suite for SOAP-based Communication in Grid Web Services, nos procedimentos da ACM / IEEE Supercomputação (SC), 2005.
- Robert van Engelen, Wei Zhang, e Madhusudhan Govindaraju, Toward Remote Object Coherence with Compiled Object Serialization for Distributed Computing with XML Web Services, nos trabalhos de Compiladores para Computação Paralela (CPC), 2006, páginas 441-455.
- Wei Zhang e Robert van Engelen, TDX: um Analisador XML de alta performance Table-Driven, nos trabalhos da conferência ACM SouthEast, 2006, páginas 726-731.
- Wei Zhang e Robert van Engelen, A Table-Driven XML Streaming Methodology for High-Performance Web Services, nos trabalhos da Conferência Internacional IEEE sobre Serviços Web (ICWS), 2006, páginas 197-206, (melhor prêmio de papel para estudantes).
- Robert van Engelen, Madhusudhan Govindaraju, e Wei Zhang, Exploring Remote Object Coherence in XML Web Services, em processos da Conferência Internacional IEEE sobre Serviços Web (ICWS), 2006, páginas 249-256.
- M. Head, M. Govindaraju , R. van Engelen, e W. Zhang, Benchmarking Processadores XML para Aplicações em Grid Web Services, nos trabalhos da Supercomputação 2006.
- M. Cafaro, D. Lezzi, S. Fiore, G. Aloisio, e R. van Engelen, The GSI plug-in for gSOAP: building cross-grid interoperable secure grid services, nos trabalhos da Conferência Internacional sobre Processamento Paralelo e Applied Mathematics (PPAM) 2007, workshop sobre Modelos, Algoritmos e Metodologias para Ambiente de Computação habilitado para Grid (MAMGCE), Springer Verlag LNCS Volume 4967, páginas 894-901, 2008
- Robert van Engelen e Wei Zhang, uma visão geral e avaliação das otimizações de desempenho de segurança de serviços da Web, para aparecer 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 Permutação Gramática de Frases Parsers, para aparecer nos trabalhos da Conferência Internacional IEEE sobre Serviços Web (ICWS), 2008.
- Robert A. van Engelen e Wei Zhang, Identificando Oportunidades para Otimizações de Desempenho de Segurança de Serviços da Web, para aparecer nos trabalhos da Conferência de Computação de Serviços IEEE (SCC), 2008.
- Robert A. van Engelen, Uma Estrutura para Computação Orientada a Serviços com Componentes de Serviços Web C e C ++, Transações ACM em Tecnologias de Internet, Volume 8, Edição 3, Artigo 12, maio de 2008.