none
Application_Start çalışma zamanı RRS feed

  • Soru

  • İyi günler.

    bildiğim kadarıyla  ASP.Net MVC de Application_Start fonksiyonu uygulama ilk çalıştırıldığında tetikleniyor.

    şöyle bir sorun yaşıyorum: 

    Uygulamaya ilk istek gönderdiğimde Application_Start çalışıyor ve sonraki isteklerde tetiklenmiyor buraya kadar herşey normal.

    Fakat örneğin yarım saat boyunca uygulamaya herhangi bir istek göndermediğimde sonra tekrar istek gönderdiğimde uygulamanın Application_Start fonksiyonu tekrar tetikleniyor.

    Bunun sebebi nedir  acaba? 

    6 Mart 2018 Salı 12:54

Yanıtlar

Tüm Yanıtlar

  • IIS de ayarlanmış olan kaç dk sonra bu uygulamanın kapatılacağı ayarı bu durumu yönetir. IIS, Application Pool gibi konuları araştırmalısınız.

    www.cihanyakar.com


    6 Mart 2018 Salı 17:00
    Moderatör
  • Evet App pool dan boşta kalma zananını 0 yaptığımda aynı sorunu almadım.

    bu sefer Application_Start  olduktan 15 saat sonra tekrar start olmuş fakat bu sefer Singleton nesnelerim düşmemiş

    Benim amacım yaşam döngüsünü Singleton olarak belirlediğim nesnelerin uygulama açık olduğu süre boyunca ayakta kalması.

    Şuan merak ettiğim konu şu:

    Tamam artık benim Singleton nesnelerim ayakta kalacak fakat bu durum aynı zamanda benim oluşturmadığım bir request sırasında  .net framework tarafından oluşturulan bir çok nesneyide ayakta tutacak(mı)dır? yani bu durum bana bir RAM canavarı olarak geri dönermi? 

    App pool üzerinde daha önce bu şekilde bir operasyonda bulunulduğuna şahit oldunuz mu?

    7 Mart 2018 Çarşamba 05:24
  • 0 olması veya always on olması uygulamanın yeniden başlamayacağı anlamına gelmiyor. Herhangi bir sebeple uygulama tekrar başlayabilir. Bu tip verilerin bir veri ambarına yedeklenmesi gerekir.

    .net managed bir yapıdır. Yani bellek yönetimi ile gelir. Referans dışı kalan nesneler eğer unmanaged bağlantıları yoksa zaten bellekten atılacaktır. Bir şey bellekte gerekmediği halde bellekte duruyorsa bu genellikle sizin hatanızdan olur. 

    Kodlarınızı görmediğim için şöyle bir öneride de bulunmak isterim, bir web uygulaması geliştirirken tek bir adet bu uygulamadan çalışacakmış gibi kodlama değilde bu uygulamadan aynı anda onlarcası farklı sunucularda çalışacakmış gibi kodlanması daha uygun olacaktır.. Bu alışkanlıkların edinilmesi genişletilebilir (scalable) yapılar geliştirebilmenizi sağlar.


    www.cihanyakar.com

    7 Mart 2018 Çarşamba 06:54
    Moderatör
  • Cevabınız için teşekkürler.

    Aslında scalable durumunu göz önüne alarak uygulamayı yapıyorum.

    Size durumu daha açık anlatayım.

    Uygulamanın cache operasyonları için redis kullanıyorum fakat her GET operasyonu için Cache sunucusuna gidilmesi yerine Cache<T> nesnemde  Runtime sırasında ilgili T nesnesi için Dictonary<key,List<T>> nesnesini barındırıyorum ve Cache<T> nesnesini Singleton  olarak ayarlıyorum.

    Cache<T> Nesnesi boş olduğu zaman Cache sunucusuna gidip ilgili Cache<T> nesnesini dolduruyorum.

    Sizce burada hatalımı davranıyorum

    7 Mart 2018 Çarşamba 07:47
  • Cache için cache yapmışsınız. Çok fazla kullanılması gereken bir şey için belki böyle bir mantık faydalı olur ama aksi durumda israf olabilir. 

    www.cihanyakar.com

    7 Mart 2018 Çarşamba 11:02
    Moderatör
  • Evet aslında öyle oldu.

    Uygulamada çok fazla data filtreliyorum şimdi bunun için entityframework kullanıyorum bu noktada şöyle bir sorun çıkıyor benim için Redis e bir Expression<function<T,bool>> nesnesi ile direk bir filtreleme yapılamıyor doğal olarak.

    Ya Expression nesnemi Redis sorgusuna convert edecek bir kütüphane yazacaktım yada şuan kullandığım çözümü deneyecektim.

    Tabiki en doğru olanı ihtiyacımız olan datayı direk redis üzerinden getirmek ama en azından bir süre için şuanki çözüm kullanılabilir geldi bana.

    7 Mart 2018 Çarşamba 14:41
  • Burada işin mimarisinin nasıl olacağına ve bu mimariye ve gereksinimlere, kısıtlara göre mühendisliğini belirlemek gerekiyor. Bunun içinde bütün bilgilere sahip olmak lazım. Şu kadar bilgiyle yapılacak her yorumda eksik olacaktır. Kolaylıklar dilerim :)  Yakın zamanda bitirdiğim "Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems" isimli kitabı önerebilirim.

    www.cihanyakar.com

    7 Mart 2018 Çarşamba 18:14
    Moderatör
  • haklısın :) Çok teşekkür ederim cevaplarınız için
    12 Mart 2018 Pazartesi 06:48