Come ospitare un servizio Web Net ASP Al di fuori di IIS

June 29

Prima dell'introduzione di WCF, servizi web sviluppate in .Net dovevano essere ospitati all'interno di Internet Information Server (IIS). In .Net 3.0, le opzioni di hosting per i servizi Web .NET notevolmente aumentate. WCF include una classe denominata ServiceHost che permette ai servizi di essere ospitati all'interno di un'applicazione facilmente. ServiceHost astrae molti la complessità tecnologica di distanza in modo gli sviluppatori possono concentrarsi sulla logica di servizio al posto delle tubature coinvolti in servizi di hosting. Ospitare un servizio esterno di IIS richiede il runtime WCF e un'applicazione .NET gestito per agire come host. E 'responsabilità dello sviluppatore a scrivere il codice che avvia e arresta l'host.

istruzione

1 Selezionare "Nuovo" quindi "Progetto" nel menu File. Verrà visualizzata la finestra di dialogo Nuovo progetto.

2 Selezionare Visual C # quindi Windows dalla lista modello di progetto nella finestra di dialogo Nuovo progetto.

3 Selezionare Applicazione console dall'elenco dei tipi di progetto di Windows. Specificare un nome per il progetto nella casella Nome. Il nome del progetto dovrebbe essere qualcosa legato a sé che ospita un servizio web, se possibile.

4 Digitare un percorso nella casella di posizione nella finestra di dialogo Nuovo progetto. In alternativa, fai clic su "Sfoglia" per passare alla posizione in cui verrà memorizzato il progetto. Fai clic su "OK". Visual Studio creerà una nuova applicazione console.

5 Fare clic con SelfHost in Esplora soluzioni. Quindi, selezionare Aggiungi riferimento. Individuare System.ServiceModel nella scheda .NET e fare clic su "OK". Questo aggiungerà un riferimento all'assembly System.ServiceModel che è necessario per sviluppare o ospitare servizi WCF.

6 Fare doppio clic sul file di classe che è stato aggiunto quando il progetto è stato creato. Nella maggior parte dei casi sarà il nome Program.cs. Verrà visualizzato il codice per la classe.

7 Fai clic destro sul nome del progetto e selezionare "Aggiungi Nuova classe." Nome classe "HelloWorld" e inserire il codice seguente:

utilizzando System.ServiceModel;

utilizzando System.ServiceModel.Description;

[Contratto di servizio]

interfaccia pubblica IHelloWorld

{

[OperationContract]

stringa SayHello (string name);

}

class HelloWorld pubblico: IHelloWorld

{

public string SayHello(string name)

{

tornare string.Format ( "Ciao, {0}", nome);

}

}

Questo codice è l'attuazione di un "HelloWorld" web service campione che ha una operazione "SayHello."

8 Fare doppio clic sulla classe che è stata aggiunta automaticamente quando il progetto è stato creato. Nella maggior parte dei casi, la classe sarà chiamato Program.cs.

9 Immettere il seguente codice nella parte superiore della classe:

utilizzando System.ServiceModel;

utilizzando System.ServiceModel.Description;

10 Inserire il seguente codice nel metodo Main della classe:

// Definisce l'indirizzo di base per il servizio sulla macchina locale

Uri BaseAddress = new Uri ( "http: // localhost: 8080 / ciao");

// Crea il servizio Host.

usando (ServiceHost host = new ServiceHost (typeof (HelloWorld), BaseAddress))

{

// Enable metadata publishing.

ServiceMetadataBehavior smb = new ServiceMetadataBehavior ();

smb.HttpGetEnabled = true;

smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;

host.Description.Behaviors.Add (SMB);

// Aprire il ServiceHost per iniziare ad ascoltare i messaggi.

host.Open ();

Console.WriteLine ( "Il servizio è in esecuzione e può ricevere richiesta {0}", BaseAddress);

Console.WriteLine ( "Press & lt; Invio> per interrompere il servizio.");

Console.ReadLine ();

// Chiude il ServiceHost.

host.Close ();

}

Questo codice avvia il servizio di accoglienza e crea un'istanza del servizio. Il servizio può essere chiamato da un cliente fino a quando l'applicazione console viene chiusa.

Consigli e avvertenze

  • servizi WCF possono essere ospitati in diversi tipi di applicazioni diverse applicazioni console. Qualsiasi applicazione come un'applicazione di servizio Windows o forme che supporta WCF può essere utilizzato per auto-host un servizio WCF.