Makale Özeti

Windos Vista ile birlikte gelen ve web sunucu yazılımı konusunda birçok yenilikle karışımıza çıkan IIS 7.0 konusuna detaylıca değinen bir makale. IIS in eski sürümlerinde site yönetirken yaşadığımız zorluklar ve bu zorluklara microsoft tarafından getirilen en son çözümler hakkında bilgileri bu yazıda bulacaksınız.

Makale

Web uygulamalarımızı yayınlayabilmek ve onları yönetebilmek için mutlaka bir web sunucusuna ihtiyaç duymaktayız. Microsoft tarafından gelitirilen ve web abanlı .Net uygulamalarımızı sunucu tarafında yayınlamamıza olanak veren uygulamanın adı da IIS (Internet Information Services) yani İnternet Bilgi Servisleri. Bu makalede, Microsoft tarafından geliştirilen son IIS sürümü olan IIS 7.0 ile birlikte gelen yeniliklere değinmeye çalışacağız.

IIS ilke defa 2001 yılında Windows NT’nin piyasaya srülmesi ile karşımıza çıktı. Daha sonra geçirmiş olduğu 4 yeni sürüm atlaması ile IIS 5.0’ a ulaştığında artık birçok insan tarafından bilinen kulanışlı bir web server uygulaması halini aldı. Bugün ise Windows Vista ile birlikte IIS 7.0 yayınlandı. Gelin şimdi IIS 7.0 ile hayatımıza ne gibi kolaylıklar eklendiğini inceleyelim.

Modüler Web Sunucusu

Daha önceki IIS sürümlerinde, kurulum esnasında seçtiğimiz opsiyonalarda değşiklik yapmak istediğimizde, yada sunucumuza yeni bir özellik katmak istediğimizde bu değişiklik için tüm kurulumu baştan yapmamız gerekliydi. Bu da sunucumuzun bi süre pasif durumda kalmasına, gereksiz zaman kaybı ve iş yüküne neden lmaktaydı. Oysa IIS 7.0 ile birlikte gelen 40 dan fazla plug-in ve server konfigürasyon seçeneğini, herhangi bir kurulum yapmadan aşağıda gösterilen ekran aracılığı ile yönetmek mümkün.

Resim - 1: IIS 7.0 genel konfigürasyon seçeneleri yönetim ekranı.

Makalenin ilerleyen bölümlerinde görebileceğimiz gibi, burada bulunan plug-in lere yenilerini eklemek hatta kendi plug-in lerimizi de geliştirerek sunucumuza yeni özellikler kazandırmak da artık mümkün.

Basitleştirilmiş Yayınlama ve Konfigürasyon Yönetimi

Yukarıdaki ekranda yapabileceğimiz konfigürasyon ayaralarını hem web site hem de server bazında XML dosyasında bilgileri tutarak da yapmamız mümkün. Bu çok yeni özelliğin nasıl kllanılacağına gelince; ASP.NET ile birlikte gelen ve kolaylıkla kullandığımız web.config dosyalarımızdaki mantık aynen IIS içinde artık geçerli.

applicationHost.config dosyası içerisinde belirteceğimiz detaylar ile sunucu ayarlarımızı yapmak artık çok kolay bir hale geliyor. Aşağıda kullanımı ile ilgili bir örneği görebilirsiniz.

<configuraion>
   <system.webServer>
      <directoryBrowse enabled=”true” />
   </system.webServer>
   <myBandwidthThrottler enabled=”true” />
</configuration>

Geliştirilmiş Yönetim Ekranı

Aşağıda görüntüsünü inceleyebilidğimiz ekran daha önceki IIS sürümlerinde gelen IIS Manager, InetMgr.exe nin yerini almış durumda. Bu yeni ekran ile detaylarını birazdan göreceğimiz birçok işlemi çok daha hızlı e kolay bir şekilde gerçekleştirmemiz mümkün hale geliyor.

Resim – 2 : IIS Manager’ın en yeni ekran görüntüsü

Gelen en önemli yeniliklerden birisi, firewall’a takılmadan geçebilen HTTP / SSL bağlantısı ile uzaktan server yönetimi yapabilmemiz. Bu yenilik en çok dışardaki bir firmadan hosting hizmeti alanların işine yarayacağa benziyor. Çünkü bu yapı ile artık kendi PC’mizde bulunan IIS Manager’a uzaktaki web server’ımızda bulunan bir siteyi ekleyebiliyor ve tüm yönetimsel işlemleri kendi bilgilsayarımız üzerinden kolaylıkla gerçekleştirebiliyoruz. Tabi bununla ilgili yetkiyi yine server tarafında bulunan hosting firmasını bize vermiş olmaı gerekiyor. Kısacası kullanıcıya verilen yetkiler çerçevesinde remote desktop bağlantısı kullanılmadan doğrudan IIS üzerinden önetim işlemlerini gerçekleştirmek mümkün hale geliyor.

