Como: Especificar uma associação de serviço na configuração
Neste exemplo, um ICalculator
contrato é definido para um serviço de calculadora básico, o serviço é implementado na classe e, em CalculatorService
seguida, seu ponto de extremidade é configurado no arquivo Web.config, onde é especificado que o serviço usa o BasicHttpBinding. Para obter uma descrição de como configurar esse serviço usando código em vez de uma configuração, consulte Como especificar uma vinculação de serviço no código.
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.
Todas as etapas de configuração a seguir podem ser realizadas usando a Ferramenta do Editor de Configuração (SvcConfigEditor.exe).
Para obter a cópia de origem deste exemplo, consulte BasicBinding.
Para especificar o BasicHttpBinding a ser usado para configurar 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
Nota
O endereço ou as informações de vinculação não são especificados dentro da implementação do serviço. Além disso, o código não precisa ser escrito para buscar essas informações do arquivo de configuração.
Crie um arquivo Web.config para configurar um ponto de extremidade para o
CalculatorService
que usa o WSHttpBinding.<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service name=" CalculatorService" > <!-- Leave the address blank to be populated by default --> <!-- from the hosting environment,in this case IIS, so --> <!-- the address will just be that of the IIS Virtual --> <!-- Directory. --> <!-- Specify the binding configuration name for that --> <!-- binding type. This is optional but useful if you --> <!-- want to modify the properties of the binding. --> <!-- The bindingConfiguration name Binding1 is defined --> <!-- below in the bindings element. --> <endpoint address="" binding="wsHttpBinding" bindingConfiguration="Binding1" contract="ICalculator" /> </service> </services> <bindings> <wsHttpBinding> <binding name="Binding1"> <!-- Binding property values can be modified here. --> <!-- See the next procedure. --> </binding> </wsHttpBinding> </bindings> </system.serviceModel> </configuration>
Crie um arquivo Service.svc que contenha a seguinte linha e coloque-o no diretório virtual do IIS (Serviços de Informações da Internet).
<%@ServiceHost language=c# Service="CalculatorService" %>
Para modificar os valores padrão das propriedades de associação
Para modificar um dos valores de propriedade padrão do , crie um novo nome de configuração de vinculação -
<binding name="Binding1">
- dentro do< elemento wsHttpBinding> e defina os novos valores para os atributos da associação nesse elemento de ligação.WSHttpBinding Por exemplo, para alterar os valores padrão de tempo limite de abertura e fechamento de 1 minuto para 2 minutos, adicione o seguinte ao arquivo de configuração.<wsHttpBinding> <binding name="Binding1" closeTimeout="00:02:00" openTimeout="00:02:00"> </binding> </wsHttpBinding>