Como: Especificar uma vinculação de serviço no código
Neste exemplo, um ICalculator
contrato é definido para um serviço de calculadora, o serviço é implementado na classe e, em CalculatorService
seguida, seu ponto de extremidade é definido no código, onde é especificado que o serviço deve usar a BasicHttpBinding classe.
Normalmente, é a prática recomendada especificar as informações de vinculação e endereço declarativamente na configuração em vez de imperativamente no código. Definir pontos de extremidade no código geralmente não é prático porque as ligações e endereços para um serviço implantado geralmente são diferentes daqueles usados enquanto o serviço está sendo desenvolvido. Mais geralmente, manter as informações de vinculação e endereçamento fora do código permite que eles sejam alterados sem ter que recompilar ou reimplantar o aplicativo.
Para obter uma descrição de como configurar esse serviço usando elementos de configuração em vez de código, consulte Como especificar uma associação de serviço na configuração.
Para especificar no código para usar o BasicHttpBinding para o serviço
Defina um contrato de serviço para o tipo de serviço.
[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 o contrato de serviço em uma classe de serviço.
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
No aplicativo de hospedagem, crie o endereço base para o serviço e a associação para usar com o serviço.
// 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()
Crie o host para o serviço, adicione o ponto de extremidade e abra o host.
using(ServiceHost host = new ServiceHost(typeof(CalculatorService))) { host.AddServiceEndpoint(typeof(ICalculator),binding1, baseAddress); host.Open(); }
Using host As New ServiceHost(GetType(CalculatorService)) With host .AddServiceEndpoint(GetType(ICalculator), _ binding1, _ baseAddress) host.Open() End With End Using
Para modificar os valores padrão das propriedades de associação
Para modificar um dos valores de propriedade padrão da classe, defina o valor da propriedade na associação para o novo valor antes de BasicHttpBinding criar o host. Por exemplo, para alterar os valores padrão de tempo limite de abertura e fechamento de 1 minuto para 2 minutos, use o seguinte.
TimeSpan modifiedCloseTimeout = new TimeSpan(00, 02, 00); binding1.CloseTimeout = modifiedCloseTimeout;
Dim modifiedCloseTimeout As New TimeSpan(0, 2, 0) binding1.CloseTimeout = modifiedCloseTimeout