Professional Documents
Culture Documents
MESLEK YÜKSEKOKULLARI
BİLGİSAYAR PROGRAMCILIĞI
Hazırlayan
Serkan DERELİ
• Diyelim ki kullanıcı tarayıcıdan bir istekte bulundu. Bu istek ilk olarak Controller’ a gider,
• Controller bu isteğin sonucunun sorgulanması adına isteği Modele gönderir.
• Model de Controllerdan kendisine gelen istek sonucu dönen verileri, tekrar Controller’ a
gönderir.
• Controller kendisine Model tarafından gönderilen verileri View’ a gönderir ve böylece
kullanıcı yapmış olduğu isteğin sonucunu ekranında görür.
Controller’ da daha çok backend kodları (ASP.NET), Model’ de daha çok (SQL kodları), View’ da ise
frontend kodları (Html, Css, Js), bulunmaktadır.
Framework, bir uygulamayı geliştirme sürecini optimize eder ve çalışmayı basitleştiren kodun
kullanılmasına, değiştirilmesine ve entegre edilmesine izin verir.
Framework bilindiği gibi, içerisinde uygulama geliştirme arayüzleri (API) ve programcıların ihtiyaç
duyduklarında çağırabilecekleri paylaşımlı bir kod kütüphanesi barından paketlere denir.
Bu kütüphanedeki (Framework Class Library (FCL)) kodlar pek çok çeşit fonksiyon çalıştırabiliyor. Bu
sayede programcılar ufak işlemler için gerekli fonksiyonları sıfırdan yazmak zorunda kalmıyor.
Diğer framework paketlerine kıyasla .NET, ayrıca uygulamalar için çalışma alanı (runtime enviroment)
da sunuyor. Çalışma alanları, içinde uygulamaların çalıştığı sanal makine benzeri bir kum havuzudur
denebilir.
Söz konusu .NET olunca, bu çalışma alanı Common Language Runtime (CLR) olarak adlandırılır.
Örneğin bir kullanıcı bir uygulamayı çalıştırdığında, uygulamanın kodları çalışma alanında makine
diline derlenir ve ardından uygulama çalıştırılır.
Uygulamaları çalışma alanları içinde çalıştırmanın birden fazla avantajı mevcut. Bunların en önemlisi
ise uyumluluktur.
Geliştiriciler kodlarını C#, C++, F#, Visual Basic gibi sık kullanılan programlama dillerinde yazabilir ve
bu kodlar .NET destekli bütün donanımlar üzerinde çalıştırılabilir.
Ancak .NET mantığıyla bakıldığında MVC yapısının işletilmesinde aşağıdaki sıra takip edilmektedir.
Aynı zamanda bir talebin yaşam döngüsü olarak da bu sıra izlenmektedir.
1) HTTP Request: Sizin her ASP.NET MVC uygulamasını görüntülemek istemeniz bir request(istek) tir.
Bu istediğinizi HTTP üzerinden IIS tarafından alınır. Her yaptığınız istek Server tarafından bir yanıtla
son bulması gerekir.
2) Routing: ASP.NET MVC uygulamasını her istek yaptığınızda bu isteğin hangi Controller ve hangi
Action için olduğu bu aşamada ayırt edilir. Yaptığınız yanıt “UrlRoutingModule”, “HTTP Module”
tarafından durdurulur. “UrlRoutingModule” bir isteği durdurduğu zaman, gelen istek “RouteTable”
’dan hangi Controller tarafından üstleneceğine karar verilir.
3) Controller: RouteTable’dan gelen route bilgisine göre Controller hangi Action’ı çalıştıracaksa o
View çalıştırılır. View, Controller tarafından render edilmez. Controller tarafından geriye ViewResult
döndürülür.
4) ViewResult: ViewResult, View’i render etmek için aktif View Engine’i çağırır.
5) ViewEngine: Bir CSHTML dosyayı oluşturduğunuzda içerisindeki script ve markuplar, Razor View
Engin tarafından bazı ASP.NET API’lerini, modelden alınan Veritabanı bilgilerini HTML’e çevirmek için
kullanır.
3) Aşağıdaki ekranın sol sütunundaki öğelerden “ASP.NET Web Application (.NET Framework)”
seçeneğini seçiniz ve “Next” tuşuna basarak sonraki ekrana geçiniz.
4) Sonraki aşama proje dosyalarının kaydedileceği konumu ve proje ismini belirlediğimiz aşama
olup aşağıdaki resimde görülmektedir. “1” nolu bölümden projenin ismini, “2” nolu bölümden
projenin kaydedileceği konumu ve “3” nolu bölümden ise NET framework versiyonunu
değiştirebiliriz.
5) Sonraki aşama projenin MVC projesi olup olmayacağına karar verilen aşamadır ve aşağıdaki
resimde görülen ayarlamalar yapılmalıdır. Sonrasında “Create” butonuna basılarak işlemler
tamamlanmalıdır.
6) Artık işlemler tamamlanmıştır. Ekrana çıkan bar ile işlemin sona ermesi beklenmelidir.
Günümüzdeki her IDE (Tümleşik Geliştirme Ortamı) yazılımında olduğu gibi Visual Studioda da
paneller yoğun şekilde kullanılır. Bu panellerden en önemlisi olan “Solution Explorer” penceresi proje
dosyalarının bulunduğu ve projeye herhangi bir dosya ilave edilmek istendiğinde kullanılacak olan
paneldir.
Projede varsayılan olarak bulunan dosyalar yukarıda ki “Solution Explorer” panelinde görülmektedir.
“App_Data” klasörü Veritabanı dosyası ile çalışılacaksa o dosyaların bulunduğu klasördür.
“App_Start” projenin başlangıç ayarlarıyla çalışması için gerekli ayarlamaların bulunduğu klasördür.
“Content” klasöründe javascript, css, jquery ve sayfada kullanılan bazı multimedya dosyalarının
bulunduğu klasördür. Kullanıcılar harici olarak oluşturdukları dosyaları bu klasör içerisine
oluşturmalıdır. “Controllers-Models ve Views” klasörü projede gerekli MVC dosyalarının bulunması
gereken klasörlerdir.
Projeyi tarayıcıya göndermek için “cshtml” sayfalarından birinin üzerine sağ tıklayıp varsayılan tarayıcı
ile o view sayfası açılmalıdır. “Index.cshtml” sayfası tarayıcıya yüklendiğinde aşağıdaki gibi
görünecektir. Bunun için aşağıdaki resimde görüldüğü gibi “View in Browser” seçeneği seçilir.
Karşımıza aşağıda ekran gelmelidir. ASP.NET projeleri genel olarak ilk yüklemede sanal bir çalışma
alanında çalıştırılıp sonra makine diline çevrildiklerinden dolayı açılması biraz zaman alabilir.
Sonrasında ise çok daha hızlanacaktır.
Görüldüğü gibi varsayılan bir stil ile sayfalar oluşturulmuştur. Bunun için genel bir tasarım sayfası
içerisine oluşturulan sonraki view dosyaları aktarılmaktadır. Bunun için kullanılan ana tasarım
dosyalarının genel adı “Layout” olarak bilinir ve “Views” klasörü altında konumlandırılmışlardır. Bizler
istersek kendimize ait “Layout” sayfaları oluşturabiliriz.
Views/Shared/_Layout.cshtml
Bu kodlamada bazı yerlerde “@” işareti ile başlayan yerler görünmektedir. Bu bir Asp.Net Mvc
kodunun view sayfasında kullanılacağı zaman gereklidir. Çünkü normalde bunlar komut grubuna
girmektedir ve Controller sayfasına aittir.
23-26 arası kod satırları MVC yapısında link oluşturmak için kullanılır.
39, 40 ve 41 nolu satırlarda stil veya script dosyalarının sayfaya nasıl entegre edileceği görülmektedir.
32 nolu satırda görülen “@RenderBody” komutu ise herhangi bir view sayfası bu Layout sayfasını
temel alacaksa o view sayfası bu komutun olduğu alana yerleşecektir.
HomeController/Vehicle
Bu Controller metodunda herhangi bir işlem yapılmamakta sadece bir view sayfası yüklenmektedir.
Bunun için yüklenmesi istenilen view sayfası eklemek için metod üzerinde sağa tıklayıp “Add View”
seçeneği seçilmelidir. Ekrana aşağıdaki pencere gelecektir.
Yukardaki ayarlamalar yapıldıktan sonra “Add” butonuna tıklanır. “Use a layout page” kısmı bu view
sayfasının kullanacağı ana tasarım dosyasını ifade etmektedir. Eğer bu kısım seçilmezse bomboş bir
sayfa ile işlem yapılacaktır.
[1] @{
[2] ViewBag.Title = "Vehicle";
[3] Layout = "~/Views/Shared/_Layout.cshtml";
[4] }
[5]
[6] <h2>Vehicle</h2>
Views/Home/Vehicle.cshtml
Şimdi de Index.cshtml sayfasını Bip Oto şeklinde yeniden güncelleyelim. Kodları şu şekilde
değiştirelim. Internetten üç adet resim indirip “Content/Resimler” klasörü içerisine atınız.
[1] @{
[2] ViewBag.Title = "Home Page";
[3] }
[4]
[5] <div class="jumbotron">
[6] <h1>Bip Oto</h1>
[7] <p class="lead">1979 yılından dedemiz Rahmi Aydın tarafından başlatılan tamir
dükkanından, sigorta acenteliğine ve sonrasında online işlemlerin yapıldığı
limited şirkete köklü değişim...</p>
[8] <p><a href="#" class="btn btn-primary btn-lg">Devamı »</a></p>
[9] </div>
[10]
[11] <div class="row">
[12] <div class="col-md-4">
[13] <h2>Geçmiş</h2>
[14] <p><img src="~/Content/Resimler/1.jpg" class="img-responsive img-rounded"
/></p>
[15] <p>
[16] Oto sanayi sitelerinin olmadığı, sokak arasında dükkanların
konumlandığı günlerdi. Dedemiz Rahmi Aydın da kamyon merakıyla başlayan
yolculuğuna geçirdiği kaza sonucu dükkan açarak ve bu dükkanda küçük tamiratlar
yaparak başladı.
[17] </p>
[18] <p><a class="btn btn-default" href="#">Devamı »</a></p>
[19] </div>
[20] <div class="col-md-4">
[21] <h2>Değişim</h2>
[22] <p><img src="~/Content/Resimler/2.jpg" class="img-responsive img-rounded"
/></p>
[23] <p>Sonrasında sanayi siteleri hayatımıza girdi ve Bip Oto artık bu sitede
konumlandı. Artık alan daha fazla büyüdü, iki araç aynı anda girip işleme tabi
tutulabiliyordu.</p>
[24] <p><a class="btn btn-default" href="#">Devamı »</a></p>
[25] </div>
[26] <div class="col-md-4">
[27] <h2>Büyüme</h2>
[28] <p><img src="~/Content/Resimler/3.jpg" class="img-responsive img-rounded"
/></p>
[29] <p>Artık işler daha fazla büyüdü, buna paralel olarak aile nüfusu arttı.
Dedemiz tam bir aile şirketi kurma tutkusuna sahipti. Önce çocuklarını sonrasında
torunlarını bu iş için yetiştirdi. Şimdi 18 kişinin çalıştığı büyük bir kurum
olmanın gururunu yaşamaktayız.</p>
[30] <p><a class="btn btn-default" href="#">Devamı »</a></p>
[31] </div>
[32] </div>
Views/Home/Index.cshtml
CSS dosyaları projede “Content” klasörü içerisine eklenmelidir. Bunun için bu klasör üzerinde sağ tuş
yaptıktan sonra “Add > Style Sheet” seçeneklerini takip edip dosya ismini “myCss.css” olarak
değiştiriniz. Bu dosyanın içeriği şu şekilde olacaktır.
[1] body {
[2] margin-left: 100px;
[3] margin-right:100px;
[4] background-color: antiquewhite;
[5]
[6] font-family:'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
[7] font-size: 14px;
[8] }
[9]
[10] .head {
[11] color: brown;
[12] }
[13]
[14] .head2 {
[15] color: chocolate;
[16] }
Content/myCss.css
Şimdi ise “Shared” klasörü üzerinde sağ tuş yaptıktan sonra “Add > MVC 5 Layout Page” seçeneklerini
takip edip “_myLayout.cshtml” dosyasını oluşturunuz. Dosyanın içeriğini aşağıdaki gibi değiştiriniz.
[1] @{
[2] Layout = null;
[3] }
[4]
[5] <!DOCTYPE html>
[6]
[7] <html>
[8] <head>
[9] <meta name="viewport" content="width=device-width" />
[10] <title>@ViewBag.Title2</title>
[11] <link href="~/Content/myCss.css" rel="stylesheet" />
[12] </head>
[13] <body>
[14] <div>
[15] <h1 class="head">@ViewBag.Head</h1>
[16] <h2 class="head2">@ViewBag.Head2</h2>
[17] </div>
[18] <hr />
[19] <div>
[20] @RenderBody()
[21] </div>
[22] </body>
[23] </html>
Shared/_myLayout.cshtml
Bu aşamada ise “HomeController” içerisine yeni bir View sayfasını görüntüleyecek Action kodunu
aşağıdaki gibi oluşturunuz.
HomeController/Family Action
Şimdi ise yukardaki Action kod üzerinde sağa tıklayıp “Add View” seçeneğini seçiniz. Ekrana gelen
aşağıdaki pencerede görünen Layout ayarını değiştiriniz. Layout kısmında bizim az önce
oluşturduğumuz “_myLayout.cshtml” dosyasını seçiniz ve “Add” tuşuna basınız.
[1] @{
[2] ViewBag.Title = "Family";
[3] Layout = "~/Views/Shared/_myLayout.cshtml";
[4] }
[5]
[6] <h2>Family</h2>
Home/Family.cshtml
Bu View sayfasını “Debug > Start Without Debugging” seçeneği ile veya “Ctrl+F5” kısayolu ile
tarayıcıya gönderdiğimizde aşağıdaki ekranla karşılaşırız.