Procedimiento para crear un punto de conexión de servicio mediante código
En este ejemplo, se define un contrato de ICalculator
para un servicio de la calculadora, el servicio se implementa en la clase CalculatorService
y a continuación, su extremo se define mediante código, donde se especifica que el servicio debe utilizar la clase BasicHttpBinding.
Normalmente es el mejor procedimiento para especificar el enlace y la información de dirección de forma declarativa en configuración en lugar de hacerlo de forma imperativa en código. Normalmente, no resulta muy práctico definir los puntos de conexión en el código ya que los enlaces y las direcciones de un servicio implementado son, por lo general, diferentes de los utilizados durante el desarrollo del servicio. Más generalmente, manteniendo el enlace y la información de dirección fuera del código permite cambiarlos sin tener que recompilar o implementar la aplicación.
Creación de un extremo de servicio mediante código
Cree la interfaz que define el contrato de servicios.
[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); }
<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
Implemente el contrato de servicios definido en el paso 1.
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; } }
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
En la aplicación de alojamiento, cree la dirección base que han de utilizar el servicio y el enlace con el servicio.
// Specify a base address for the service String baseAddress = "http://localhost/CalculatorService"; // Create the binding to be used by the service. BasicHttpBinding binding1 = new BasicHttpBinding();
' Specify a base address for the service Dim baseAddress = "http://localhost/CalculatorService" ' Create the binding to be used by the service. Dim binding1 As New BasicHttpBinding()
Cree el host y llame al método ServiceHost.AddServiceEndpoint(Type, Binding, String) o una de las otras sobrecargas para agregar el extremo de servicio del host.
using(ServiceHost host = new ServiceHost(typeof(CalculatorService))) { host.AddServiceEndpoint(typeof(ICalculator),binding1, baseAddress);
Using host As New ServiceHost(GetType(CalculatorService)) With host .AddServiceEndpoint(GetType(ICalculator), _ binding1, _ baseAddress)
Para especificar el enlace en el código, pero usar los puntos de conexión predeterminados que proporciona el tiempo de ejecución, pase la dirección base al constructor al crear ServiceHost, y no llame a ServiceHost.AddServiceEndpoint.
ServiceHost host = new ServiceHost(typeof(CalculatorService), new Uri(baseAddress));
Dim host As New ServiceHost(GetType(CalculatorService), New Uri(baseAddress))
Para obtener más información sobre los puntos de conexión predeterminados, consulte Configuración simplificada y Configuración simplificada de servicios WCF.