Útmutató: Szolgáltatáskötés megadása a konfigurációban
Ebben a példában egy ICalculator
szerződés definiálva van egy alapszintű számológép szolgáltatáshoz, a szolgáltatás az osztályban CalculatorService
lesz implementálva, majd a végpontja a Web.config fájlban van konfigurálva, ahol meg van adva, hogy a szolgáltatás a BasicHttpBinding. A szolgáltatás konfiguráció helyett kód használatával történő konfigurálásának leírását a Következő témakörben találhatja meg: Szolgáltatáskötés megadása a Kódban.
Általában ajánlott a kötési és címadatokat deklaratív módon megadni a konfigurációban, nem pedig a kódban. A végpontok kódban való definiálása általában nem praktikus, mivel az üzembe helyezett szolgáltatások kötései és címei általában eltérnek a szolgáltatás fejlesztése során használtaktól. Általánosságban elmondható, hogy a kötés és az információk kódon kívüli kezelése lehetővé teszi a módosítást anélkül, hogy újrafordítanák vagy újra üzembe kellene helyezniük az alkalmazást.
Az alábbi konfigurációs lépések mindegyike a Konfigurációszerkesztő eszközzel (SvcConfigEditor.exe) végezhető el.
A példa forráspéldányát lásd : BasicBinding.
A szolgáltatás konfigurálásához használandó BasicHttpBinding megadása
Szolgáltatási szerződés definiálása a szolgáltatás típusához.
[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
A szolgáltatási szerződés implementálása egy szolgáltatásosztályban.
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
Feljegyzés
A cím- vagy kötésadatok nincsenek megadva a szolgáltatás implementációja során. Emellett a kódot nem kell írni ahhoz, hogy lekérje ezeket az információkat a konfigurációs fájlból.
Hozzon létre egy Web.config fájlt, amely konfigurálja a végpontot WSHttpBindingaz
CalculatorService
azt használó számára.<?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>
Hozzon létre egy Service.svc fájlt, amely a következő sort tartalmazza, és helyezze el az Internet Information Services (IIS) virtuális könyvtárában.
<%@ServiceHost language=c# Service="CalculatorService" %>
A kötés tulajdonságainak alapértelmezett értékeinek módosítása
A kötés egyik alapértelmezett tulajdonságértékének WSHttpBindingmódosításához hozzon létre egy új kötéskonfigurációs nevet – a
<binding name="Binding1">
wsHttpBinding> elemen belül<, és állítsa be a kötés attribútumainak új értékeit ebben a kötéselemben. Ha például az alapértelmezett 1 perces és 2 perces időtúllépési időtúllépési értékeket szeretné módosítani, adja hozzá a következőt a konfigurációs fájlhoz.<wsHttpBinding> <binding name="Binding1" closeTimeout="00:02:00" openTimeout="00:02:00"> </binding> </wsHttpBinding>