Bunun dışında IIS 7.0 Manager kendi yazdığımız plug-inler ile yönetim yapmamıza da olanak sağlıyor. Geliştirdiğimiz plug-ini yine bu ekrana opsiyon olarak eliyor ve kendi kullanıcı arayüzleri ile yönetmemiz sağlanabiliyor. Bununla iligli detaylı bilgiyi IIS ‘in kendi istesindeki makaleleri inceleyerek alabilirsiniz.
http://iis.net/default.aspx?tabid=7&subtabid=73


Resim – 3: Appcmd.exe ekran görüntüsü

Yukarıdaki eranda da görüldüğü gibi bir diğer yöentim aracımız ise command line olarak çalışan appcmd.exe isimli dosya. Bu exe dosyası ile de sunucudaki web site’ları durdrup başlatmak, uygulama havuzunu resetlemek, çalışan worker process durumlarını gözlemlemek mümkün. Yine bu konu ile ilgili detaylı bilgi de IIS blog larından takip edilebilir.
Detaylı bilgi: http://iis.net/default.aspx?tabid=2&subtabid=25&i=954&p=1

Web Server’a Yeni Eklentiler Geliştirelim

Daha gelişmiş uygulamalar için server’a müdahale etmemiz gerektiğinde Windows Vista ile birlikte gelen Windows API ileri kullanmak mümkün. Daha önceki IIS sürümlerinde de bulunan bu API bu kez daha fazla geliştirlmiş ve kullanımı biraz daha kolaylaştrılmış durumda. C++ ile geliştirilen bu eklentiler. Windows Vista SDK içinde \inc\httpserv.h header dosyasında bulunmakta. Bu Apu içindeki birtakım class lar ile sunucu objelerini yönetip üzerine eklentiler gelitirilebiliyor.

Bu sınıflara birkaç örnek verecek olursak;

  • IHttpRequest sınıfı ile sunucuya gelen talepleri incelemek

  • IHttpResponse ile sunucunun verdiği cevapları görmek

  • IHttpServer sınıfı ile birtakım server fonksyionlarını yönetmek

  • IHttpUser ile kullanıcı kimlik doğrulaması işlemlerini yönetmek

Konu ile ilgili C++ geliştirmelerine ilgi duyuyorsanız detaylı bilgiliyi bu adresden inceleyebilirsiniz.
http://mvolo.com/blogs/serverside/archive/2006/10/07/10-reasons-why-server-development-is-better-with-IIS7.aspx

ASP.NET Entegrasyonu

IIS 6.0 sürümüne kadar .Net Framework, web sunucusundan bağımsız çalışan bir kendi aşına bir framework idi. Görevi web server tarafından işlemesi için ona gönderilen aspx dosyalarını compile etmek haa yoksa html çıktıyı web server’a iletmekti. Bu yapı ile sadece aspx dosyaları .Net framework içerisinde sunulan form authentication, url rewiritting gibi servislere erişebilmekteydi. Php, cgi, .. vb uygulamalar bu servisleri kullanamıyordu. Fakat 7.0 ile gelen bu yeni yapıda artık .net framework tamamen web sunucusunun bir parçası şeklinde çalışmakta. Bu yeni kolaylık ie birlikte gerekli konfigrasyon ayarlarıyla diğer içerik çeşitlerine de .net framework tarafından sunulan servisere erişim izni verilebiliyor. Aşağıdaki resimde bu yeni yapı ile iligli mimari görüntüyü bulabilirsiniz.


Resim – 4: Daha Önceki Sürüm ve IIS 7.0 daki Asp.net Entegrasyon Yapısı Mimarisi

IIS deki bu yeni Integrated Mode ile tüm uygulamalar asp.net servislerine ulaşabilmekteler. Konuyla ilgili bir başka makaleyi bu adresden inceleyebilirsiniz.
http://mvolo.com/blogs/serverside/archive/2006/11/10/Stopping-hot_2D00_linking-with-IIS-and-ASP.NET.aspx

Gelişmiş Güvenlik Yapısı

