WebConfig’de compilation nedir?

ASP.NET uygulamalarında, web.config dosyası içerisinde yukardakine benzer bir satır göreceksiniz. ASP.NET 1.1’de “debug” parametresinin “default” değeri “true” iken, ASP.NET 2.0’da uygulamayı debug etmek istediğinizde size bu parametreyi tanımlamak isteyip istemediğinizi sorar. Sonuçta, geliştirme ortamından alınan hemen her web uygulamasında bu parametrenin değeri “true” olacaktır. Geliştirme esnasında bu parametrenin değeri zaten “true” olmalıdır, çünkü zaten uygulamayı “debug” etmemiz gerekmektedir. Ancak, gerçek (production) ortamda bu parametre kesinlikle ve kesinlikle “false” olarak değiştirilmelidir. Gerçek ortama koyacağımız uygulamaların “debug” edilmesi zaten tamamlanmış, hatalardan arındırılmış olması gerekir. Genel olarak buraya kadar anlattıklarım herkese mantıklı görünse de, pek çok kişi bu parametrenin önemini göz ardı eder ve üzerinde durmaz. Dolayısıyla bize gelen çağrıların büyük kısmında gerçek ortamdaki uygulamaların “debug” modda çalıştığını görürüz. Peki ama bu parametre ne kadar önemli olabilir? Gerçek ortamda “debug” modda çalışan bir uygulamada ne gibi sorunlarla karşılaşabiliriz? Bu soruların cevabı, ASP.NET 1.1’den mi, 2.0’dan mı bahsettiğimize göre küçük farklılıklar gösterse de, ana hatlarıyla toparlamaya çalışacağım:

  • Debug modda derlenen uygulamalarda pek çok optimizasyon yapılmayacaktır. Elbette bu da performans kaybına neden olacaktır.
  • Debug modda derlenen uygulamalarda zaman aşımı değerleri (timeout) dikkate alınmaz. Bunun çok basit ve mantıklı bir nedeni vardır: Uygulama geliştirirken bazen kodun bir yerine “breakpoint” koyarız ve uygulama oraya geldiğinde dakikalarca kodu inceleriz. Biz bunu yaparken uygulamamızın zaman aşımı hatası alması pek de hoş olmazdı. Zaman aşımı değerlerinin dikkate alınmaması, gerçek ortamlarda pek çok soruna neden olabilir. Örneğin, veritabanında yaşanan bir sorunun uygulamamızı tamamen çalışamaz hale getirmesi (deadlock) mümkün olabilecektir.
  • Çalışma esnasında fazladan bazı (debugging ile ilgili) bilgiler hafızada tutulacağından hafıza ve işlemci kullanımı çok daha yüksek olacaktır.
  • Uygulamanın derlenme süresi çok daha uzun olacaktır. Bunun nedenı yine bir takım optimizasyonların yapılmayacak olmasıdır.

Yukarıda bahsettiklerimi kaba bir özet olarak düşünebilirsiniz. Internet üzerinde çok daha detaylı çok sayıda makale bulabilirsiniz bu konuyla ilgili. ÇÖZÜM: Gerçek ortama taşınan her uygulamanın web.config dosyasını kontrol edin. Bu parametrenin gücünü hafife almayın. ASP.NET 2.0’la beraber, bu anlamda işimizi çok kolaylaştıran bir parametremiz oldu: “retail”. Machine.config içerisine ekleyebileceğiniz bu parametre ile, o makinede çalışan tüm web uygulamalarını, web.config’lerinde ne yazarsa yazsın, “release” moda almış olursunuz:

<configuration>
    <system.web>
          <deployment retail="true"/>
    </system.web>
</configuration>

Alıntıdır.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s