Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym przykładzie ICalculator kontrakt jest definiowany dla usługi kalkulatora, usługa jest implementowana w klasie, a następnie jej punkt końcowy jest definiowany w CalculatorService kodzie, w którym określono, że usługa musi używać BasicHttpBinding klasy .
Zazwyczaj najlepszym rozwiązaniem jest określenie powiązania i adresu informacji deklaratywnie w konfiguracji, a nie imperatywnie w kodzie. Definiowanie punktów końcowych w kodzie zwykle nie jest praktyczne, ponieważ powiązania i adresy wdrożonej usługi zwykle różnią się od tych używanych podczas opracowywania usługi. Ogólnie rzecz biorąc, utrzymywanie powiązania i adresowania informacji poza kodem umożliwia ich zmianę bez konieczności ponownego kompilowania lub ponownego wdrażania aplikacji.
Aby utworzyć punkt końcowy usługi w kodzie
Utwórz interfejs definiujący kontrakt usługi.
[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 InterfaceZaimplementuj kontrakt usługi zdefiniowany w kroku 1.
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 ClassW aplikacji hostingu utwórz podstawowy adres usługi i powiązanie, które ma być używane z usługą.
// 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()Utwórz hosta i wywołaj ServiceHost.AddServiceEndpoint(Type, Binding, String) lub jedno z innych przeciążeń, aby dodać punkt końcowy usługi dla hosta.
using(ServiceHost host = new ServiceHost(typeof(CalculatorService))) { host.AddServiceEndpoint(typeof(ICalculator),binding1, baseAddress);Using host As New ServiceHost(GetType(CalculatorService)) With host .AddServiceEndpoint(GetType(ICalculator), _ binding1, _ baseAddress)Aby określić powiązanie w kodzie, ale używać domyślnych punktów końcowych dostarczonych przez środowisko uruchomieniowe, przekaż adres podstawowy do konstruktora ServiceHostpodczas tworzenia elementu i nie wywołuje metody ServiceHost.AddServiceEndpoint.
ServiceHost host = new ServiceHost(typeof(CalculatorService), new Uri(baseAddress));Dim host As New ServiceHost(GetType(CalculatorService), New Uri(baseAddress))Aby uzyskać więcej informacji na temat domyślnych punktów końcowych, zobacz Uproszczona konfiguracja i Uproszczona konfiguracja dla usług WCF.