Share via


Invio di richieste SOAP utilizzando il client di Visual Studio 2005 (Visual Basic)

Questa caratteristica verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa caratteristica in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.

L'esempio riportato in questo argomento è simile a quello disponibile in Invio di richieste SOAP utilizzando il client di Visual Studio 2005 (C#). L'unica differenza consiste nel fatto che questo esempio è scritto in Visual Basic. In questo argomento, pertanto, vengono indicati solo il codice necessario e i passaggi per creare l'esempio.

Creazione di un esempio reale

A causa dei numerosi passaggi necessari per la creazione di questo esempio, l'applicazione viene suddivisa in quattro parti:

  • Parte 1: Esecuzione della stored procedure.

  • Parte 2: Esecuzione della query SQL senza parametri.

  • Parte 3: Esecuzione della query SQL con parametri.

  • Parte 4: Esecuzione della funzione definita dall'utente.

In ogni parte è disponibile un set di istruzioni. Al termine di ogni parte, è possibile verificare l'applicazione.

Per creare la classe proxy necessaria

  1. Creare una cartella nel computer per l'applicazione.

  2. Nel computer client avviare Microsoft Visual Studio 2005 dal gruppo di programmi Microsoft Visual Studio 2005.

  3. Fare clic su Nuovo progetto.

  4. Selezionare Progetti di Visual Basic in Tipo progetto.

  5. Nella casella di testo Nome specificare NativeSOAPApp2.

  6. Nella casella Percorso specificare il percorso della cartella in cui si desidera salvare il progetto.

  7. Selezionare Applicazione Windows come modello e quindi fare clic su OK.

  8. Nella finestra Esplora soluzioni fare clic con il pulsante destro del mouse su Riferimenti e quindi scegliere Aggiungi riferimento Web. Un altro modo per aggiungere un riferimento Web consiste nello scegliere Aggiungi riferimento Web dal menu Progetto.

  9. Nella casella Indirizzo digitare https://Server/sql?wsdl, dove Server è il nome del server, quindi premere INVIO. Se la generazione WSDL ha esito positivo, verrà visualizzata la descrizione dell'endpoint. A questo punto, fare clic su AddReference. In questo modo vengono create le classi proxy necessarie per chiamare i metodi nel documento WSDL.

Parte 1: Esecuzione della stored procedure

In questa parte l'applicazione richiede il metodo Web GetCustomerInfo.

  1. In Form1 aggiungere una casella di testo (textBox1), un pulsante (button1) e una casella di riepilogo (listBox1).

  2. Fare clic con il pulsante destro del mouse su text box e quindi scegliere Proprietà. Modificare il valore di Text da textBox1 a 1. Si tratta del valore predefinito per l'lD cliente.

  3. Fare clic con il pulsante destro del mouse su button1 e quindi scegliere Proprietà.

    1. Modificare il valore della proprietà Text da button1 a ExecSP.

    2. Modificare il valore della proprietà (name) in ExecSP.

  4. Fare clic con il pulsante destro del mouse sulla casella di riepilogo (listBox1) e quindi scegliere Proprietà. Modificare il valore della proprietà HorizontalScrollbar in True.

  5. Fare doppio clic su ExecSP.

  6. Copiare il codice da Listato di codice Visual Basic per ExecSP nella funzione.

  7. Aggiornare il codice. Modificare i riferimenti a server dal nome host identificato al momento della creazione dell'endpoint tramite CREATE ENDPOINT.

  8. Salvare e compilare il progetto. Per ulteriori informazioni, vedere la sezione precedente "Compilazione del codice".

Parte 2: Esecuzione della query SQL senza parametri

In questa parte l'applicazione client esegue una query ad hoc (query FOR XML) che recupera tre dipendenti dalla tabella Employee nel database AdventureWorks2008R2.

  1. Nella scheda [Progettazione] di Form1 aggiungere un altro pulsante (button1).

  2. Fare clic con il pulsante destro del mouse sul nuovo pulsante e quindi scegliere Proprietà.

    1. Modificare il valore della proprietà Text da button1 a ExecBatchFindAllEmps.

    2. Modificare il valore della proprietà (name) in ExecBatchFindAllEmps.

  3. Fare doppio clic su ExecBatchFindAllEmp.

  4. Copiare il codice da Listato di codice Visual Basic per FindAllEmps nella funzione.

  5. Aggiornare il codice. Modificare i riferimenti a server dal nome host identificato al momento della creazione dell'endpoint tramite CREATE ENDPOINT.

  6. Salvare e compilare il progetto. Per ulteriori informazioni, vedere la sezione precedente "Compilazione del codice".

Parte 3: Esecuzione della query SQL con parametri

