Neden .NET MVC?
Yayınlanma Tarihi : 06 Ağustos 2020
İlk dinamik web sitesi yapma deneyimimde yolumun onunla, ASP (Active Server Pages - Aktif Sunucu Sayfaları) ile kesişmesinden ve onunla birlikte gelişerek ilerlememden olsa gerek diğer diller veya framework'ler (yazılım altyapıları) hem pek ilgimi çekmedi hem de açıkçası hiç ihtiyacım olmadı. ASP.NET (modern tabiriyle sadece ".NET" (dot net)) MVC'de karşılaşıp da çözümünü bulamadığım en küçük bir sorunu dahi hatırlamıyorum. Zaten bu kadar iyi olmasa dünyada onbinlerce bağımsız geliştirici ve kuruluş tarafından kullanılıyor olmazdı diye düşünüyorum.
.NET, Microsoft'un ürettiği bir yazılım geliştirme altyapısıdır. C# başta olmak üzere desteklediği programlama dilleri ile masaüstü, web ve mobil uygulamalar yazmanıza olanak sağlar.
Yazılım geliştirme altyapısı ("Framework") kavramını biraz açmak istiyorum, çünkü bu işlere ilgisi olan ve öğrenmek isteyen insanların anlamakta zorlandıkları ilk ifade bu oluyor. Framework'ü size çok basit bir örnekle açıklıyayım; bir uygulama geliştireceğiniz zaman yazacağınız kodlar referans olarak önceden yazılmış bazı kod kütüphanelerine ihtiyaç duyarlar. Bu kütüphaneler olmadığında yazdığınız kodlar işlevsiz bir metinden başka birşey olmaz, dolayısıyla uygulamanız çalışmaz. Ayrıca uygulama geliştirme belirli aşama ve bölümlerden oluşan bütün bir yapıdır. İşte uygulamanızı geliştirmenizi sağlayacak tüm bu aşama, bölüm ve kütüphanelerin belirli bir düzen içinde yer aldığı iskelet sisteme Framework denir. Framework .NET'e has bir kavram değildir. Her yazılım geliştirme teknolojisinin kendine ait framework'leri bulunabildiği gibi framework'süz geliştirme ortamına da sahip olabilirler.
Dinamik web siteleri, diğer bir deyişle web uygulamaları istemci ve sunucu taraflı olarak iki farklı şekilde kodlanarak inşa edilir. Bu kodlamalar iç içe yani bir arada yapıldığında özellikle büyük projelerde kod karışıklığına yol açarak hem geliştirme sürecini yavaşlatıyor hem de programcıların sorunları bulup çözmesini zorlaştırıyordu. Bu duruma 1979 yılında Trygve Reenskaug çok güzel bir yaklaşım getirmiş ve ona MVC (Model-View-Controller) adını vermiştir. MVC, web uygulamalarını 3 ana bölüme ayırarak geliştirme işlemini ve yönetimini sadeleştiren bir uygulama geliştirme yöntemidir. Bu yöntem sayesinde bir web uygulaması, dinamik veri (Model), bu verilerin gösterileceği html (View) ve uygulama akışını yönlendiren fonksiyonlar (Controller) şeklinde ayrı ayrı yönetilen bir yapıda inşa edilir ki bu da yukarıda bahsedilen karmaşayı minimize eden çok etkili ve başarılı bir yazılım geliştirme mantığıdır.
MVC ayrıca OOP (Object Oriented Programming - Nesne Tabanlı Programlama) temeline dayanmaktadır. Nesne Tabanlı Programlama kısaca şudur; programlamada kullanılan veri modelleri, alt üyeleri olan birer sınıf şeklinde üretilir. Daha iyi anlamanız için şu basit örneği vereyim; bir kitap kütüphanesi uygulaması yapacağınızı farzedelim. Burada kitabı bir sınıf; kitabın yazarı, sayfa sayısı, çıkış tarihi, baskı sayısı vs. gibi kendine has özelliklerini de alt üye veya özellik olarak tanımlayabiliriz. Kitabın bu özelliklerinden birinde yapılacak herhangi bir değişiklik, uygulamanızda kitap modelinin kullanıldığı her yerde uygulanacaktır. Kitap gibi mesela kitabı kullanan öğrenciyi de ayrı bir sınıf olarak düşünebilirsiniz. Öğrencinin adı, soyadı, tc kimlik numarası vs. gibi özellikleri öğrenci sınıfının alt üyesidir. Biraz düşünürseniz bu yaklaşımı siz de çok mantıklı bulacaksınız. Oyunlar, dinamik web siteleri ve mobil uygulamalar gibi modern yazılımların hemen hemen hepsi bu temel üzerinde inşa edilmektedir.
Hem performans, hem de geliştirme-yönetme sürecinin sadeliği ve pratikliği bakımından ister .NET tabanlı olsun ister diğer teknolojilerden yararlanılmış olsun, günümüzdeki web uygulamalarının büyük kısmı MVC yöntemi kullanılarak üretilmektedir. Şu an bu satırları okuduğunuz web sitem kaancamur.com da sıfırdan tasarlayıp kodladığım .NET tabanlı bir MVC uygulamasıdır. Benim .NET MVC'sini kullanma sebebim hem yazımın başında belirttiğim gibi önce bu teknolojiyle tanışıp ilerlemiş olmam, hem de hakim olduğum C# dilini birinci derecede destekleyip bünyesinde dahili ve harici (3.parti) çok sayıda faydalı kod kütüphanesi bulundurmasıdır. Eğer C# diline hakimseniz veya bu dilde ilerlemekteyseniz siz de .NET MVC'sini keyifle kullanabilirsiniz.