Controller etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Controller etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

9 Eylül 2018 Pazar

Mühendisler Dünyası

MVC'de CONTROLLER Kavramı

Bir web uygulamasının en önemli görevi kullanıcıdan gelen istekleri karşılayıp uygun sonucu döndürmek veya kullanıcının yapmak istediği değişiklikleri sonuçlandırmaktır. Asp.Net MVC tasarım kalıbında da kullanıcılardan gelen HTTP isteklerini karşılayan CONTROLLER dediğimiz mekanizmadır. Controller routing mekanizması ile gelen isteğin hangi controller ve actiona yönlendirileceğine karar verir ve bu süreçten sonra asıl görevi olan modelle view arasında köprü olarak kullanıcı etkileşimini sağlar.


Action'lar ise bir anlamda asıl işi yapan metotlardır. Yani Actionların görevi model ve view arasında köprü kurarak ve iş akışlarını oluşturarak kullanıcıya view sonucunu döndürmektir. 

MVC kalıbında actionlar Action Result türünde bir nesneyi sonuç olarak döndürür.(Action Result türünde sonuç döndürmek aslında zorunlu değil. Asp.Net MVC bu konuda esneklik sağlar. Sonuç her hangi bir nesne türü de olabilir. Ama MVC kalıbının doğru uygulanması için Action Result türünde bir nesne döndürmek tercih edilen yöntemdir ve kabul görmüş en iyi yöntemdir) Tüm Action Result türlerine göre sonuçlar değişebilir. Örneğin sonucu bir json data, veya bir http hatası da olabilir. Action Result mantığının amacı ise kullanıcıya bir arayüz gösterebilmektir. Action Result konusu temel konular seviyesinde detaylı olarak incelenecektir. Bu konuların çok iyi anlaşılması için ilerleyen konularda bu konuyu çok iyi anlamanız ve projelerinizde de etkin olarak kullanmanız önem arz eden konulardan bir tanesidir.
Okumaya Başla

30 Ağustos 2018 Perşembe

Mühendisler Dünyası

MVC'de VIEW Kavramı

Bir web uygulaması sadece kullanıcılara sunulduğu zaman bir anlamı olur. Siz bir uygulamada arka tarafta çok büyük işler yapsanız bile kullanıcıya bunu yansıtamıyorsanız yaptığınız işin de bir anlamı yoktur. MVC tasarım kalıbı da kullanıcı etkileşimini VIEW katmanı üstlenir. MVC bu katmanda scaffolding özelliği ile kullanıcıların listeleme, detay görüntüleme, yeni eleman ekleme, düzenleme ve silme işlemleri de otomotik oluşturur ve böylece geliştiricilerin işlerini çok kolaylaştırır.

MVC modelinde VIEW katmanını çok iyi anlamak, belirlenmiş kurallara uymak, aynı zamanda "best ptactice" olarak kabul edilen sınırlar içerisinde projeyi geliştirebilmek önemlidir. Özellikle arayüz geliştirme olduğu için çoğunun aklı standar HTML kodlarına gitse de Asp.Net MVC teknolojisi Razor dilinin entegresi ile birlikte klasik HTML'den de uzaklaşmadan C# veya Visual Basic kullanarak kullanıcı arayüzleri geliştirmenizi sağlar. View çeşitlerinin anlatıldığı ve örnek uygulaların da yapıldığı makalelerde bunları daha net anlayacaksınız. Ama bu konuda da önemli bir kaç nokta var. Örneğin view içerisinde programlama dilini kullanarak her şeyi yapabiliyor olduğunuz bu süreçlerin hepsini view içerisinde yapabilirsiniz anlamına gelmez. MVC ile proje geliştirirken özellikle view konusunda kurallar çerçevesinde proje geliştirmek ve proje geliştirme sürecindeki "Separation Of Concern" kurallarını uygulamak projenin okunabilirliğini ve genişleyebilirliğini etkileyecektir.

MVC'de "VIEW" Kavramı

View konusunda diğer önemli noktalardan biri de verilerin arayüze iletilmesidir. Microsoft tarafından geliştirilen viewbag, viewdata, tempdata yapıları ve controller içinden model iletimi aracılığıyla view içerisine veri göndermek mümkündür. Bu yapılardan MVC tasarım kalıbında tercih edilen yöntem modellerin gönderilmesidir. MVC konusunda yeni başlayanların zorlanacağı noktalardan bir tanesi de nesne modeli dışındaki verilerin view'a gönderilmesi olacaktır. Bu konuda da ilerleyen bölümlerde viewmodels kullanımları anlatılırken değinilecektir.

View çeşitleri olan partial view, view, layoutlar ve Action Result türleri örnekleriyle temel seviye konularında anlatılacaktır. Bu makaledeki temel amacım view konusunun temellerini anlamanız ve konuyla ilgili giriş seviyesinde bilgiye sahip olmanızdır. Bu anlamda controller view ve model bağlantısının doğru anlaşılması önemlidir. Bundan sonraki makalede controller kavramı anlatılacak ve bu bağlantının kafanızda daha iyi oturmasına yardımcı olacaktır. Bu yüzden bu makaleden sonra devam eden "MVC'de "CONTROLLER" Kavramı" makalesiyle konuya devam etmenizi öneriyorum. Bu makaleye geçmeden önce "MVC Nedir?" makalesini okumadıysanız mutlaka okumanızı tavsiye ederim.
Okumaya Başla

28 Ağustos 2018 Salı

Mühendisler Dünyası

MVC Nedir?

MVC bir proje tasarım kalıbıdır ve projelerinizin daha düzenli ve belirli bir mantık doğrultusunda geliştirmenize yardımcı olur. Blog temel olarak Asp.Net MVC konusunda odaklansa da bu makale genel olarak MVC kalıbının anlatılması üzerine yoğunlaşmıştır ve hangi dili kullanmanızdan bağımsız olarak bu makalede anlatılanları tüm programlama dillerinde uygulayabilirsiniz.

MVC, günümüz web uygulamaları geliştirme sürecinde önemli yere sahip mimari desendir. MVC'ye alternatif proje tasarım kalıpları da var. Bunlardan MVP, MVVM en çok tercih edilenlerdir. Bu konuları merak ediyorsanız "MVC Alternatifleri" isimli makaleye de göz atmanızı tavsiye ederim.

MVC, Model, View, Controller kelimelerinin baş harflerinden birleşmesinden oluşmuş kelimedir. MVC (Model-View-Controller); Yazılım geliştirme teknolojilerinde kullanılan, Seperation Of Concern(Yazılımda işlev ve özelliklerin soyutlanarak birbirinden ayırılması) prensibini vurgulayan yazılım tasarım desenidir. İlk kez 1979 yılında “Trygve Reenskaug” tarafından tanımlanmıştır.Bir web uygulamasının yapması beklenen üç özellik olan görünüm yani kullanıcı arayüzünü View ifade ederken, kullanıcıların HTTP isteklerini karşılayan ve bu istekleri kullanıyıcı arayüzü ile ilişkilendiren katman ise Controller katmanıdır. Model katmanı ise verilerimiz veya tabloların nesne olarak tutulduğu katmandır ve bu katmanda View katmanı ve Controller katmanı ile ilişkilidir. MVC modelinin temelinde bu üç katman olsa da bir çok profesyonel projeyi incelediğinizde bir çok farklı katmanın da projeye eklendiğini göreceksiniz. Özellikle web uygulaması olarak geliştirilen projenin farklı platformlara taşınma ihtiyacı doğduğunda MVC kalıbı dışına çıkamamak bir çok problemi beraberinde getiri. Bu kısa özetten sonra aşağıdaki MVC model resmini detaylı incelemenizi istiyorum. Tüm katmanların daha iyi anlaşılması için ayrı makaleler halinde de konu anlatılsa da buradaki anlatım konunun temelini teşkil etmektedir.
MVC Nedir?
Resim MVC kalıbını basit bir şekilde anlatabilmek için çizilmiştir. Resmi kısaca maddeler halinde yorumlarsak:
Kullanıcı serverden istekte bulunduğunda bu isteği controller katmanı karşılar.
Controller katmanı View ve Model katmanı ile ilişkilidir ve modele göre düzenlenmiş arayüzü kullanıcıya iletir.
Kullanıcı HTTP metot tipine göre bu view üzerinde değişiklik yapabilir.

ASP.Net MVC’de kullanıcı isteği ilk önce Controller katmanına giderek burada işlenir ve Model kısmına gönderilerek verinin hangi tabloda ya da sınıfta ta işleneceğine karar verilir, ardından model kısmına işlenen veri Controller’a geri gelir ve hangi View ‘da gösterileceği karar verilir ve yanıt olarak kullanıcıya geri döndürülür.

Model, View ve Controller mekanizmalarının her birinin kısa açıklaması aşağıda verilmiştir.

Model: Veritabanına erişim, sınıflar(class),veritabanı ilişkileri gibi data ile ilgili işlemlerin yanısıra, Entity Framework, Linq tol Sql, NHibernate, Ado.Net, XPO gibi frameworkleri içerisinde bulunduran katmandır. Kısacası data(veri) işlemleri bu katmanda gerçekleşir. Asp.Net MVC varsayılan olarak Entity Framework ile birlikte kullanılır ve scaffolding yapısı da Entity Framework'ü destekler. Örneğin veri katmanında XPO kullanacaksanız Devexpress Asp.Net MVC projesi oluşturmak tercih edilen yöntemdir.

View: Bu katman kullanıcının ekranda gördüğü ve kullanıcıların etkileşimde bulunduğu katman olarak tanımlanır. Bu kısımda Html, Css, Javascript arayüz teknolojileri kullanılır. Asp.Net MVC için HTML yerine cshtml ve ya vbhtml yapısı vardır. Bu dosyası uzantısı içinde C# veya Visual Basic kodlarını yazmanızı sağlayan Razor dilini de destekler. Best Practice yöntemlerinde çok da tercig edilmeyen bir yöntem olsa da view içerisinde de kod yazmanıza imkan sağlar.

Controller: Dışarıdan gelen kullanıcı isteklerinin karşılayan, kullanıcıların View vasıtasıyla verdiği komutların, Model işlenmesini sağlayan katmandır. Kısacası Model ile View arasındaki katmandır. Metotlar, değişkenler, fonksiyonlar buradan çağrılarak kullanılır.

Makalenin tamamını okuduysanız "MVC Nedir?" sorusunun yanıtını bulabilmişsinizdir diye düşünüyorum. Makale içinde Model, View ve Controller tanımlamaları kısaca yapılmıştır. Ama tabi ki bu konuların detaylı işlenmesi gerekiyor. Konuya daha iyi başlangıç yapabilmek için ve bu konuların ayrıntılarının da anlaşılmasısının ASP.Net MVC eğitimi için de hayati öneme sahip olmasından dolayı devam eden 3 makale bu konulara ayrılmıştır.

Bu makaleden sonra Model kavramının detaylıca açıklandığı ve Entity Framework konusuna da giriş yapacağınız makaleden konuya devam edebilirsiniz.

Okumaya Başla