Postupy: Zadání vazby služby v konfiguraci
V tomto příkladu ICalculator
je kontrakt definován pro základní službu kalkulačky, služba je implementována ve CalculatorService
třídě a potom její koncový bod je nakonfigurován v souboru Web.config, kde je určena, že služba používá BasicHttpBinding. Popis konfigurace této služby pomocí kódu místo konfigurace naleznete v tématu Postupy: Určení vazby služby v kódu.
Osvědčeným postupem je obvykle deklarativní určení informací o vazbě a adresách v konfiguraci, nikoli imperativním způsobem v kódu. Definování koncových bodů v kódu obvykle není praktické, protože vazby a adresy nasazené služby se obvykle liší od těch, které se používají při vývoji služby. Obecněji platí, že udržování vazby a adresování informací mimo kód umožňuje jejich změnu, aniž by bylo nutné aplikaci znovu zkompilovat nebo znovu nasadit.
Všechny následující kroky konfigurace je možné provést pomocí nástroje Editor konfigurace (SvcConfigEditor.exe).
Zdrojová kopie tohoto příkladu najdete v tématu BasicBinding.
Určení třídy BasicHttpBinding, která se má použít ke konfiguraci služby
Definujte kontrakt služby pro typ služby.
[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
Implementujte kontrakt služby ve třídě služby.
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
Poznámka:
Informace o adrese nebo vazbě nejsou zadány uvnitř implementace služby. Kód také nemusí být zapsán pro načtení informací z konfiguračního souboru.
Vytvořte soubor Web.config pro konfiguraci koncového bodu,
CalculatorService
který používá 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>
Vytvořte soubor Service.svc, který obsahuje následující řádek, a umístěte ho do virtuálního adresáře Internetová informační služba (IIS).
<%@ServiceHost language=c# Service="CalculatorService" %>
Úprava výchozích hodnot vlastností vazby
Chcete-li upravit jednu z výchozích hodnot WSHttpBindingvlastnosti , vytvořte nový název konfigurace vazby -
<binding name="Binding1">
v elementu <wsHttpBinding> a nastavte nové hodnoty pro atributy vazby v tomto elementu vazby. Pokud chcete například změnit výchozí hodnoty časového limitu otevření a uzavření 1 minuty na 2 minuty, přidejte do konfiguračního souboru následující kód.<wsHttpBinding> <binding name="Binding1" closeTimeout="00:02:00" openTimeout="00:02:00"> </binding> </wsHttpBinding>