Delen via


WS Dual Http

Het DualHttp-voorbeeld laat zien hoe u de WSDualHttpBinding binding configureert. Dit voorbeeld bestaat uit een clientconsoleprogramma (.exe) en een servicebibliotheek (.dll) die wordt gehost door IIS (Internet Information Services). De service implementeert een dubbelzijdig contract. Het contract wordt gedefinieerd door de ICalculatorDuplex interface, die wiskundige bewerkingen weergeeft (optellen, aftrekken, vermenigvuldigen en delen). In dit voorbeeld kan de ICalculatorDuplex client wiskundige bewerkingen uitvoeren, waardoor het resultaat van de sessie wordt berekend. Onafhankelijk van elkaar retourneert de service resultaten op de ICalculatorDuplexCallback interface. Een dubbelzijdig contract vereist een sessie, omdat er een context tot stand moet worden gebracht om de set berichten te correleren die worden verzonden tussen de client en de service. De WSDualHttpBinding binding ondersteunt dubbelzijdige communicatie.

Notitie

De installatieprocedure en build-instructies voor dit voorbeeld bevinden zich aan het einde van dit onderwerp.

Als u een service-eindpunt wilt configureren met de WSDualHttpBindingservice, geeft u de binding op in de eindpuntconfiguratie, zoals wordt weergegeven.

<endpoint address=""
         binding="wsDualHttpBinding"
         contract="Microsoft.ServiceModel.Samples.ICalculatorDuplex" />

Op de client moet u een adres configureren dat de server kan gebruiken om verbinding te maken met de client, zoals wordt weergegeven in de volgende voorbeeldconfiguratie.

<system.serviceModel>
  <client>
    <endpoint address=
         "http://localhost/servicemodelsamples/service.svc"
         binding="wsDualHttpBinding"
         bindingConfiguration="Binding1"
         contract="Microsoft.ServiceModel.Samples.ICalculatorDuplex" />
  </client>

  <bindings>
    <!-- Configure a WSDualHttpBinding that supports duplex -->
    <!-- communication. -->
    <wsDualHttpBinding>
      <binding name="Binding1"
               clientBaseAddress="http://localhost:8000/myClient/"
               useDefaultWebProxy="true"
               bypassProxyOnLocal="false">
      </binding>
    </wsDualHttpBinding>
  </bindings>
</system.serviceModel>

Wanneer u het voorbeeld uitvoert, worden de bewerkingsaanvragen en -antwoorden weergegeven in het clientconsolevenster. Druk op Enter in het clientvenster om de client af te sluiten.

Press <ENTER> to terminate client once the output is displayed.

Result(100)
Result(50)
Result(882.5)
Result(441.25)
Equation(0 + 100 - 50 * 17.65 / 2 = 441.25)

Wanneer u het voorbeeld uitvoert, ziet u de berichten die naar de client zijn geretourneerd op de callback-interface die vanuit de service wordt verzonden. Elk tussenliggend resultaat wordt weergegeven, gevolgd door de volledige vergelijking na voltooiing van alle bewerkingen. Druk op Enter om de client af te sluiten.

Het voorbeeld instellen, compileren en uitvoeren

  1. Installeer ASP.NET 4.0 met de volgende opdracht.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. Zorg ervoor dat u de eenmalige installatieprocedure voor de Windows Communication Foundation-voorbeelden hebt uitgevoerd.

  3. Als u de C# of Visual Basic .NET-editie van de oplossing wilt bouwen, volgt u de instructies in het bouwen van de Windows Communication Foundation-voorbeelden.

  4. Als u het voorbeeld wilt uitvoeren in een configuratie met één of meerdere computers, volgt u de instructies in Het uitvoeren van de Windows Communication Foundation-voorbeelden.

    Belangrijk

    Wanneer u de client uitvoert in een configuratie tussen computers, moet u localhost vervangen in zowel het kenmerk van het address eindpunt van <het <clientelement>> als het clientBaseAddress kenmerk van het <bindingselement> van het< wsDualHttpBinding-element> door de naam van de juiste computer, zoals wordt weergegeven:

    <client>
        <endpoint name = ""
          address=
         "http://service_machine_name/servicemodelsamples/service.svc"
        />
    </client>
    ...
    <wsDualHttpBinding>
        <binding name="DuplexBinding" clientBaseAddress=
            "http://client_machine_name:8000/myClient/">
        </binding>
    </wsDualHttpBinding>