Sdílet prostřednictvím


Aktivace protokolem TCP

Ukázka tcpActivation ukazuje hostování služby, která používá službu aktivace procesu systému Windows (WAS) k aktivaci služby, která komunikuje přes protokol net.tcp. Tato ukázka je založená na začínáme.

Poznámka:

Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.

Ukázka se skládá z programu konzoly klienta (.exe) a knihovny služeb (.dll) hostované v pracovním procesu aktivovaném službou WAS. Aktivita klienta je viditelná v okně konzoly.

Služba implementuje kontrakt, který definuje komunikační vzor žádosti a odpovědi. Kontrakt je definován ICalculator rozhraním, které zveřejňuje matematické operace (sčítání, odčítání, násobení a dělení), jak je znázorněno v následujícím vzorovém kódu:

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

Implementace služby vypočítá a vrátí odpovídající výsledek:

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

Ukázka používá variantu vazby net.tcp s povoleným sdílením portů TCP a vypnutým zabezpečením. Pokud chcete použít zabezpečenou vazbu TCP, změňte režim zabezpečení serveru na požadované nastavení a znovu spusťte Svcutil.exe v klientovi a vygenerujte aktualizační konfigurační soubor klienta.

Následující ukázka ukazuje konfiguraci služby:

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

Koncový bod klienta je nakonfigurovaný, jak je znázorněno v následujícím ukázkovém kódu:

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

Při spuštění ukázky se požadavky na operace a odpovědi zobrazí v okně konzoly klienta. Stisknutím klávesy ENTER v okně klienta klienta ukončete klienta.

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.

Nastavení, sestavení a spuštění ukázky

  1. Ujistěte se, že je nainstalovaná služba IIS 7.0. Pro aktivaci WAS se vyžaduje služba IIS 7.0.

  2. Ujistěte se, že jste pro ukázky windows Communication Foundation provedli jednorázový postup instalace.

    Kromě toho je nutné nainstalovat komponenty pro aktivaci WCF bez HTTP:

    1. V nabídce Start zvolte Ovládací panely.

    2. Vyberte Programy a funkce.

    3. Klikněte na Zapnout nebo vypnout součásti systému Windows.

    4. Rozbalte uzel Microsoft .NET Framework 3.0 a zkontrolujte funkci aktivace technologie Windows Communication Foundation bez protokolu HTTP.

  3. Nakonfigurujte was pro podporu aktivace TCP.

    Pro usnadnění jsou následující dva kroky implementovány v dávkovém souboru s názvem AddNetTcpSiteBinding.cmd umístěném v ukázkovém adresáři.

    1. Aby bylo možné podporovat aktivaci net.tcp, musí být výchozí web nejprve vázán na port net.tcp. To lze provést pomocí Appcmd.exe, který je nainstalován se sadou nástrojů pro správu Internetová informační služba 7.0 (IIS). Z příkazového řádku na úrovni správce spusťte následující příkaz:

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

      Tip

      Tento příkaz je jeden řádek textu. Tento příkaz přidá vazbu webu net.tcp na výchozí web naslouchá na portu TCP 808 s libovolným názvem hostitele.

    2. I když všechny aplikace v rámci webu sdílejí společnou vazbu net.tcp, každá aplikace může povolit podporu net.tcp jednotlivě. Pokud chcete pro aplikaci /servicemodelsamples povolit net.tcp, spusťte z příkazového řádku na úrovni správce následující příkaz:

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

      Poznámka:

      Tento příkaz je jeden řádek textu. Tento příkaz umožňuje přístup k aplikaci /servicemodelsamples pomocí obou http://localhost/servicemodelsamples a net.tcp://localhost/servicemodelsamples.

  4. Pokud chcete sestavit edici C# nebo Visual Basic .NET řešení, postupujte podle pokynů v části Sestavení ukázek windows Communication Foundation.

  5. Pokud chcete spustit ukázku v konfiguraci s jedním nebo více počítači, postupujte podle pokynů v části Spuštění ukázek windows Communication Foundation.

    Odeberte vazbu webu net.tcp, kterou jste přidali pro tuto ukázku.

    Pro usnadnění je následující dva kroky implementované v dávkovém souboru s názvem RemoveNetTcpSiteBinding.cmd umístěném v ukázkovém adresáři.

    1. Ze seznamu povolených protokolů odeberte příkaz net.tcp spuštěním následujícího příkazu z příkazového řádku na úrovni správce:

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

      Poznámka:

      Tento příkaz musí být zadán jako jeden řádek textu.

    2. Odeberte vazbu webu net.tcp spuštěním následujícího příkazu z příkazového řádku na úrovni správce:

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

      Poznámka:

      Tento příkaz musí být zadán jako jeden řádek textu.

Viz také