Megosztás a következőn keresztül:


Útmutató: WCF-szolgáltatás üzemeltetve az IIS-ben

Ez a témakör az Internet Information Servicesben (IIS) üzemeltetett Windows Communication Foundation (WCF) szolgáltatás létrehozásához szükséges alapvető lépéseket ismerteti. Ez a témakör feltételezi, hogy ismeri az IIS-t, és tisztában van azzal, hogyan hozhat létre és kezelhet IIS-alkalmazásokat az IIS felügyeleti eszközével. Az IIS-ről további információt az Internet Information Services nyújt. Az IIS-környezetben futó WCF-szolgáltatások teljes mértékben kihasználják az IIS-funkciókat, például a folyamat-újrahasznosítást, az inaktív leállítást, a folyamatállapot-monitorozást és az üzenetalapú aktiválást. Ez az üzemeltetési lehetőség megköveteli az IIS megfelelő konfigurálását, de nem követeli meg, hogy az alkalmazás részeként bármilyen üzemeltetési kódot meg kell írni. Az IIS-üzemeltetést csak HTTP-átvitellel használhatja.

A WCF és ASP.NET interakciójáról további információt a WCF-szolgáltatások és a ASP.NET című témakörben talál. A biztonság konfigurálásáról további információt a Biztonság című témakörben talál.

A példa forráspéldányát lásd : IIS Hosting Using Inline Code.

IIS által üzemeltetett szolgáltatás létrehozása

  1. Győződjön meg arról, hogy az IIS telepítve van és fut a számítógépen. Az IIS telepítésével és konfigurálásával kapcsolatos további információkért lásd: IIS 7.0 telepítése és konfigurálása

  2. Hozzon létre egy új mappát az "IISHostedCalcService" nevű alkalmazásfájlokhoz, győződjön meg arról, hogy ASP.NET hozzáfér a mappa tartalmához, és az IIS felügyeleti eszközével hozzon létre egy új, fizikailag ebben az alkalmazáskönyvtárban található IIS-alkalmazást. Az alkalmazáskönyvtár aliasának létrehozásakor használja az "IISHostedCalc" kifejezést.

  3. Hozzon létre egy új fájlt "service.svc" néven az alkalmazáskönyvtárban. Szerkessze ezt a fájlt a következő @ServiceHost elem hozzáadásával.

    <%@ServiceHost language=c# Debug="true" Service="Microsoft.ServiceModel.Samples.CalculatorService"%>
    
  4. Hozzon létre egy App_Code alkönyvtárat az alkalmazáskönyvtárban.

  5. Hozzon létre egy Service.cs nevű kódfájlt a App_Code alkönyvtárban.

  6. Adja hozzá a következő using irányelveket a Service.cs fájl elejéhez.

    using System;
    using System.ServiceModel;
    
  7. Adja hozzá a következő névtér-deklarációt az using irányelvek után.

    namespace Microsoft.ServiceModel.Samples
    {
    }
    
  8. Adja meg a szolgáltatási szerződést a névtér deklarációjában az alábbi kódban látható módon.

    [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
    
    
  9. Hajtsa végre a szolgáltatási szerződést a szolgáltatási szerződés definíciója után az alábbi kódban látható módon.

    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
    
    
  10. Hozzon létre egy "Web.config" nevű fájlt az alkalmazáskönyvtárban, és adja hozzá a következő konfigurációs kódot a fájlhoz. Futásidőben a WCF-infrastruktúra az információk alapján hoz létre egy végpontot, amellyel az ügyfélalkalmazások kommunikálhatnak.

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.serviceModel>
        <services>
          <service name="Microsoft.ServiceModel.Samples.CalculatorService" behaviorConfiguration="CalculatorServiceBehaviors">
    
            <!-- This endpoint is exposed at the base address provided by host: http://localhost/servicemodelsamples/service.svc -->
            <endpoint address=""
                      binding="wsHttpBinding"
                      contract="Microsoft.ServiceModel.Samples.ICalculator" />
    
            <!-- The mex endpoint is exposed at http://localhost/servicemodelsamples/service.svc/mex -->
            <endpoint address="mex"
                      binding="mexHttpBinding"
                      contract="IMetadataExchange" />
          </service>
        </services>
    
        <behaviors>
          <serviceBehaviors>
            <behavior name="CalculatorServiceBehaviors">
              <!-- Add the following element to your service behavior configuration. -->
              <serviceMetadata httpGetEnabled="true" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>
    
    </configuration>
    

    Ez a példa kifejezetten meghatározza a konfigurációs fájl végpontjait. Ha nem ad hozzá végpontokat a szolgáltatáshoz, a futtatókörnyezet alapértelmezett végpontokat ad hozzá. Az alapértelmezett végpontokkal, kötésekkel és viselkedésekkel kapcsolatos további információkért lásd a WCF-szolgáltatások egyszerűsített konfigurációját és egyszerűsített konfigurációját.

  11. Annak érdekében, hogy a szolgáltatás megfelelően legyen üzemeltetve, nyisson meg egy böngészőt, és keresse meg a szolgáltatás URL-címét: http://localhost/IISHostedCalc/Service.svc

Példa

Az alábbiakban az IIS által üzemeltetett számológép szolgáltatás kódjának teljes listája látható.

using System;
using System.ServiceModel;

namespace Microsoft.ServiceModel.Samples
{

  [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);
  }


  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;
     }
  }
}

Imports System.ServiceModel

Namespace Microsoft.ServiceModel.Samples

    <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


    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

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="Microsoft.ServiceModel.Samples.CalculatorService" behaviorConfiguration="CalculatorServiceBehaviors">

        <!-- This endpoint is exposed at the base address provided by host: http://localhost/servicemodelsamples/service.svc -->
        <endpoint address=""
                  binding="wsHttpBinding"
                  contract="Microsoft.ServiceModel.Samples.ICalculator" />

        <!-- The mex endpoint is exposed at http://localhost/servicemodelsamples/service.svc/mex -->
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior name="CalculatorServiceBehaviors">
          <!-- Add the following element to your service behavior configuration. -->
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

</configuration>

Lásd még