Adicionando suporte para rastreamento SOAP a aplicativos cliente
Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.
Durante o desenvolvimento de aplicativos cliente Web para XML Web Services nativos no SQL Server, uma ferramenta útil para a solução de problemas é a capacidade de rastrear e observar as mensagens SOAP que foram trocadas entre uma instância do SQL Server e o aplicativo cliente.
Este tópico apresenta um exemplo de biblioteca de classes que implementa cabeçalhos de extensão SOAP que oferecem suporte para rastreamento SOAP de um projeto de aplicativo cliente no Visual Studio 2005. Quando integradas ao projeto, essas extensões rastreiam e exibem o conteúdo real das mensagens de solicitação e de resposta SOAP.
Essa biblioteca pode ser adicionada a projetos existentes de cliente SOAP do Visual Studio 2005. Isso inclui os aplicativos de exemplo fornecidos em Aplicativos de exemplo para enviar solicitações de HTTP SOAP Nativos. Recomendamos que você se familiarize com as informações conceituais e de procedimentos fornecidas em Definindo o servidor para escutar solicitações dos XML Web Services Nativos e em Gravando aplicativos cliente.
Além disso, se você não estiver familiarizado com o formato de mensagens SOAP, consulte os seguintes tópicos:
Observação |
---|
O procedimento a seguir pressupõe que você tenha criado um aplicativo cliente SOAP existente com o Visual Studio 2005 e adicionado uma referência Web ao ponto de extremidade HTTP SOAP que foi criado com o SQL Server, como mostrado em Enviando solicitações SOAP usando o cliente Visual Studio 2005 (C#). |
Para adicionar uma biblioteca de exemplos de rastreamento SOAP a um projeto do Visual Studio
Com o Bloco de Notas, copie e cole o conteúdo da Listagem de código C# para a biblioteca de classes de exemplo de rastreamento SOAP SQL e salve-o com o nome "SqlSoapTracer.cs" na mesma pasta que contém os arquivos de projetos de cliente SOAP.
No computador cliente, no grupo de programas Microsoft Visual Studio 2005, inicie o Microsoft Visual Studio 2005.
Clique em Abrir Projeto.
Procure e selecione o arquivo do seu projeto de cliente SOAP (.csproj).
Na janela Gerenciador de Soluções, execute as seguintes etapas:
Selecione o projeto pelo nome, clique com o botão direito do mouse, aponte para Adicionar e selecione Adicionar Item Existente.
Na caixa de diálogo Adicionar Item Existente, procure e selecione o arquivo SqlSoapTracer.cs no local onde você o salvou na etapa 1.
Selecione Mostrar Todos os Arquivos, expanda o nó Referências da Web e selecione o arquivo Reference.cs.
Na janela Editor de Códigos, atualize o arquivo Reference.cs localizando os pontos de entrada para seus métodos Web.
Por exemplo, se você estiver adicionando suporte para rastreamento SOAP ao projeto de exemplo fornecido em Enviando solicitações SOAP usando o cliente Visual Studio 2005 (C#), os pontos de entrada de método Web publicados para os vários métodos Web incluídos nesse projeto serão exibidos da seguinte maneira:
public object[] GetCustomerInfo([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] System.Data.SqlTypes.SqlString CustomerID, [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] ref System.Data.SqlTypes.SqlString OutputParam) { object[] results = this.Invoke("s2MsgGetCustomerInfoSoapIn", new object[] { CustomerID, OutputParam}); OutputParam = ((System.Data.SqlTypes.SqlString)(results[1])); return ((object[])(results[0])); } ... public System.Data.SqlTypes.SqlInt32 UDFReturningAScalar() { object[] results = this.Invoke("s1MsgUDFReturningAScalarSoapIn", new object[0]); return ((System.Data.SqlTypes.SqlInt32)(results[0])); }
Para adicionar suporte para rastreamento SOAP quando os métodos Web forem executados em código de cliente, adicione a chamada snoopattribute() a seguir ao código Reference.cs diretamente antes do ponto de entrada de cada método Web a ser rastreado, como mostrado nas linhas de código a seguir.
[snoopattribute()] public object[] GetCustomerInfo(...) {...} ... [snoopattribute()] public System.Data.SqlTypes.SqlInt32 UDFReturningAScalar() {...}
Isso registra uma extensão SOAP que invoca o rastreamento SOAP desses métodos Web quando eles são executados.
Usando suporte para rastreamento SOAP para testar o aplicativo
Para usar as extensões de suporte para rastreamento SOAP fornecidas no código anterior quando você executar o aplicativo cliente SOAP no ambiente de desenvolvimento do Visual Studio, execute as seguintes etapas:
Usando o SQL Server Management Studio ou o utilitário de comando osql, adicione um método Web para expor o procedimento armazenado ou a função definida pelo usuário que você deseja testar no ponto de extremidade.
Para obter mais informações, consulte Expondo a programação SQL à Web.
No Visual Studio, se você ainda não tiver feito isso, codifique, depure e compile um projeto de aplicativo cliente SOAP.
Opcionalmente, você pode usar o projeto de exemplo fornecido em Enviando solicitações SOAP usando o cliente Visual Studio 2005 (C#).
Adicione a classe SqlSoapTracer.cs ao projeto como descrito na seção anterior.
Salve, compile e execute o aplicativo cliente no ambiente de desenvolvimento do Visual Studio.
Quando o aplicativo for executado, será criado um objeto visualizador da Área de Transferência do Windows. Quando os métodos Web habilitados para rastreamento na etapa 3 forem executados, esse objeto visualizador exibirá o seguinte para cada um dos métodos Web:
A mensagem de solicitação de cliente SOAP como gerada pelo código de cliente.
A mensagem de resposta servidor SOAP como retornada por XML Web Services nativos para SQL Server.
Para exibir o conteúdo da área de transferência depois que a atividade de rastreamento ocorrer, você poderá colar o conteúdo atual da Área de Transferência do Windows no Bloco de Notas.
Como o suporte para rastreamento SOAP funciona
O mecanismo de rastreamento usa retornos de chamada e eventos predefinidos que fazem parte da maneira como os XML Web Services nativos no SQL Server são implementados. Esses incluem dois eventos: BeforeSerialize e AfterSerialize.
Esses eventos e retornos de chamada permitem que a solicitação SOAP e sua resposta SOAP correspondente do servidor sejam interceptadas e redirecionadas para um fluxo de saída. No código fornecido, a saída é redirecionada para um objeto System.Windows.Forms.Clipboard. O objeto Clipboard recebe e exibe as mensagens de solicitação do cliente SOAP e as mensagens de resposta do servidor que são trocadas por meio da execução de métodos Web que são precedidos diretamente por chamadas snoopattribute().
A saída da solicitação do cliente e a resposta emitida pelo SQL Server em resposta a ela serão exibidas em um formato semelhante à estrutura de mensagens de solicitação SOAP e à estrutura de mensagens de resposta SOAP. Na resposta, qualquer resultado gerado pelo servidor, como a saída XML serializada se o método Web for executado com êxito, também será exibido. Em caso de erro, uma estrutura de mensagens de falha SOAP será exibida, em vez da saída XML serializada, na resposta retornada pelo servidor.