Aracılığıyla paylaş


Oturum

Oturum örneği , oturum gerektiren bir sözleşmenin nasıl uygulandığını gösterir. Oturum, birden çok işlem gerçekleştirmek için bağlam sağlar. Bu, sonraki işlemlerin önceki bir işlemin durumunu kullanabilmesi için hizmetin belirli bir oturumla durumu ilişkilendirmesine olanak tanır. Bu örnek, bir hesap makinesi hizmeti uygulayan Başlarken'i temel alır. Sözleşme ICalculator , çalışan bir sonuç tutularak bir dizi aritmetik işlemin gerçekleştirilebilmesine izin verecek şekilde değiştirildi. Bu işlev sözleşme tarafından ICalculatorSession tanımlanır. Bir hesaplama yapmak için birden çok hizmet işlemi çağrıldığı için hizmet bir istemcinin durumunu korur. İstemci çağırarak geçerli sonucu alabilir ve çağırarak Result()Clear()sonucu sıfır olarak temizleyebilir.

Bu örnekte istemci bir konsol uygulamasıdır (.exe) ve hizmet Internet Information Services (IIS) tarafından barındırılır.

Not

Bu örnek için kurulum yordamı ve derleme yönergeleri bu konunun sonunda yer alır.

Sözleşmenin SessionMode belirli bir bağlama üzerinden kullanıma sunulduğunda bağlamanın oturumları desteklediğinden emin olmak için Required sözleşmenin ayarlanması. Bağlama oturumları desteklemiyorsa bir özel durum oluşturulur. Arabirim ICalculatorSession , aşağıdaki örnek kodda gösterildiği gibi çalışan bir sonucu değiştiren bir veya daha fazla işlemin çağrılabileceği şekilde tanımlanır.

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

Hizmet, belirli bir InstanceContextMode hizmet örneği bağlamını PerSession gelen her oturuma bağlamak için öğesini kullanır. Bu, hizmetin yerel üye değişkenindeki her oturum için çalışan sonucu korumasını sağlar.

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

Örneği çalıştırdığınızda, istemci sunucuya birkaç istekte bulunur ve sonucu istediğinde istemci konsolu penceresinde görüntülenir. İstemciyi kapatmak için istemci penceresinde ENTER tuşuna basın.

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

Örneği ayarlamak, derlemek ve çalıştırmak için

  1. Windows Communication Foundation Örnekleri için Tek Seferlik Kurulum Yordamı'nı gerçekleştirdiğinizden emin olun.

  2. Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örnekleri Oluşturma başlığındaki yönergeleri izleyin.

  3. Örneği tek veya makineler arası bir yapılandırmada çalıştırmak için Windows Communication Foundation Örneklerini Çalıştırma başlığındaki yönergeleri izleyin.