Güvenli Oturumlar için En İyi Uygulamalar
Bu konuda, güvenilir oturumlar için en iyi yöntemler açıklanmaktadır.
MaxTransferWindowSize ayarını belirleme
Windows Communication Foundation'daki (WCF) güvenilir oturumlar, istemci ve hizmette iletileri tutmak için bir aktarım penceresi kullanır. Yapılandırılabilir özelliği MaxTransferWindowSize , aktarım penceresinin kaç ileti barındırabileceğini gösterir.
Gönderende bu, aktarım penceresinin onay beklerken kaç ileti tutabileceğini gösterir; alıcıda, hizmet için arabelleğe alınacak ileti sayısını gösterir.
Doğru boyutun seçilmesi, ağın verimliliğini ve hizmetin en uygun kapasitesini etkiler. Aşağıdaki bölümlerde, bu özellik için bir değer seçerken dikkat edilmesi gerekenler ve değerin etkisi ayrıntılı olarak ele alınmaktadır.
Varsayılan aktarım penceresi boyutu sekiz iletidir.
Ağın verimli kullanımı
Bu bağlamda ağ terimi, bir istemci (gönderen) ile bir hizmet (alıcı) arasındaki iletişimin temeli olarak kullanılan her şeye karşılık gelir. Bu, SOAP yönlendiricileri veya HTTP proxy'leri/güvenlik duvarları dahil olmak üzere aktarım bağlantılarını ve aradaki aracı veya köprüleri içerir.
Ağın verimli kullanımı, ağ kapasitesinin tam olarak kullanılmasını sağlar. Hem ağ üzerinden saniye başına aktarılabilir veri miktarı (veri hızı) hem de gönderenden alıcıya veri aktarma süresi (gecikme) ağın ne kadar etkili bir şekilde kullanılacağını etkiler.
Gönderende özelliği MaxTransferWindowSize , aktarım penceresinin onay beklerken kaç ileti tutabileceğini gösterir. Ağ gecikme süresi yüksekse ve yanıt veren bir gönderen ve etkili bir ağ kullanımı sağlamak için aktarım penceresi boyutunu artırmanız gerekir.
Örneğin, gönderen veri hızına yetişse bile, gönderen ile alıcı arasında birkaç aracı varsa veya verilerin kayıplı bir aracıdan veya ağdan geçmesi gerekiyorsa gecikme süresi yüksek olabilir. Bu nedenle, gönderenin, iletide gönderilecek yeni iletileri kabul etmeden önce aktarım penceresinde iletilerin onaylanmasını beklemesi gerekir. Arabellek yüksek gecikme süresiyle ne kadar küçük olursa, ağ kullanımı o kadar az etkili olur. Öte yandan, hizmetin istemci tarafından gönderilen yüksek veri hızını yakalaması gerekebileceğinden aktarım penceresi boyutunun çok yüksek olması hizmeti etkileyebilir.
Hizmeti kapasiteye çalıştırma
Ağ verimli bir şekilde kullandıkça, ideal olarak hizmetin en uygun kapasitede çalışmasını da istersiniz. Alıcıdaki aktarım penceresi boyutu özelliği, alıcının arabelleğe alabildiği ileti sayısını gösterir. Bu ileti arabelleğe alma, yalnızca ağ akışı denetimine yardımcı olmakla kalmaz, aynı zamanda hizmetin tam kapasitede çalışmasına da olanak tanır. Örneğin, arabellek bir iletiyse ve iletiler hizmetin işleyebileceğinden daha hızlı ulaşırsa, ağ iletileri bırakabilir ve kapasite boşa harcanabilir veya az kullanılabilir.
Arabelleğin kullanılması, daha önce alınan iletileri işlerken bir iletiyi eşzamanlı olarak aldığından ve arabelleğe aldığından hizmetin kullanılabilirliğini artırır.
Bunu hem gönderende hem de alıcıda kullanmanızı MaxTransferWindowSize
öneririz.
Akış denetimini etkinleştirme
Akış denetimi , gönderenin ve alıcının birbirine ayak uydurmasını, yani iletilerin tüketilmesini ve üretildiği kadar hızlı davranmasını sağlayan bir mekanizmadır. İstemci ve hizmetteki aktarım penceresi boyutu, gönderenin ve alıcının makul bir eşitleme penceresi içinde olmasını sağlar.
BIR WCF istemcisi ile WCF hizmeti arasında güvenilir bir oturum kullanırken özelliğini FlowControlEnabledtrue
olarak ayarlamanızı kesinlikle öneririz.
MaxPendingChannels'i ayarlama
Farklı istemcilerden güvenilir oturum iletişimi sağlayan bir hizmet yazarken, birçok istemcinin aynı anda hizmet için güvenilir bir oturum oluşturmasını sağlamak mümkündür. Bu durumlarda hizmetin yanıtı özelliğine MaxPendingChannels
bağlıdır.
Gönderen, alıcıya güvenilir bir oturum kanalı oluşturduğunda, aralarında el sıkışma güvenilir bir oturum oluşturur. Güvenilir oturum oluşturulduktan sonra kanal, hizmet tarafından kabul için bekleyen bir kanal kuyruğuna konur. MaxPendingChannels
özelliği, bu durumda kaç kanalın olabileceğini gösterir.
Hizmetin daha fazla kanalı kabul edebildiği bir durumda olması mümkündür. Kuyruk doluysa, güvenilir oturum oluşturma girişimi reddedilir ve istemcinin yeniden denemesi gerekir.
Kuyruktaki bekleyen kanalların daha uzun süre kuyrukta kalması da mümkündür. Bu arada, güvenilir oturumda etkinlik dışı bir zaman aşımı meydana gelebilir ve bu da kanalın hatalı duruma geçmesine neden olabilir.
Aynı anda birden çok istemciye hizmet veren bir hizmet yazarken, ihtiyaçlarınıza uygun bir değer ayarlamanız gerekir. Özellik için MaxPendingChannels
çok yüksek bir değer ayarlamak çalışma kümenizi etkiler.
için MaxPendingChannels varsayılan değer dört kanaldır.
Güvenilir oturumlar ve barındırma
Güvenilir oturumlar kullanan bir hizmeti web'de barındırırken, aşağıdaki önemli noktaları göz önünde bulundurmanız gerekir:
Güvenilir oturumlar durum bilgisi vardır ve AppDomain'de durum korunur. Bu, güvenilir bir oturumun parçası olan tüm iletilerin aynı AppDomain içinde işlenmesi gerektiği anlamına gelir. Grup veya bahçe boyutunun bir düğümden büyük olduğu web grupları ve web bahçeleri bu kısıtlamayı garantileyemez.
İkili HTTP kanalı kullanan güvenilir oturumlar (örneğin, kullanarak
WsDualHttpBinding
), istemci başına iki HTTP bağlantısının varsayılanından fazlasını gerektirebilir. Bu, eş zamanlı uygulama ve protokol iletileri herhangi bir zamanda her şekilde aktarılabildiği için çift yönlü güvenilir oturumun her şekilde en fazla iki bağlantı gerektirebileceği anlamına gelir. Hizmetin ileti değişimi düzenine bağlı olarak belirli koşullar altında, bu, web'de barındırılan bir hizmeti çift HTTP ve güvenilir oturumlar kullanarak kilitlenmenin mümkün olduğu anlamına gelir. İstemci başına izin verilebilen HTTP bağlantısı sayısını artırmak için, ilgili yapılandırma dosyasına aşağıdakileri ekleyin (örneğin, söz konusu hizmetin web.config ):<configuration> <system.net> <connectionManagement> <add name="*" maxconnection="4" /> </connectionManagement> </system.net> </configuration>
özniteliğinin
maxconnection
değeri, gereken bağlantı sayısıdır. Bu durumda en düşük değer dört bağlantı olmalıdır.