Sdílet prostřednictvím


Relace

Ukázka relace ukazuje, jak implementovat kontrakt, který vyžaduje relaci. Relace poskytuje kontext pro provádění více operací. To umožňuje službě přidružit stav k dané relaci, aby následné operace mohly použít stav předchozí operace. Tato ukázka vychází ze služby Začínáme, která implementuje službu kalkulačky. Smlouva ICalculator byla upravena tak, aby umožňovala provádění sady aritmetických operací při zachování spuštěného výsledku. Tato funkce je definována kontraktem ICalculatorSession . Služba udržuje stav klienta jako několik operací služby, které se volají k provedení výpočtu. Klient může načíst aktuální výsledek voláním Result() a vymazáním výsledku na nulu voláním Clear().

V této ukázce je klient konzolovou aplikací (.exe) a služba je hostovaná Internetová informační služba (IIS).

Poznámka:

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

SessionMode Nastavení kontraktu tak, aby Required se zajistilo, že když je kontrakt vystaven přes konkrétní vazbu, vazba podporuje relace. Pokud vazba nepodporuje relace, vyvolá se výjimka. Rozhraní ICalculatorSession je definováno tak, aby jedna nebo více operací bylo možné volat, což upraví spuštěný výsledek, jak je znázorněno v následujícím vzorovém kódu.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples", SessionMode=SessionMode.Required)]
public interface ICalculatorSession
{
    [OperationContract(IsOneWay=true)]
    void Clear();
    [OperationContract(IsOneWay = true)]
    void AddTo(double n);
    [OperationContract(IsOneWay = true)]
    void SubtractFrom(double n);
    [OperationContract(IsOneWay = true)]
    void MultiplyBy(double n);
    [OperationContract(IsOneWay = true)]
    void DivideBy(double n);
    [OperationContract]
    double Result();
}

Služba používá k InstanceContextModePerSession vytvoření vazby kontextu dané instance služby ke každé příchozí relaci. To umožňuje službě udržovat spuštěný výsledek pro každou relaci v místní členské proměnné.

[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]
public class CalculatorService : ICalculatorSession
{
    double result = 0.0D;

    public void Clear()
    {  result = 0.0D; }

    public void AddTo(double n)
    {  result += n;   }

    public void SubtractFrom(double n)
    {  result -= n;   }

    public void MultiplyBy(double n)
    {  result *= n;   }

    public void DivideBy(double n)
    {  result /= n;   }

    public double Result()
    {  return result; }
}

Když spustíte ukázku, klient odešle na server několik požadavků a požádá o výsledek, který se pak zobrazí v okně konzoly klienta. Stisknutím klávesy ENTER v okně klienta klienta ukončete klienta.

(((0 + 100) - 50) * 17.65) / 2 = 441.25
Press <ENTER> to terminate client.

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

  1. Ujistěte se, že jste pro ukázky windows Communication Foundation provedli jednorázovou instalační proceduru.

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

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