Anvisningar: Ange en tjänstbindning i konfigurationen
I det här exemplet definieras ett ICalculator
kontrakt för en grundläggande kalkylatortjänst, tjänsten implementeras i CalculatorService
klassen och sedan konfigureras dess slutpunkt i filen Web.config, där det anges att tjänsten använder BasicHttpBinding. En beskrivning av hur du konfigurerar den här tjänsten med hjälp av kod i stället för en konfiguration finns i Så här anger du en tjänstbindning i kod.
Det är vanligtvis bästa praxis att ange bindnings- och adressinformationen deklarativt i konfigurationen snarare än att absolut i kod. Det är vanligtvis inte praktiskt att definiera slutpunkter i kod eftersom bindningar och adresser för en distribuerad tjänst vanligtvis skiljer sig från de som används när tjänsten utvecklas. Mer allmänt gör det möjligt för dem att ändra bindningen och adresseringsinformationen utan att behöva kompilera om eller distribuera om programmet.
Alla följande konfigurationssteg kan utföras med hjälp av konfigurationsredigeraren (SvcConfigEditor.exe).
Källkopian av det här exemplet finns i BasicBinding.
Så här anger du den BasicHttpBinding som ska användas för att konfigurera tjänsten
Definiera ett tjänstkontrakt för typen av tjänst.
[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
Implementera tjänstkontraktet i en tjänstklass.
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
Kommentar
Adress- eller bindningsinformation anges inte i implementeringen av tjänsten. Dessutom behöver koden inte skrivas för att hämta den informationen från konfigurationsfilen.
Skapa en Web.config-fil för att konfigurera en slutpunkt för som
CalculatorService
använder 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>
Skapa en Service.svc-fil som innehåller följande rad och placera den i din virtuella IIS-katalog (Internet Information Services).
<%@ServiceHost language=c# Service="CalculatorService" %>
Ändra standardvärdena för bindningsegenskaperna
Om du vill ändra ett av standardegenskapsvärdena WSHttpBindingför skapar du ett nytt bindningskonfigurationsnamn –
<binding name="Binding1">
– i elementet <wsHttpBinding och anger de nya värdena för bindningens attribut i det här bindningselementet> . Om du till exempel vill ändra standardvärdena öppna och stänga tidsgränser på 1 minut till 2 minuter lägger du till följande i konfigurationsfilen.<wsHttpBinding> <binding name="Binding1" closeTimeout="00:02:00" openTimeout="00:02:00"> </binding> </wsHttpBinding>