Procedura: creare un endpoint del servizio nel codice
In questo esempio viene definito un contratto ICalculator
per un servizio di calcolatrice. Il servizio viene implementato nella classe CalculatorService
e il relativo endpoint viene quindi definito in codice, dove si specifica che il servizio deve utilizzare la classe BasicHttpBinding.
La procedura in genere consigliata consiste nello specificare le informazioni su associazione e indirizzo nella configurazione in modo dichiarativo anziché in modo imperativo nel codice. In genere definire endpoint nel codice non è pratico in quanto le associazioni e gli indirizzi di un servizio distribuito sono solitamente diversi da quelli utilizzati durante lo sviluppo del servizio. Più in generale, se l'associazione e le informazioni di indirizzo vengono tenute all'esterno del codice, possono cambiare senza che sia necessario ricompilare o ridistribuire l'applicazione.
Per creare un endpoint del servizio nel codice
Creare l'interfaccia che definisce il contratto di servizio.
<ServiceContract()> _ Public Interface ICalculator <OperationContract()> _ Function Add(ByVal n1 As Double, _ ByVal n2 As Double) As Double <OperationContract()> _ Function Subtract(ByVal n1 As Double, ByVal _ n2 As Double) As Double <OperationContract()> _ Function Multiply(ByVal n1 As Double, _ ByVal n2 As Double) As Double <OperationContract()> _ Function Divide(ByVal n1 As Double, _ ByVal n2 As Double) As Double End Interface
[ServiceContract] public interface ICalculator { [OperationContract] double Add(double n1, double n2); [OperationContract] double Subtract(double n1, double n2); [OperationContract] double Multiply(double n1, double n2); [OperationContract] double Divide(double n1, double n2); }
Implementare il contratto di servizio definito nel passaggio 1.
Public Class CalculatorService Implements ICalculator Public Function Add(ByVal n1 As Double, _ ByVal n2 As Double) As Double Implements ICalculator.Add Return n1 + n2 End Function Public Function Subtract(ByVal n1 As Double, _ ByVal n2 As Double) As Double Implements ICalculator.Subtract Return n1 - n2 End Function Public Function Multiply(ByVal n1 As Double, _ ByVal n2 As Double) As Double Implements ICalculator.Multiply Return n1 * n2 End Function Public Function Divide(ByVal n1 As Double, _ ByVal n2 As Double) As Double Implements ICalculator.Divide Return n1 / n2 End Function End Class
public class CalculatorService : ICalculator { public double Add(double n1, double n2) { return n1 + n2; } public double Subtract(double n1, double n2) { return n1 - n2; } public double Multiply(double n1, double n2) { return n1 * n2; } public double Divide(double n1, double n2) { return n1 / n2; } }
Nell'applicazione host, creare l'indirizzo di base del servizio e l'associazione da utilizzare con il servizio.
' Specify a base address for the service Dim baseAddress = "https://localhost/CalculatorService" ' Create the binding to be used by the service. Dim binding1 As New BasicHttpBinding()
// Specify a base address for the service String baseAddress = "https://localhost/CalculatorService"; // Create the binding to be used by the service. BasicHttpBinding binding1 = new BasicHttpBinding();
Creare l'host e chiamare AddServiceEndpoint o uno degli altri overload per aggiungere l'endpoint del servizio per l'host.
Using host As New ServiceHost(GetType(CalculatorService)) With host .AddServiceEndpoint(GetType(ICalculator), _ binding1, _ baseAddress)
using(ServiceHost host = new ServiceHost(typeof(CalculatorService))) { host.AddServiceEndpoint(typeof(ICalculator),binding1, baseAddress);
Per specificare l'associazione nel codice senza utilizzare gli endpoint predefiniti forniti dal runtime, passare l'indirizzo di base al costruttore durante la creazione di ServiceHost e non chiamare AddServiceEndpoint.
Dim host As New ServiceHost(GetType(CalculatorService), New Uri(baseAddress))
ServiceHost host = new ServiceHost(typeof(CalculatorService), new Uri(baseAddress));
Per ulteriori informazioni su endpoint predefiniti, vedere Configurazione semplificata e Configurazione semplificata per servizi WCF.
Vedere anche
Attività
Procedura: specificare un'associazione al servizio in codice