Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ukázka relace ukazuje, jak implementovat kontrakt, který vyžaduje relaci. Relace poskytuje kontext pro provádění několika 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 pro klienta, zatímco se volá několik operací služby, aby provedly výpočet. Klient může načíst aktuální výsledek voláním Result() a nastavit výsledek na nulu voláním Clear().
V této ukázce je klient konzolovou aplikací (.exe) a služba je hostovaná internetovou informační službou (IIS).
Poznámka:
Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.
Nastavení SessionMode kontraktu na Required zajistí, že když je kontrakt vystaven přes konkrétní systém vazby, systém vazby podporuje relace. Pokud vazba nepodporuje relace, dojde k vyvolání výjimky. Rozhraní ICalculatorSession je definováno tak, aby bylo možné volat jednu nebo více operací, které mění průběž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á InstanceContextModePerSession ke svázání kontextu dané instance služby s každou příchozí relací. To umožňuje službě udržovat výsledek běhu pro každou relaci v lokální č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.
Jak nastavit, sestavit a spustit ukázku
Ujistěte se, že jste provedli instalační proceduru One-Time pro ukázky Windows Communication Foundation.
Pokud chcete sestavit verzi C# nebo Visual Basic .NET řešení, postupujte podle pokynů v Sestavení ukázek Windows Communication Foundation.
Pokud chcete spustit ukázku v konfiguraci pro jeden počítač nebo pro více počítačů, postupujte podle pokynů v Spuštění ukázek Windows Communication Foundation.