Postupy: Zadání vazby služby v kódu
V tomto příkladu ICalculator
je kontrakt definován pro službu kalkulačky, služba se implementuje ve CalculatorService
třídě a její koncový bod je definován v kódu, kde je určena, že služba musí používat BasicHttpBinding tří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.
Popis konfigurace této služby pomocí konfiguračních prvků místo kódu naleznete v tématu Postupy: Určení vazby služby v konfiguraci.
Zadání v kódu pro použití BasicHttpBinding pro službu
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
V hostitelské aplikaci vytvořte základní adresu pro službu a vazbu, která se má se službou používat.
// 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()
Vytvořte hostitele pro službu, přidejte koncový bod a otevřete hostitele.
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
Úprava výchozích hodnot vlastností vazby
Chcete-li upravit jednu z výchozích hodnot BasicHttpBinding vlastnosti třídy, nastavte hodnotu vlastnosti vazby na novou hodnotu před vytvořením hostitele. Pokud chcete například změnit výchozí hodnoty časového limitu otevření a uzavření 1 minuty na 2 minuty, použijte následující příkaz.
TimeSpan modifiedCloseTimeout = new TimeSpan(00, 02, 00); binding1.CloseTimeout = modifiedCloseTimeout;
Dim modifiedCloseTimeout As New TimeSpan(0, 2, 0) binding1.CloseTimeout = modifiedCloseTimeout