Sayfalar

20 Ocak 2013 Pazar

ASP.NET MVC DERSLERİ ( 1.1 ) ASP.NET MVC NEDİR?


ASP.NET MVC NEDİR?

"ASP.NET HTML, CSS, JavaScript ve sunucu taraflı programlama ile web sayfaları ve web siteleri yapmaya yarayan bir geliştirme yapısıdır.
ASP.NET 3 farklı geliştirme modeli sunar: Web pages, MVC (Model View Controller) ve Web Forms."

                                                                                                                                          "w3school"


MVC, uygulamanın kullanıcı arayüzünü 3 temel yapıya ayırır:

Model: Verinin nasıl değişeceğini ve nasıl yönetileceğini belirleyen iş kurallarını (Business Rules) içeren sınıfların tamamının bulunduğu katmandır. Genelde bunlar veritabanını temsil eden sınıflarlar veya domaini temsil eden nesnelerdir. EntityFramework, NHibernate gibi, entity-data-model ler de, model katmanında yer alabilir. Yani uygulamamızda kullanacağımız nesneler bu katmandadır.

View: Kullanıcı arabiriminin (User Interface - UI) gösterileceği katman. Dinamik olarak üretilen HTML şablonu bu katmandadır. Kısaca veri gösterim katmanı diyebiliriz.

Controller: Tüm sistem akışının, kullanıcı ile olan etkileşimi kontrol eden ve olayları yöneten sınıfların tamamı. View ve Model katmanları arasındaki ilişkiyi yönetir. Kullanıcıdan girdi alır, modelle iletişime geçer ve ne gösterileceğine karar verir.


ASP.NET MVC 1

13 MART 2009 da resmi olarak kodlar ve birim testlerle MVC mimarisi yayınlanmıştır. MVC mimarisinin bugün kullanılan bir çok özelliği aslında MVC 2 de gelecektir.

ASP.NET MVC 2 

MVC 2 ilkinden 1 yıl sonra yayınlanmıştır (MART 2010). MVC 2 de olan bazı ana özellikler şunlardır:
  • Otomatik olarak oluşturulan kullanıcı arabirimi yardımcıları (UI Helpers) ve özelleştirilebilir şablonlar.
  • Hem server, hem de istemci taraflı, nitelik tabanlı (attribute-based) bir model doğrulama (model-validation) yapısı.
  • Strongly typed HTML Helpers
  • Geliştirilen Visual Studio araçları.

ASP.NET MVC 3

MVC 3, MVC 2 den 10 ay sonra yayınlanmıştır. Eklenen ana başlıklar:
  • Razor görüntüleme motoru (Razor View Engine).
  • .NET 4 dataannotation desteği.
  • Gelişmiş model doğrulama (model validation).
  • Unobtrusive JavaScript, jQuery Validation, ve JSON için daha iyi bir JavaScript desteği.
  • Yazılım ve platforma bağlı güncellemeler ve yönetim için NuGet kullanımı.

Razor View Engine

MVC 1 den itibaren bugüne kadar yapılan en büyük HTML görüntüleme güncellemesi Razor olmuştur. MVC 1 ve MVC 2 de genel olarak kullanılan görüntüleme motoru Web Forms görüntüleme motoru ile aynı sözdizimini ve dosya uzantısındadır. (ASPX/ASCX/MASTER) 

Örnek Web Forms sözdizimi:


<%@ Page Language="C#" MasterPageFile="</Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcMusicStore.ViewModels.StoreBrowseViewModel>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Browse Albums
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <div class="genre">
        <h3><em><%: Model.Genre.Name %></em> Albums</h3>
        <ul id="album-list">
            <% foreach (var album in Model.Albums) { %>
                <li>
                    <a href="<%: Url.Action("Details", new { id = album.AlbumId }) %>">
                    <img alt="<%: album.Title %>" src="<%: album.AlbumArtUrl %>" />
                    <span><%: album.Title %></span>
                    </a>
                </li>
            <% } %>
        </ul>
    </div>
</asp:Content>

Razorun söz dizimi tamamen kod odaklı bir şablonu vardır. İlk bakıldığı anda HTML ve .Net kodları hemen anlaşılır, okunması ve anlaşılması çok kolaydır. Yukarıdaki kodun Razor ile yazılmış hali aşağıdaki gibidir:


@model MvcMusicStore.Models.Genre
@{ ViewBag.Title = "Browse Albums"; }
<div class="genre">
    <h3><em>@Model.Name</em> Albums</h3>
    <ul id="album-list">
        @foreach (var album in Model.Albums)
        {
            <li>
                <a href="@Url.Action("Details", new { id = album.AlbumId })">
                    <img alt="@album.Title" src="@album.AlbumArtUrl" />
                    <span>@album.Title</span>
                </a>
            </li>
        }
    </ul>
</div>

Razor View Engine özellikleri >>>

9 yorum:

  1. Taş baharı değil suyu görürse yeşerir. Su ise evrensal öğretide bilgi demektir. Yani taş bile gerçek bilgiye ulaşırsa yeşerir:)

    YanıtlaSil
    Yanıtlar
    1. Farklı bir bakış, beğendim. Ama zannedersem anlam yine de değişmez. Dışarıdaki taşın suya girmesi, başka bir aleme geçmek olur ki, artık bilginin bu alemde faydası olmaz.

      Sil
  2. Özeti gibi: http://www.slideshare.net/BTAkademi/aspnet-mvc-copy

    YanıtlaSil
    Yanıtlar
    1. Siz mi hazırladınız, birçok yerde paylaşmışsınız bu linki :)

      Sil
  3. Çok teşekkürler, önce bunu okudum sonra özeti gibi deyince linke tıkladım iyice pekişti:) Hocam ellerinize sağlık, BT Akademi de güzel bi çalışma yapmış, beğendim.

    YanıtlaSil
  4. hocam yukarıdaki resimde view ile model arasında bağlantı gösterilmiş. Bunu ben anlayamadım. View controller ile temas halinde değil mi? View dan modele erişmek nasıl oluyor? Örnek verebilir misiniz?

    YanıtlaSil
    Yanıtlar
    1. Aslında yazıların devamında anlatıyorum. Madem burada sordunuz, Modeli bir kalıp olarak düşünün, controller ile view bu kalıbı kullanarak birbiri ile iletişime geçerler. Model, View ile controller arasında veri taşır...

      Sil
  5. Teşekkürler, güzel bir yazı olmuş.

    YanıtlaSil