IIS 7.0 ile server yöneticisinin hizmetine pek çok güvenlik kontrolü sunulmuş durumda. Temel güvenlik mekanizması sistemde kullanılmayan fonksiyonelliklerin pasif duruma getirilmesi üzerine kuruluyor. IIS 7.0 getirdiği pek çok yönetimsel ayar ile güvenlik yapısının tamamen biizm elimizde olmasını sağlıyor. IIS manager ekranı ve önceki bölümlerde anlatılan diğer yönetimsel araçlarla kullanılmayan özellikleri kapatabiliyoruz. Önceki IIS sürümlerinde kullanılmasa da worker process ayarları, konfigürasyon seçeneleri gibi birçok unsur sürekli açk haldeydi bunlara müdahale etme şansımız yoktu. Ama artık IIS buna imkan veriyor.

Bunun dışında Asp.Net’in doğrudan IIS ile entegre çalışması ile istediğimiz klasöre yada istediğimiz URL üzerinde Asp.Net Authentication mekanizmalarının çalıştırılmasını sağlıyabiliyoruz. Asp.net login kontrolleri, role base management prosedürleri ile güvenli kullanıcı tanımlama işlemlerini gerçekleştirebiliyoruz. Hemde bunu sadece aspx dosyalarımız için değil her türlü içerik için gerçekleştirmek mümkün.

Klasör erişimi konusunda da daha önceki sürümlerde bulunan IIS_IUSR account kontrolü daha gelişmiş bir hale getirilmiş. Artık bu yetkilendirme grubu ile ilgili belirlediğimiz kullanıcı ve şifrelerine gerçerlilik tarihi atayabiliyor ve hatta bunlar için belirli kullanıcı grupları oluşturarak sadece belkirlediğimiz gruptaki kullanıcıların belirlediğimiz yerlere erişebilmesini sağlayabiliyoruz.

Bir diğer önemli konu ise yine yukarıdaki bölümlerde de değindiğim uzaktan web server yönetimi konusu. Bu konuda da yine firewall’ a takılmadan HTTPS üzerinden server ayarlarına erişmerek her türlü konfigürsayon değişikliğini güvenli bir ortamda yapmak mümkün.

Gelişmiş Hata Yönetim Yapısı

IIS 7.0 ile birlikte gelen IIS Manager ekranı ile server da o an ne olup bittiğini, hangi web site’ların çalışır durumda olduğu, hangi worker process in ne zaman çalışmaya başlayığ ne zman recyle olduğu ile ilgili detaylı bilgilere ulaşmamızı sağlayan yeni bir ekran bulunmaktadır. RSCA (Runtime State and Control) adı verilen bu ekran üzerinden ilgili her türlü detaya ulaşmak mümkün.

Resim – 5: RSCA Yönetim Ekranı

İstersek bu ekran aracılığla, istersek IIS Manager üzerinden ya da eğer istersek Microsoft.Web.Administration API kullanarak bu server durum verisine ulaşabiliyoruz.

Eğer herhangi bir hata ile karılaşılması durumunda, event tracker artık bunları XML log dosyalarına yazıyor ve aşağıda gördüğümüz ekran aracılığı ile bu log bilgilerine ulaşabiliyoruz.

Resim – 6: XML Event Log Dosyası İçeriği

IIS 7.0 daki öçeklenebilir ve kişiselleştirilebilir yeni yapı sayesinde IIS le gelen Vista API lerini kullanarak kendi hata yönetim ve log mekanizmalarımızı da geliştirmemiz mümkün olabiliyor. Gerekli kodlamalarla event log bilgilerinin Sql Server tablolarımıza yada herhangi bir tezt dosyasına da yazılmasını sağlayabiliyoruz.

Sonuç

IIS 7.0 getirdiği bu yeni birçok özellik ile geleceğin web uygulama geliştirme ve yayınlama ortamını bizlere sağlamayı amaçlıyor. Artık çok daha gelişmiş hatta birden çok sunucu üzerinden paralel çalışan dağıtık web tabanlı sistemleri daha kolay yönetme ve ölçeklendirme konusunda bizlere daha fazla yardımcı oluyor. Bu web farm denilen yapılar, IIS 7.0 ile birlikte aynı durum mekanizmalarını kullanır aynı ortak makinalardaki hafıza bloklarına erişir hale gelebiliyorlar artık. Güvenlik ve performans ile ilgili gelen yenilikler ile de daha hızlı çalışan ama yetkisiz kişilerce erişilmesi ço daha güç lan daha güvenli sistemlere yaklaşmış bulunmaktayız.

Vista nın server versiyonunun da çıkarak piyasada yaygınlaşmasıyla çok daha fazla gündemimizde olacak IIS 7.0 konusunda gelişmeleri bende çok yakından takip ediyor olacağım.

Referanslar

  1. MSDN Magazine, Mart 2007

  2. http://mvolo.com/blogs/serverside/default.aspx

  3. http://www.iis.net/

Yarını yakalamak dileğiyle...

Kaan Tezgel
www.kaantezgel.com