STACK VE HEAP NEDİR?
Ön Tanım:
Stack ve heap genel programcılıkta bir terimdir. Bu terimler aslında bellekte referans tutma şekilleriyle ile ilgilidir.
Stack:
Stackte oluşturulan değişkenler çıkınca direk silinirler ve sadece derleme zamanında oluşturulur sonrasında Garbage Collector isimli bir yere atılırlar. Adından da anlaşılacağı üzere çöp toplayıcısı. Bellekte bir yer tutmaz. Oluşturulan değişkenler stack'ten çıkınca değiştirilir.
Heap:
Heap referans tutucu yerlere denir. Heap stack gibi bellekten silinmez. Referans tipler heap üzerinde oluştuktan sonra silinse de bellekten silinmez. Değişkenler Java, C# gibi dillerde GC'yle silinir ama GC'siz dillerde silinmezler.
Örneğin:
(C# dilinde bir örnek)
{
int num1 = 1;
int num2 = 2;
}
public void Sonuc();
{
return num1 + num2;
}
Sonuc sonuc = new Sonuc();
Console.WriteLine(sonuc);
New'lendiği için heapten silinmez. Böyle basit bir konu gibi görünse de projelerde çok işe yarayan bir özelliktir.
IoC Container nedir? (Inversion of Control)
IoC Container, yazılım dillerinin kendine has referans tutucularıdır. Bu farklı dillerde değişebilir ama OOP dillerinde vardır. Bu projelerde önemli bir şeydir.
Mesela bir WebAPI'miz olsun ya da bir Logger'ımız olsun. Bunu new'lemek istediğimizde kendi yazılım dilinin IoC Container'ını kullanarak onun içinde newler. Mesela WebAPI'de C# dilinde builder.Services.AddSingleton(objectmanager, iobjectservice); diyerek WebAPI'de C#'da örneklenmiş bir şekilde böyle newleriz ve bu yazılım dilinin kendi IoC Container'ını kullanmış oluruz.
Java'da da Springboot'un kendine has IoC container'ı vardır.
Fakat yapay IoC Container'larda vardır, örneğin C#'ta Autofac, Ninject... Diğer dillerde de aynı şekilde yapay IoC Container'lar bulunabilir.
Yapay IoC Container'lar ne işe yarar:
Yapay IoC Container'lar yani insanlar tarafından yapılmış IoC Container'lar büyük projelerde projelerde kolaylık ve karışıklılığın önlenebilmesi için kullanılır.
Bir class'ı newlemek yerine bir kere o pakette yazıp diğer kullanışlarınızda sizin yerinize newler.
-ReqzIoC Container nedir? (Inversion of Control)
IoC Container, yazılım dillerinin kendine has referans tutucularıdır. Bu farklı dillerde değişebilir ama OOP dillerinde vardır. Bu projelerde önemli bir şeydir.
Mesela bir WebAPI'miz olsun ya da bir Logger'ımız olsun. Bunu new'lemek istediğimizde kendi yazılım dilinin IoC Container'ını kullanarak onun içinde newler. Mesela WebAPI'de C# dilinde builder.Services.AddSingleton(objectmanager, iobjectservice); diyerek WebAPI'de C#'da örneklenmiş bir şekilde böyle newleriz ve bu yazılım dilinin kendi IoC Container'ını kullanmış oluruz.
Java'da da Springboot'un kendine has IoC container'ı vardır.
Fakat yapay IoC Container'larda vardır, örneğin C#'ta Autofac, Ninject... Diğer dillerde de aynı şekilde yapay IoC Container'lar bulunabilir.
Yapay IoC Container'lar ne işe yarar:
Yapay IoC Container'lar yani insanlar tarafından yapılmış IoC Container'lar büyük projelerde projelerde kolaylık ve karışıklılığın önlenebilmesi için kullanılır.
Bir class'ı newlemek yerine bir kere o pakette yazıp diğer kullanışlarınızda sizin yerinize newler.
Son düzenleme: