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


TCP-aktiválás

A TCPActivation minta egy olyan szolgáltatás üzemeltetését mutatja be, amely a Windows Folyamataktiválási szolgáltatások (WAS) használatával aktivál egy olyan szolgáltatást, amely a net.tcp protokollon keresztül kommunikál. Ez a minta az első lépéseken alapul.

Feljegyzés

A minta telepítési eljárása és összeállítási utasításai a témakör végén találhatók.

A minta egy ügyfélkonzolprogramból (.exe) és egy, a WAS által aktivált feldolgozói folyamatban üzemeltetett szolgáltatáskódtárból (.dll) áll. Az ügyféltevékenység látható a konzolablakban.

A szolgáltatás megvalósít egy szerződést, amely egy kérés-válasz kommunikációs mintát határoz meg. A szerződést az ICalculator interfész határozza meg, amely matematikai műveleteket (Hozzáadás, Kivonás, Szorzás és Osztás) tesz elérhetővé az alábbi mintakódban látható módon:

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
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);
}

A szolgáltatás implementációja kiszámítja és visszaadja a megfelelő eredményt:

// Service class that implements the service contract.
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;
    }
}

A minta a net.tcp kötés egy változatát használja, amely engedélyezi a TCP-portmegosztást, és a biztonság ki van kapcsolva. Ha biztonságos TCP-kötést szeretne használni, módosítsa a kiszolgáló biztonsági módját a kívánt beállításra, és futtassa újra a Svcutil.exe az ügyfélen egy frissítési ügyfélkonfigurációs fájl létrehozásához.

Az alábbi minta a szolgáltatás konfigurációját mutatja be:

<system.serviceModel>

    <services>
      <service name="Microsoft.ServiceModel.Samples.CalculatorService"
               behaviorConfiguration="CalculatorServiceBehavior">
        <!-- This endpoint is exposed at the base address provided by host: net.tcp://localhost/servicemodelsamples/service.svc  -->
        <endpoint binding="netTcpBinding" bindingConfiguration="PortSharingBinding"
          contract="Microsoft.ServiceModel.Samples.ICalculator" />
        <!-- the mex endpoint is exposed at net.tcp://localhost/servicemodelsamples/service.svc/mex -->
        <endpoint address="mex"
                  binding="mexTcpBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>
    <bindings>
      <netTcpBinding>
        <binding name="PortSharingBinding" portSharingEnabled="true">
          <security mode="None" />
        </binding>
      </netTcpBinding>
    </bindings>

    <!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
    <behaviors>
      <serviceBehaviors>
        <behavior name="CalculatorServiceBehavior">
          <serviceMetadata />
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>

Az ügyfél végpontja az alábbi mintakódban látható módon van konfigurálva:

<system.serviceModel>
    <bindings>
        <netTcpBinding>
          <binding name="NetTcpBinding_ICalculator">
            <security mode="None"/>
          </binding>
        </netTcpBinding>
    </bindings>
    <client>
        <endpoint address="net.tcp://localhost/servicemodelsamples/service.svc"
            binding="netTcpBinding" bindingConfiguration="NetTcpBinding_ICalculator"
            contract="Microsoft.ServiceModel.Samples.ICalculator" name="NetTcpBinding_ICalculator" />
    </client>
</system.serviceModel>

A minta futtatásakor a műveleti kérelmek és a válaszok megjelennek az ügyfélkonzol ablakában. Nyomja le az ENTER billentyűt az ügyfélablakban az ügyfél leállításához.

Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714

Press <ENTER> to terminate client.

A minta beállítása, összeállítása és futtatása

  1. Győződjön meg arról, hogy az IIS 7.0 telepítve van. A WAS aktiválásához IIS 7.0 szükséges.

  2. Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták egyszeri beállítási eljárását.

    Emellett telepítenie kell a WCF nem HTTP-aktiválási összetevőit:

    1. A Start menüben válassza a Vezérlőpult.

    2. Válassza a Programok és szolgáltatások lehetőséget.

    3. Kattintson a Windows-összetevők be- és kikapcsolása gombra.

    4. Bontsa ki a Microsoft .NET-keretrendszer 3.0 csomópontot, és ellenőrizze a Windows Communication Foundation nem HTTP aktiválási funkcióját.

  3. Konfigurálja a WAS-t a TCP-aktiválás támogatásához.

    A következő két lépés a mintakönyvtárban található AddNetTcpSiteBinding.cmd nevű kötegfájlban van implementálva.

    1. A net.tcp aktiválás támogatásához az alapértelmezett webhelyet először egy net.tcp-porthoz kell kötni. Ez az Internet Information Services 7.0 (IIS) felügyeleti eszközkészlettel telepített Appcmd.exe használatával végezhető el. Rendszergazdai szintű parancssorból futtassa a következő parancsot:

      %windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" -+bindings.[protocol='net.tcp',bindingInformation='808:*']
      

      Tipp.

      Ez a parancs egyetlen sornyi szöveg. Ez a parancs egy net.tcp-helykötést ad hozzá az alapértelmezett webhelyhez, amely a 808-ás TCP-portot figyeli, bármilyen gazdagépnévvel.

    2. Bár a webhelyen belüli összes alkalmazás közös net.tcp-kötéssel rendelkezik, minden alkalmazás egyenként engedélyezheti a net.tcp-támogatást. Ha engedélyezni szeretné a net.tcp protokollt a /servicemodelsamples alkalmazáshoz, futtassa a következő parancsot egy rendszergazdai szintű parancssorból:

      %windir%\system32\inetsrv\appcmd.exe set app
      "Default Web Site/servicemodelsamples" /enabledProtocols:http,net.tcp
      

      Feljegyzés

      Ez a parancs egyetlen sornyi szöveg. Ez a parancs lehetővé teszi, hogy a /servicemodelsamples alkalmazás mindkét http://localhost/servicemodelsamples és net.tcp://localhost/servicemodelsamples.

  4. A megoldás C# vagy Visual Basic .NET kiadásának létrehozásához kövesse a Windows Communication Foundation-minták készítéséhez szükséges utasításokat.

  5. Ha a mintát egy- vagy számítógépközi konfigurációban szeretné futtatni, kövesse a Windows Communication Foundation-minták futtatásával kapcsolatos utasításokat.

    Távolítsa el a mintához hozzáadott net.tcp-helykötést.

    Az alábbi két lépést a mintakönyvtárban található RemoveNetTcpSiteBinding.cmd nevű kötegfájlban implementáljuk.

    1. Távolítsa el a net.tcp-t az engedélyezett protokollok listájából a következő parancs rendszergazdai szintű parancssorból való futtatásával:

      %windir%\system32\inetsrv\appcmd.exe set app
      "Default Web Site/servicemodelsamples" /enabledProtocols:http
      

      Feljegyzés

      Ezt a parancsot egyetlen szövegsorként kell megadni.

    2. Távolítsa el a net.tcp-hely kötését a következő parancs rendszergazdai szintű parancssorból való futtatásával:

      %windir%\system32\inetsrv\appcmd.exe set site "Default Web Site"
      --bindings.[protocol='net.tcp',bindingInformation='808:*']
      

      Feljegyzés

      Ezt a parancsot egyetlen szövegsorként kell begépelni.

Lásd még