Compartilhar via


Visão geral do serviço COM+ SOAP

O HTTP revolucionou o uso do computador, permitindo que as pessoas usassem um navegador da Web para facilitar o acesso às informações em um servidor remoto através de uma rede. Os XML Web Services revolucionaram o desenvolvimento de aplicativos, permitindo que aplicativos cliente chamem facilmente métodos remotos em uma rede.

Muitas vezes, é útil para um aplicativo cliente ser capaz de chamar um método implementado em um servidor remoto. Às vezes, o método faz uso de informações voláteis armazenadas no servidor remoto (por exemplo, um método que retorna o preço atual da ação correspondente a um determinado símbolo de ticker). Em outros momentos, o desenvolvedor deseja a capacidade de atualizar a implementação de métodos sem ter que reimplantar todos os aplicativos que o usam.

Assim como as páginas da Web, os XML Web Services são acessados por meio de um servidor Web, como o IIS, usando HTTP. No entanto, em vez de páginas da Web codificadas em HTML, esses pacotes HTTP contêm os parâmetros de entrada e saída de chamadas para um método implementado no servidor, codificado em SOAP.

Para usar um XML Web Service, você precisa saber a URL onde o serviço está exposto e o nome do método que deseja chamar, e você deve fornecer os parâmetros de entrada para o método. O padrão SOAP 1.1 fornece o seguinte exemplo de um pacote HTTP contendo uma chamada remota para um serviço Web XML em https://www.stockquoteserver.com/StockQuote, que retorna o preço atual da ação correspondente a um determinado símbolo de ticker.

POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; "charset=utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"

<SOAP-ENV:Envelope
xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="https://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:GetLastTradePrice xmlns:m="Some-URI">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Como o exemplo anterior ilustra, SOAP é uma instância XML que pode ser incorporada em uma solicitação HTTP. Da mesma forma, o resultado é retornado como um pacote HTTP com uma carga SOAP, conforme mostrado no exemplo a seguir.

HTTP/1.1 200 OK
Content-Type: text/xml; "charset=utf-8"
Content-Length: nnnn

<SOAP-ENV:Envelope
xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="https://schemas.xmlsoap.org/soap/encoding//">
<SOAP-ENV:Body>
<m:GetLastTradePriceResponse xmlns:m="Some-URI">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Embora seja útil ter alguma compreensão da infraestrutura subjacente aos serviços Web XML, o COM+ torna tão fácil criar e usar serviços Web XML que você não precisará se aprofundar nesse nível.

Você pode expor os métodos nas interfaces padrão dos componentes COM configurados em qualquer aplicativo COM+ como um serviço Web XML. Nenhuma consideração especial de programação é necessária ao gravar os componentes, exceto que os métodos que você deseja expor devem estar na interface padrão e o componente deve ser configurado (no catálogo COM+ do servidor). Você não precisa escrever código para se comunicar através de uma interface de rede ou para analisar SOAP. Para obter instruções detalhadas sobre como usar o serviço SOAP COM+ para criar um serviço Web XML, consulte Criando XML Web Services.

Quando você expõe um aplicativo COM+ como um serviço Web XML, informações detalhadas sobre a sintaxe de todos os métodos disponíveis de um serviço Web XML são publicadas automaticamente, usando o WSDL (Web Services Description Language). Essas informações são usadas por clientes que usam seu serviço Web XML.

COM+ fornece duas maneiras para você acessar e usar um serviço Web XML remoto, da seguinte maneira:

  • O modo WKO (objeto conhecido ) pode ser usado para acessar qualquer serviço Web XML que publique sua sintaxe usando WSDL, mesmo que esse XML Web Service não tenha sido criado usando COM+ ou mesmo Microsoft Windows.
  • O modo CAO (objeto ativado pelo cliente) pode ser usado somente para acessar XML Web Services criados pela exposição de aplicativos COM+. O modo CAO aumenta o desempenho usando conexões persistentes, um recurso não suportado pelo padrão SOAP atual.

Ambos os métodos permitem que os aplicativos cliente chamem os métodos de XML Web Services remotamente de forma direta, sem precisar escrever código para se comunicar por meio de uma interface de rede ou analisar SOAP. Para obter detalhes sobre como acessar XML Web Services em qualquer modo, consulte Acessando XML Web Services no modo CAO e Acessando XML Web Services no modo WKO.

Observação

COM+ suporta apenas a especificação SOAP-RPC, não a especificação SOAP-Document.

 

COM+ torna o uso de XML Web Services especialmente fácil, permitindo que você use aplicativos COM+ existentes como XML Web Services no modo CAO de forma completamente transparente. Se você exportar um aplicativo COM+ que foi exposto como um serviço Web XML do servidor, qualquer cliente que importe o aplicativo poderá usar de forma transparente o serviço Web XML do servidor sempre que o aplicativo importado for usado. Essa facilidade facilita a conversão de aplicativos COM+ existentes em serviços Web XML e a implantação desses serviços em uma rede.

O uso de XML Web Services tem várias vantagens exclusivas em relação a implementações alternativas de RPC (chamadas de procedimento remoto), incluindo o seguinte:

  • O SOAP é uma verdadeira implementação RPC multiplataforma, que aumenta a interoperabilidade.
  • Os XML Web Services oferecem suporte a métodos com parâmetros de entrada e saída.
  • Os XML Web Services são executados sobre HTTP, que geralmente podem penetrar em firewalls que podem bloquear outras implementações de RPC.
  • Quando um XML Web Service é implementado usando COM+, o desenvolvedor não precisa escrever nenhum código especializado; esta é uma tremenda vantagem sobre mecanismos RPC alternativos.

Observação

Os XML Web Services não oferecem suporte a chamadas assíncronas ou transparentemente transacionais. Use o serviço COM+ Queued Components quando precisar dessa funcionalidade.

 

Considerações de segurança do serviço COM+ SOAP