Megosztás:


Egyéni kötés átvitele és kódolása

Az átviteli minta bemutatja, hogyan konfigurálhat egyéni kötéseket különböző átviteli és üzenetkódolási elemekkel. Az egyéni kötéseket a különálló kötéselemek rendezett listája határozza meg.

Megjegyzé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.

Ez a minta a saját hoszt alapján készült, és úgy lett módosítva, hogy három végpontot konfiguráljon a HTTP, TCP és NamedPipe adatátviteli módok egyéni kötésekkel való támogatására. Az ügyfélkonfiguráció hasonlóképpen módosult, és az ügyfélkód úgy módosult, hogy a három végpont mindegyikével kommunikáljon.

A minta bemutatja, hogyan konfigurálhat egy egyéni kötést, amely támogatja az adott átvitelt és üzenetkódolást. Ez egy átvitel és egy üzenetkódolás konfigurálásával érhető el a binding elem számára. Az egyéni kötések definiálásához fontos a kötéselemek sorrendje, mivel mindegyik egy réteget jelöl a csatornaveremben (lásd : Egyéni kötések). Ez a minta három egyéni kötést konfigurál: egy szövegkódolással rendelkező HTTP-átvitelt, egy szövegkódolással rendelkező TCP-átvitelt és egy bináris kódolású NamedPipe-átvitelt.

A szolgáltatáskonfiguráció a következőképpen határozza meg az egyéni kötéseket:

<bindings>
    <customBinding>
        <binding name="HttpBinding" >
            <textMessageEncoding
                messageVersion="Soap12Addressing10"/>
            <httpTransport />
        </binding>
        <binding name="TcpBinding" >
            <textMessageEncoding />
            <tcpTransport />
        </binding>
        <binding name="NamedPipeBinding" >
            <binaryMessageEncoding />
            <namedPipeTransport />
        </binding>
    </customBinding>
</bindings>

A minta futtatásakor a műveleti kérelmek és a válaszok a szolgáltatás és az ügyfélkonzol ablakában is megjelennek. Az ügyfél mindhárom végponttal kommunikál, és hozzáfér az első HTTP-hez, majd a TCP-hez, végül pedig a NamedPipe-hez. A szolgáltatás és az ügyfél leállításához nyomja le az ENTER billentyűt az egyes konzolablakokban.

A namedPipeTransport kötés nem támogatja a gépek között végzett műveleteket. Csak ugyanazon a gépen történő kommunikációhoz használható. Ezért amikor gépközi forgatókönyvben futtatja a mintát, megjegyzést fűzzön az ügyfélkódfájl alábbi soraihoz:

CalculatorClient client = new CalculatorClient("default");
Console.WriteLine("Communicate with named pipe endpoint.");
// Call operations.
DoCalculations(client);
//Closing the client gracefully closes the connection and cleans up resources
client.Close();
Dim client As New CalculatorClient("default")
Console.WriteLine("Communicate with named pipe endpoint.")
' call operations
DoCalculations(client)
'Closing the client gracefully closes the connection and cleans up resources
client.Close()

Megjegyzés:

Ha a Svcutil.exe használatával hozza létre újra a minta konfigurációját, mindenképpen módosítsa az ügyfélkonfiguráció végpontnevét az ügyfélkódnak megfelelően.

A példa beállítása, elkészítése és futtatása

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

  2. A megoldás C#, C++ vagy Visual Basic .NET kiadásának létrehozásához kövesse a Windows Communication Foundation-minták készítésének utasításait.

  3. Ha a mintát egy vagy több gép közötti konfigurációban szeretné futtatni, kövesse A Windows Communication Foundation-minták futtatásacímű témakör utasításait.