Questa parte è simile alla precedente, ad eccezione del fatto che la richiesta SOAP per la query ad hoc include un parametro di query. Tramite la query FOR XML vengono recuperate le informazioni relative al dipendente corrispondenti all'ID dipendente specificato.

  1. Nella scheda [Progettazione] di Form1 aggiungere un pulsante (button1).

  2. Fare clic con il pulsante destro del mouse sul nuovo pulsante e quindi scegliere Proprietà.

    1. Modificare il valore della proprietà Text da button1 a ExecBatchFindAnEmp.

    2. Modificare il valore della proprietà (name) in ExecBatchFindAnEmp.

  3. Fare doppio clic su ExecBatchFindAnEmp.

  4. Copiare il codice da Listato di codice Visual Basic per FindAnEmp nella funzione.

  5. Aggiornare il codice. Modificare i riferimenti a server dal nome host identificato al momento della creazione dell'endpoint tramite CREATE ENDPOINT.

  6. Salvare e compilare il progetto. Per ulteriori informazioni, vedere la sezione precedente "Compilazione del codice".

Parte 4: Esecuzione della funzione definita dall'utente

In questa parte l'applicazione client invia una richiesta SOAP per il metodo Web UDFReturningScalar. Il metodo Web corrisponde a una funzione definita dall'utente che restituisce un valore integer.

  1. Nella scheda [Progettazione] di Form1 aggiungere un altro pulsante (button1).

  2. Fare clic con il pulsante destro del mouse sul nuovo pulsante e quindi scegliere Proprietà.

    1. Modificare il valore della proprietà Text da button1 a ExecUDFReturningScalar.

    2. Modificare il valore della proprietà (name) in ExecUDFReturningScalar.

  3. Fare doppio clic su ExecUDFReturningScalar.

  4. Copiare il codice da Listato di codice Visual Basic per ExecUDF nella funzione.

  5. Aggiornare il codice. Modificare i riferimenti al server dal nome host identificato al momento della creazione dell'endpoint tramite CREATE ENDPOINT.

  6. Salvare e compilare il progetto. Per ulteriori informazioni, vedere la sezione precedente "Compilazione del codice".

Poiché tramite l'endpoint viene specificata l'autenticazione integrata, nel codice viene visualizzata la riga seguente:proxy.Credentials = System.Net.CredentialCache.DefaultCredentials.

Se si utilizza l'autenticazione di SQL Server, è consigliabile rimuovere questa riga e sostituirla con il codice che implementa intestazioni WS-Security nelle credenziali di autenticazione fornite basate su SQL Server. Per ulteriori informazioni, vedere Autenticazione di SQL Server tramite SOAP.

Nota

Se si utilizza l'autenticazione di SQL Server o l'autenticazione di base, in SQL Server è necessario utilizzare SSL (Secure Sockets Layer) per la trasmissione crittografata protetta delle credenziali utente, che altrimenti risulterebbero visibili come testo non crittografato. Per ulteriori informazioni sull'attivazione di SSL per l'utilizzo con endpoint HTTP, vedere Configurazione di un certificato per l'utilizzo con SSL.

Compilazione del codice

SQL Server installa .NET Framework 2.0 durante il processo di installazione. In queste istruzioni di compilazione viene utilizzata la versione più recente di .NET Framework, ovvero il numero più alto nella cartella \WINDOWS\Microsoft.NET\Framework.

Per compilare il codice

  • Salvare l'intero progetto.
  1. Aprire il prompt dei comandi e individuare la cartella in cui è stato salvato il progetto.

  2. Copiare il file Reference.vb file incluso nella sottocartella Web Reference\Server di tale cartella. Copiare, ad esempio, "Web Reference\Server\Reference.vb". I file Form1.vb e Reference.vb devono essere inclusi nella stessa cartella.

  3. Compilare il codice e specificare il nome del file eseguibile (exe). Se, ad esempio, il nome del file eseguibile è NativeSOAPApp2.exe, verrà visualizzata una riga di comando simile alla seguente:

    \WINDOWS\Microsoft.NET\Framework\v2.0.xxxxx\vbc.exe /out:NativeSOAPApp2.exe /r:System.dll /r:System.Data.dll /r:System.Xml.dll /r:System.Web.Services.dll /r:Microsoft.VisualBasic.dll /r:System.Drawing.dll /r:System.Windows.Forms.dll /m:Form1 Form1.vb Reference.vb

    xxxxx è il numero della cartella corrispondente alla versione di .NET Framework.

    In questo modo il file eseguibile, NativeSOAPApp2.exe, viene creato nella directory corrente.

    Nota

    Se si utilizza una versione precedente di .NET Framework, potrebbe essere visualizzato un errore di runtime. In tal caso, provare ad aggiornare la stored procedure GetCustomerInfo aggiungendo la clausola FOR XML AUTO alla fine dell'istruzione SELECT, come illustrato di seguito:

    SELECT TOP 3 SalesOrderID, OrderDate 
    FROM   SalesOrderHeader
    WHERE  CustomerID = @CustomerID
    FOR XML AUTO
    

I risultati dell'esecuzione della stored procedure vengono visualizzati nella casella di riepilogo.