Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 bölümüne dayanmaktadır. Sözleşme ICalculator, hesaplanan bir sonucu tutacak şekilde 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 Result() çağırarak geçerli sonucu alabilir ve Clear() çağırarak 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.
Uyarı
Bu örnek için kurulum yordamı ve derleme yönergeleri bu konunun sonunda yer alır.
Sözleşmenin SessionMode ayarını Required olarak belirlemek, sözleşmenin belirli bir bağlama üzerinden sunulduğunda bağlamanın oturumları desteklediğinden emin olmanızı sağlar. Bağlama oturumları desteklemiyorsa bir istisna fırlatılır. 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 hizmet örneği bağlamını gelen her oturuma bağlamak için InstanceContextMode öğesini PerSession kullanır. Bu, hizmetin yerel üye değişkeninde her oturum için çalışma sonucunu 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, müşteri sunucuya birkaç istekte bulunur ve ardından sonucu talep eder, daha sonra bu sonucu müşteri konsolu penceresinde görüntüler. İ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
Windows Communication Foundation Örnekleri içinOne-Time Kurulum Yordamını yaptığınızdan emin olun.
Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örneklerioluşturma başlığındaki yönergeleri izleyin.
Örneği tek bir makine veya makineler arası bir yapılandırmada çalıştırmak için, Windows Communication Foundation örneklerini çalıştırmayönergelerini izleyin.