Condividi tramite


Procedura dettagliata: compilare un servizio Web XML di base tramite ASP.NET

Questo argomento è specifico di una tecnologia legacy. Servizi Web XML e client di servizi Web XML devono essere creati attualmente tramite Windows Communication Foundation.

Lo sviluppo di un servizio Web XML mediante ASP.NET inizia con i passaggi seguenti:

  1. Creazione di un file con un nome file con estensione asmx e dichiarare un Servizio Web al suo interno utilizzando una direttiva @WebService.

  2. Creazione di una classe che implementi il servizio Web. Facoltativamente, la classe può derivare dalla classe WebService.

  3. Facoltativamente, è possibile applicare un attributo WebServiceAttribute alla classe che implementa il servizio Web.

  4. Definire i metodi del servizio Web che compongono la funzionalità del servizio Web stesso.

Dichiarare un servizio Web

Quando si crea un servizio Web XML in ASP.NET, si inserisce la necessaria direttiva @ WebService all'inizio di un file di testo con estensione asmx. La presenza del file asmx e della direttiva @ WebService servono a correlare l'indirizzo URL del servizio Web con l'implementazione. In seguito viene implementata la classe del servizio Web XML che definisce i metodi e tipi di dati visibili dai client del servizio Web XML. Infine, si aggiunge ai metodi la logica con cui si desidera che il servizio Web XML elabori le richieste del servizio Web XML e invii le risposte. La classe del servizio Web XML che viene definita può essere inclusa direttamente nel file asmx o in un file separato. Se si utilizza un file separato, deve essere compilato in un assembly. Facoltativamente, è possibile applicare un attributo WebService alla classe che implementa il servizio Web XML. La classe che implementa il servizio Web XML può derivare dalla classe WebService.

Per dichiarare un servizio Web la cui implementazione risiede nello stesso file

  1. Aggiungere una direttiva @ WebService all'inizio di un file con un nome file con estensione asmx, specificando la classe che implementa il servizio Web e il linguaggio di programmazione utilizzato nell'implementazione.

    L'attributo Classe può essere impostato su una classe che risiede nello stesso assembly della direttiva @ WebService o su una classe all'interno di un assembly separato. Se la classe risiede in un assembly separato, deve essere posizionata nella directory \Bin situata al di sotto dell'applicazione Web in cui si trova il servizio Web. L'attributo Language può essere impostato su C#, VBe JSche si riferiscono a rispettivamente a C#, Visual Basic .NET e JScript .NET.

    Nell'esempio di codice seguente viene illustrato come impostare l'attributo Language della direttiva @ WebService e l'attributo Class su Util, che risiede nello stesso file.

    <%@ WebService Language="C#" Class="Util" %>
    
    <%@ WebService Language="VB" Class="Util" %>
    

Per dichiarare un servizio Web la cui implementazione risiede in un assembly

  1. Aggiungere una direttiva @ WebService all'inizio di un file con estensione asmx, specificando la classe che implementa il servizio Web, l'assembly che contiene l'implementazione e il linguaggio di programmazione utilizzato nell'implementazione. Se si utilizza un file separato, deve essere compilato in un assembly.

    La direttiva @ WebService riportata qui di seguito, è l'unica riga di un file con estensione asmx che specifica che la classe MyName.MyWebService risiede nell'assembly MyAssembly all'interno della directory \Bin dell'applicazione Web che ospita il servizio Web.

    <%@ WebService Language="C#" Class="MyName.MyWebService,MyAssembly" %>
    
    <%@ WebService Language="VB" Class="MyName.MyWebService,MyAssembly" %>
    
    7hs6sw69.note(it-it,VS.100).gifNota:
    Se non si specifica un assembly nella direttiva @ WebService, ASP.NET cerca nell'elenco di assembly nella directory \Bin dell'applicazione Web che ospita il servizio Web la prima volta che viene effettuato l'accesso al servizio Web. Pertanto, fornendo il nome dell'assembly, si miglioreranno le prestazioni al primo accesso.

Derivano dalla classe WebService

Le classi che implementano un servizio Web creato con ASP.NET possono derivare facoltativamente dalla classe WebService per accedere agli oggetti ASP.NET comuni, ad esempio Application, Session, User, e Context.

Per derivare dalla classe WebService e accedere a oggetti ASP.NET comuni

<%@ WebService Language="C#" Class="Util" %>
using System;
using System.Web.Services;

public class Util: WebService 
<%@ WebService Language="VB" Class="Util" %>
Imports System
Imports System.Web.Services

Public Class Util
   Inherits WebService

Applicare l'attributo WebService

Tramite l'applicazione dell’attributo facoltativo WebService a una classe che implementa un servizio Web, è possibile impostare lo spazio dei nomi XML predefinito per il servizio Web, che in origine è http://tempuri.org, insieme a una stringa per descrivere il servizio Web.

È consigliabile modificare lo spazio dei nomi predefinito, http://tempuri.org, prima di rendere utilizzabile pubblicamente il servizio Web XML. Questo aspetto è importante perché il servizio Web XML deve essere distinto dagli altri che potrebbero utilizzare inavvertitamente lo spazio dei nomi (<http://tempuri.org/>) come predefinito.

Per impostare lo spazio dei nomi XML del quale un servizio Web è un membro

  1. Applicare un attributo WebService alla classe che sta implementando il servizio Web, impostando la proprietà Namespace.

Nell'esempio di codice riportato di seguito viene impostato lo spazio dei nomi XML su https://www.contoso.com/ (informazioni in lingua inglese).

<%@ WebService Language="C#" Class="Util" Debug=true%>
using System.Web.Services;
using System;

[WebService(Namespace="https://www.contoso.com/")]
public class Util: WebService 
<%@ WebService Language="VB" Class="Util"%>
Imports System.Web.Services
Imports System

<WebService(Namespace:="https://www.contoso.com/")> _
Public Class Util
    Inherits WebService

Definire metodi di servizio Web

I metodi di una classe che implementa un servizio Web non hanno automaticamente la possibilità di comunicare sul Web, tuttavia è molto semplice aggiungere tale funzionalità con i servizi Web creati utilizzando ASP.NET. Per aggiungere questa possibilità, applicare un attributo WebMethod ai metodi pubblici. I metodi di un servizio Web che possono comunicare sul Web sono chiamati metodi del servizio Web.

Per dichiarare un metodo del servizio Web

  1. Aggiungere i metodi pubblici alla classe che implementa il servizio Web.

  2. Applicare l'attributo WebMethod ai metodi pubblici di cui si vuole eseguire il mapping sulle operazioni del servizio Web.

Nell'esempio di codice seguente vengono illustrati due metodi pubblici uno dei quali è un metodo del servizio Web. Il metodo Multiply è un metodo del servizio Web, perché vi è applicato un attributo WebMethod.

<%@ WebService Language="C#" Class="Util" %>
using System.Web.Services;
using System;

[WebService(Namespace="https://www.contoso.com/")]
public class Util: WebService 
{
    [ WebMethod]    public long Multiply(int a, int b) 
    {
        return a * b;
    }
}
<%@ WebService Language="VB" Class="Util" %>

Imports System.Web.Services
Imports System

<WebService(Namespace:="https://www.contoso.com/")> 
Public Class Util 
    Inherits WebService
    < WebMethod()> _    Public Function Multiply(a As Integer, b As Integer) As Long
        Return a * b
    End Function
End Class

Vedere anche

Riferimento

WebService Class
WebServiceAttribute Class
WebMethodAttribute Class

Concetti

Fondamenti del servizio Web XML ASP.NET

Altre risorse

Creare servizi Web XML mediante ASP.NET