IIS 7 Mimarisi
Server 2008 ile hayatımıza adım atan Internet Information Service 7 , aslında hayatımızda büyük önem arzetmektedir. Herşeyde kullandığımız bu IIS yapısının önemini kavramak , bilişim sektöründe çalışanlar için önem taşımaktadır. Şimdi IIS 7 ile birlikte hayatımıza giren yeniliklerden , kolaylıklardan bahsedeceğiz. Kısacası bu yapının mimarisini özet olarak anlatmaya çalışacağız.
Birimsellik : IIS 7 , kendi içerisinde built-in gelen 40’tan fazla modülü barındırmaktadır. Çünkü IIS ve ASP.NET birleşimi , her ikisindede yerleşik olan yönetilebilir modüller sayesinde bir çok amaca hizmet edebilmektedir.
Genişletilebilirlik : IIS 7 tamamen genişletilmiş API sağlayıcıları ile web tabanlı yazılım geliştiriciler için bir çok özelliği ve işlevselliği içinde barındırmaktadır. Çekirdek web server modülünde IIS 7 , kullandığı yeni API’ler ile hem Win32 API , hemde .NET API’lere destek vermektedir. Bir web serverda yazılım geliştiriciler IIS ayarlarını , IIS yönetim konsolu ile çok rahat bir şekilde yapabilmektedirler.
Yönetici Kümeleri : IIS 7 gelişmiş yönetim paneli ile hem IIS hemde ASP.NET platformunun ayarları ile birlikte , devredilebilir yönetimsel haklar aracılığı ile kullanıcılara admin hakları olmadan control etmelerini sağlayabileceğiniz bir yapıdadır. IIS Yönetim konsolu yeni GUI yönetim konsolunu kapsar. IIS 7 için geliştirilen Appcmd.exe komut satırı ile de desteklenmiştir. Bununla ilgili ayrıca bir makale , gelecek zamanda olacaktır.
Sorun Tespiti ve Sorun Çözme : IIS 7 ile erişilebilirik çok ciddi boyutlara ulaşmıştır ve ulaşılamama süresi minimuma indirgenmiş vaziyettedir. Sorun giderme daha basite indirgenmiş bir haldedir.
IIS çok sayıda içerdiği temel bileşenleri ile , client tarafından gelen HTTP taleplerine cevap verir. Her bileşen için farklı bir sorumluluk üstlenmekte , gelecek olan talepler için sürekli dinlemede , etkinleştirme ve yönetim işlevlerini gerçekleştirmektedir.
HTTP Protocol Stack ( HTTP.sys ) : HTTP.sys kernel modundaki bir dinleyicidir ve client tarafından gelecek olan http ve https isteklerini sürekli olarak takip eder.
World Wide Web Service Publishing Service ( W3SVC ) : W3SVC , bir http dinleme adaptörüdür. Kendisinin iletişimini http.sys ve Windows Process Activation Service ile yapar.
Windows Process Activation Service ( WAS veya WPAS ) : WAS , yönetim ve iş süreçlerini sağlamaktadır. IIS hizmetinin başlatılmasından , durdurulmasından , geri dönüşümlerden , uygulama havuzlarından ve IIS monitörden sorumlu birimdir.
Configuration Store : Ayar Deposu XML bazı yayımlanan dosya hiyerarşisi ile hem IIS hemde ASP.NET ayarlarını saklar.
Worker Process ( W3WP.EXE ) : W3wp.exe programı , her daim çalışarak işlem isteklerine karşı cevap işlemleri üretir.
Aşağıdaki şemada kabaca işlem süreci gösterilmektedir.
Şekildede görüldüğü üzere numaralandırılmış algoritmada isteklerin nasıl sırayla bir bir katmanlardan geçtiğini görüyoruz.
1 – Client tarafından HTTP.sys’e bir HTTP isteği geliyor.
2 – HTTP.sys bu isteği nereye göndereceğini kontrol ediyor.
· Eğer HTTP.sys konfigürasyon bilgisine sahipse direk olarak çalışma processine , yani w3wp.exe’ye gönderiyor.
· Eğer HTTP.sys konfigürasyon bilgisine sahip değil ise , W3SVC ile kontak kurup svchost.exe aracılığı ile bunu WAS’a gönderiyor.
3 – WAS konfigürasyon bilgisini IIS global konfigürasyon dosyasından ( applicationHost.config ) bilgileri elde ediyor.
4 – WAS çalışan işlemleri kontrol ediyor. Eğer bir işlem yoksa uygulama havuzunda istenilen işlemi başlatıyor.
5 –WAS konfigürasyon bilgisini geçtikten sonra , W3SVC’ye bunları tekrar geri gönderiyor.
6 – W3SVC bu konfigürasyon dosyalarını kullanarak HTPP.sys’i günceller
7 – HTTP.sys isteği çalışan işleme yollar.
8 – Burada belirli otantikasyon işlemleri yapıldıktan sonra gerekli bilgileri tekrardan HTTP.sys’e iletir.
9 – HTTP.sys client bilgisayara cevap verir.
Peki Nedir Bu HTTP.sys ?
HTTP.sys , HTTP ve HTTPS istekleri için bir dinleyici protokoldür. Aslında IIS 6’da sunulmuştur. Fakat IIS 6 içerisinde HTTPS isteklerine cevap vermez. IIS 7’de ise HTTP.sys , Secure Sockets Layer ( SSL ) desteğini beraberinde getirmiştir. Bunuda Lsass.exe isimli programla yapar.
HTTP.sys , kernel modunda HTTP protokolü için bir aygıt sürücüsüdür aynı zamanda. Windows işletim sisteminde network altyapısının bir parçasıdır. IIS 6 ile gelen bu protokol , kernel modunda Windows Sockets API ( Winsock ) ile , HTTPS isteklerine yanıt verir.
World Wide Web Publishing Service
W3SVC , IIS 7’de önemli değişikliklere uğramıştır. IIS 6’da , w3svc http.sys yönetimi , konfigürasyon yönetimi , işlem yönetimi ve performans izleme görevlerini yerine getiriyordu.
IIS 7’de fonksiyonel olarak iki servis arasında bölündü diyebiliriz. W3SVC sadece Performans izleme ve Http.sys yönetiminden sorumlu oldu. İşlem yönetimi , konfigürasyon yönetimi WAS’a verildi. Bunların yanında IIS 6’da olmayan Arayüz dinleyici adaptörü rolüde WAS’a yüklendi.
Her iki işlemde , Svchost.exe programında yapılmaktadır.
Karşılaştıracak olursak , IIS 6 ve 7 de aşağıdaki tablodaki farklar ortaya çıkmıştır.
Rol |
IIS 6 |
IIS 7 |
Configuration Management |
W3SVC konfigürasyon bilgilerini , configuration store’dan okuyor. |
W3SVC artık bunu yapmıyor. Yerine bu işi WAS yapıyor. |
HTTP.sys Management |
W3SVC Http.sys bilgilerini konfigürasyon bilgileri ile güncelliyordu. |
Artık güncelleme işlemlerini WAS yapıyor. HTTP protokolü için kullanılan Arayüz dinleyici adaptörü , WAS ile HTTP.sys arasında köprü vazifesi görüyor. |
Process Management |
W3SVC uygulama havuzunu yönetiyor , başlatma , durdurma , geri dönüşüm işlemlerini yapıyordu. |
Bu sorumlulular artık WAS’a yüklendi. |
Performance Monitoring |
W3SVC hem web siteleri için hemde IIS Cache için izlemeyi yapıyordu. |
W3SVC artık sadece web siteleri için izleme yapıyor. |
Windows Process Activation Service
HTTP işlem aktivasyonu modeli IIS 6 içerisinde sunuldu. IIS 7 içinde ise bu servis daha bir genişletilerek Windows Process Activation Service ( WAS ) adını aldı.
IIS 7’de WAS , uygulama havuzunu ve çalışan işlemleri kontrol eden bir mekanizma haline geldi.
Evet arkadaşlar IIS 7’nin temel taşı olan HTTP.sys ve svchost.exe’nin içindekileri bu şekilde açıklamış olduk. Bir sonraki makalede görüşmek üzere.