Aracılığıyla paylaş


Nasıl yapılır: Kod İçinde Hizmet Uç Noktası Oluşturma

Bu örnekte, bir hesap makinesi hizmeti için bir ICalculator sözleşme tanımlanır, hizmet sınıfında uygulanır CalculatorService ve ardından uç noktası kodda tanımlanır ve burada hizmetin sınıfı kullanması BasicHttpBinding gerektiği belirtilir.

Bağlama ve adres bilgilerini kodda kesinlik temelli olarak değil, yapılandırmada bildirim temelli olarak belirtmek genellikle en iyi yöntemdir. Dağıtılan bir hizmetin bağlamaları ve adresleri genellikle hizmet geliştirilirken kullanılanlardan farklı olduğundan, kodda uç noktaları tanımlamak genellikle pratik değildir. Daha genel olarak bağlama ve adresleme bilgilerinin kod dışında tutulması, uygulamanın yeniden derlenmesine veya yeniden dağıtılmasına gerek kalmadan bunların değişmesine olanak tanır.

Kodda hizmet uç noktası oluşturmak için

  1. Hizmet sözleşmesini tanımlayan arabirimi oluşturun.

    [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
    
    
  2. 1. adımda tanımlanan hizmet sözleşmesini uygulayın.

    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
    
    
  3. Barındırma uygulamasında hizmetin temel adresini ve hizmetle kullanılacak bağlamayı oluşturun.

    
    // 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()
    
  4. Konağı oluşturun ve konağın hizmet uç noktasını eklemek için çağrı ServiceHost.AddServiceEndpoint(Type, Binding, String) veya diğer aşırı yüklemelerden birini oluşturun.

    
    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)
    
    

    Kodda bağlamayı belirtmek, ancak çalışma zamanı tarafından sağlanan varsayılan uç noktaları kullanmak için, oluştururken temel adresi oluşturucuya geçirin ve çağırmayınServiceHostServiceHost.AddServiceEndpoint.

    ServiceHost host = new ServiceHost(typeof(CalculatorService), new Uri(baseAddress));
    
    Dim host As New ServiceHost(GetType(CalculatorService), New Uri(baseAddress))
    

    Varsayılan uç noktalar hakkında daha fazla bilgi için bkz. WCF Hizmetleri için Basitleştirilmiş Yapılandırma ve Basitleştirilmiş Yapılandırma.

Ayrıca bkz.