2009-06-24 10 views
12

Uygulamamda bir bağımlılık enjeksiyon kabı kurulumum var ve bir WCF servis talebi geldiğinde kapsayıcıyı oluşturmanın verimsiz olacağını düşünüyorum.IIS tarafından barındırılan (http) WCF hizmetinin yaşam döngüsü nedir?

Birisi bana açıklayabilir, bir http/IIS tarafından barındırılan WCF hizmeti için hizmetin yaşam döngüsü nedir? Bunu anlayabilseydim, konteynerin nerede depolanacağı, örneklendirileceği, imha edileceği vb. Konusunda eğitimli bir karar verebilirim.

cevap

23

InstanceContextMode ürününüz PerCall ise, hizmet sınıfı her gelen istek için sıfırdan oluşturulacak ve sonra bittiğinde atılacaktır.

senin InstanceContextMode PerSessionise, hizmet sınıfı oluşturulur ve oturum süresince bir verilen müşteri hizmet için kullanılacaktır (veya bir "InactivityTimeout" karşılaşıldığında veya bir hata oluştuğunda kadar).

senin InstanceContextMode ilk istek gelir ve hiçbir hata oluşur sürece sürece istekler geliyor tutmak gibi hafızada kalacak ve hiçbir inactivityTimeout olduğunda, hizmet sınıfı oluşturulur Tek (tekil) ise ulaştı.

İşte orada var! Tabii ki, (PerSession ve Single hizmetler için) eşzamanlılık modu da şeyler daha "ilginç" sadece biraz yapmak için oyuna gelecek

+0

Güzel! Teşekkürler, tam olarak istediğim cevap. –

+2

Bunu ayarlamak için servis sınıfınıza bir ServiceBehaviorAttribute eklersiniz. Bu benimkiyle çok güzel bir şekilde eşleşen bir şey: [ServiceBehavior (InstanceContextMode = InstanceContextMode.PerCall)] – Twisted

0

ServiceBehavour'unuza bağlıdır. Özellikle this ve this.

1

Eğer bir bağımlılık enjeksiyon konteyner ile WCF hizmeti örnekleme bütünleştirmek çalışıyorlardı söz olarak, Sadece bunu yapmak için Castle WCF Integration Facility'u kullanarak çok olumlu bir deneyim yaşadığımı söylemek isterim.

Bu, Castle Windsor bağımlılık enjeksiyon kabına özgüdür, ancak açık kaynaklı olduğu için içeriğe bakar ve sunulan bazı zorlukları ve çözümleri anlarsınız.

İlgili konular