2010-05-26 29 views
29

Bu konudaki belgeler zayıf. Windows hizmetinde barındırılan NetTcpBinding ile WCF hizmetlerini kullanıyorum. Sorun, bir süredir etkin olmayan bir oturumun bırakılmasıdır. İhtiyacım olan şey her zaman canlı olan oturum. WCF güvenilir oturumu yardımcı olabilecek bir şey var mı? Ya da sadece zaman aşımı ayarları ile oynayabilir miyim?WCF güvenilir oturumunun amacı nedir?

cevap

39

Hayır, diğer oturumlarda olduğu gibi güvenilir bir oturum da zaman aşımına uğrayacaktır. Asıl soru gerçekten: Dünyada neden oturumlarınızın "sonsuz" olmasını istiyorsunuz? Gerçekten buna ihtiyacınız varsa, oturumdaki zaman aşımlarını kranklamanız gerekir.

Güvenilir bir oturumun amacı, arayanın kaybolan mesajlar hakkında bilmesidir. Yaygın inanışın aksine, güvenilir oturum bir mesajın iletilmesini garanti edemez - ancak bir mesaj iletilemezse, en azından arayan kişi bunu bilecektir. Daha fazla arka plan bilgi için

Kontrol dışarı bu kaynakların bazıları:

+0

Teşekkür okuyun. "Sonsuz" oturum ile ilgili olarak: Olay odaklı bir sistemim var. Bir mesaj geldiğinde, müşteri bazı WCF servislerini çağırmalıdır. Mesajlar her saniye gelebilir ve her birini işlemek için tutmak önemlidir. Bazen bir mesaj alma arasındaki aralık bir saniyeden fazla olabilir, bir veya iki gün diyelim. Bu yüzden hayatta kalmak için bir mekanizmaya ihtiyacım var. –

+1

@bsnote: neden? İki mesaj arasındaki süre iki gündür, bu seansta bu kadar aktif ve aktif olmanın bir anlamı yok, benim görüşüme göre .... –

+0

Her mesaj alındığında bir mesaj alındığında kanal oluşturmak çok pahalı her saniye alınır. Her ne kadar aralık bir gün olduğunda seans yapmanın bir anlamı olmadığını kabul etsem de. –

6

Kanalı kullanmak vermezsek, o kapanacak bir süre sonra kendini. , varsayılan zaman aşımını (10 dk.) Ciltlemeden değiştirebilirsiniz.

NetTcpBinding binding = new NetTcpBinding(); 
binding.ReceiveTimeout = TimeSpan.MaxValue; 
binding.ReliableSession.InactivityTimeout = TimeSpan.MaxValue; 

için güvenilir bir oturum ne netleştirmek için daha az MSDN