1. Giriş
Bu belgenin PDF dosyası, |BURADA| adresinde mevcuttur.
Bu belgedeki örnekler |BURADA| adresinde mevcuttur.
Burada, örnekler yardımıyla ASP.NET ve MVC adlı web çerçevelerinin önemli kavramlarını tanıtmayı amaçlıyoruz.NET, MVC (Model – Görünüm – Denetleyici) modeline göre web uygulamaları geliştirmek için bir çerçeve sağlar.
Bu belgedeki örnekleri anlamak için çok az ön koşul gereklidir. Yalnızca C# diline ilişkin temel bilgiler gereklidir. Bu bilgiler, URL [.NET 3.5 Çerçevesi ile C# Sürüm 3.0'ı Öğrenme (2008)]'teki "C# Diline Giriş" belgesinde bulunabilir. ASP.NET ve MVC'te edinilen bilgileri uygulamaya koymak için bir vaka çalışması sunulmaktadır. Bu çalışmada ORM (Nesne-İlişkisel Eşleştirici) Entity Framework kullanılmaktadır. Bu ORM, URL [Örneklerle Entity Framework 5 Code First'e Giriş (2012)] adresinde bulunan Entity Framework 5 Code First'e Giriş belgesinde tanıtılmaktadır.
Bu belge birçok açıdan eksiktir. ASP.NET MVC hakkında daha ayrıntılı bilgi edinmek için aşağıdaki kaynaklara başvurulabilir:
- [ref1]: Adam Freeman tarafından yazılan ve Apress yayınevi tarafından basılan "Pro ASP.NET MVC 4" adlı kitap. Bu, mükemmel bir kitaptır. Eğer bu kitap çevrimiçi olarak ücretsiz ve Fransızca olarak erişilebilir olsaydı, bu belgenin yazılmasına gerek kalmazdı. Mümkün olan herkese, bu kitap yardımıyla ASP.NET MVC'e giriş yapmalarını tavsiye ederim. Kitaptaki örneklerin kaynak kodları, URL [http://www.apress.com/9781430242369] adresinde ücretsiz olarak mevcuttur;
- [ref2]: [http://www.asp.net/mvc] çerçeve sisteminin web sitesi. Burada kendi kendinize öğrenmeniz için gerekli tüm materyalleri bulabilirsiniz. Fransızca bir sürüm ise URL [http://dotnet.developpez.com/mvc/ ] adresinde mevcuttur;
- [developpez.com] web sitesi, ASP.NET ve [http://dotnet.developpez.com/aspnet/ ]'e adanmıştır.
Belge, elinizde bilgisayar olmadan da okunabilecek şekilde yazılmıştır. Bu nedenle, çok sayıda ekran görüntüsü eklenmiştir.
1.1. ASP.NET ve MVC'in bir web uygulamasındaki yeri
Öncelikle, ASP.NET ve MVC’in bir web uygulaması geliştirme sürecindeki yerini belirleyelim. Çoğu zaman, bu uygulama aşağıdaki gibi çok katmanlı bir mimari üzerine inşa edilir:
![]() |
- [Web] katmanı, web uygulamasının kullanıcısıyla etkileşimde bulunan katmandır. Kullanıcı, bir tarayıcı aracılığıyla görüntülenen web sayfaları vasıtasıyla web uygulamasıyla etkileşime girer. ASP.NET ve MVC bu katmanda yer alır ve yalnızca bu katmanda bulunur;
- [métier] katmanı ise maaş veya fatura hesaplaması gibi uygulama yönetim kurallarını uygular. Bu katman, [Web] katmanı aracılığıyla kullanıcıdan gelen verileri ve [DAO] katmanı aracılığıyla SGBD'ten gelen verileri kullanır;
- [DAO] katmanı (Veri Erişim Nesneleri), [ORM] katmanı (Nesne-İlişkisel Eşleştirici) ve ADO.NET bağlayıcısı, SGBD'teki verilere erişimi yönetir. [ORM] katmanı, [DAO] katmanı tarafından işlenen nesneler ile ilişkisel bir veritabanındaki tabloların satırları ve sütunları arasında bir köprü görevi görür. Dünya çapında yaygın olarak kullanılan iki ORM vardır: NET, NHibernate (http://sourceforge.net/projects/nhibernate/) ve Entity Framework (http://msdn.microsoft.com/en-us/data/ef.aspx);
- katmanların entegrasyonu, Spring (http://www.springframework.net/ ) gibi bir bağımlılık enjeksiyon konteyneri (Dependency Injection Container) aracılığıyla gerçekleştirilebilir;
Aşağıda verilen örneklerin çoğu, yalnızca tek bir katman, yani [Web] katmanını kullanacaktır:
![]() |
Ancak bu belge, çok katmanlı bir web uygulamasının oluşturulmasıyla sona erecektir:
![]() |
1.2. ASP.NET MVC
ASP.NET MVC, MVC (Model – Görünüm – Denetleyici) olarak bilinen mimari modelini şu şekilde uygular:
![]() |
Bir istemciden gelen isteğin işlenmesi şu şekilde gerçekleşir:
- istek - istenen URL'ler http://machine:port/contexte/Controlleur/Action/param1/param2/....?p1=v1&p2=v2&... biçimindedir. [Front Controller], bir yapılandırma dosyası kullanarak isteği doğru denetleyiciye ve bu denetleyici içindeki doğru eyleme "yönlendirir". Bunun için, URL'in [Controlleur/Action] yolunu kullanır. URL ve [/param1/param2/...]'in geri kalan kısmı, eyleme iletilecek isteğe bağlı parametrelerdir. Burada MVC'teki C, [Front Controller, Contrôleur, Action] dizesidir. [Controlleur/Action] yolu mevcut bir denetleyiciye veya eyleme ulaşmazsa, web sunucusu istenen URL'in bulunamadığını bildirir.
- İşleme
- Seçilen eylem, parami'in kendisine ilettiği [Front Controller] parametrelerini kullanabilir. Bu parametreler çeşitli kaynaklardan gelebilir:
- URL'in [/param1/param2/...] yolundan,
- URL'in [p1=v1&p2=v2] parametrelerinden,
- tarayıcı tarafından istekle birlikte gönderilen parametrelerden;
- kullanıcının isteğinin işlenmesi sırasında, eylem [métier] ve [2b] katmanlarına ihtiyaç duyabilir. Müşterinin isteği işlendikten sonra, bu işlem çeşitli yanıtları tetikleyebilir. Klasik bir örnek şudur:
- istek düzgün bir şekilde işlenemediğinde bir hata sayfası
- aksi takdirde bir onay sayfası
- eylem, belirli bir görünümün ([3]) görüntülenmesini ister. Bu görünüm, görünüm modeli olarak adlandırılan verileri gösterecektir. Bu, MVC'teki M'dir. Eylem, bu M şablonunu [2c] oluşturacak ve bir V görünümünün görüntülenmesini isteyecektir [3];
- yanıt - seçilen V görünümü, eylemin oluşturduğu M modelini kullanarak müşteriye göndermesi gereken HTML yanıtının dinamik kısımlarını başlatır ve ardından bu yanıtı gönderir.
Şimdi, web mimarisi MVC ile katmanlı mimari arasındaki bağlantıyı açıklayalım. Modele verilen tanıma göre, bu iki kavram birbiriyle ilişkili olabilir veya olmayabilir. Tek katmanlı bir web uygulaması ASP.NET MVC ele alalım:
![]() |
[Web] katmanını ASP.NET ve MVC ile uygularsak, bir Web mimarisine sahip oluruz ancak çok katmanlı bir mimari olmaz. Burada, [Web] katmanı her şeyi üstlenecektir: sunum, iş mantığı, verilere erişim. Bu işleri gerçekleştirecek olanlar eylemlerdir.
Şimdi, çok katmanlı bir web mimarisini ele alalım:
![]() |
[Web] katmanı, herhangi bir çerçeve kullanmadan ve MVC modelini takip etmeden uygulanabilir. Bu durumda gerçekten çok katmanlı bir mimariye sahip oluruz, ancak Web katmanı MVC modelini uygulamaz.
Dolayısıyla, yukarıdaki [Web] katmanıyukarıdaki [Web] katmanı, ASP.NET ve MVC ile uygulanabilir ve böylece MVC türünde bir [Web] katmanına sahip katmanlı bir mimari elde edilir. Bu işlem tamamlandıktan sonra, bu ASP.NET ve MVC katmanlarını, geri kalan (iş mantığı, DAO, ORM) aynı şekilde koruyarak değiştirebiliriz. Böylece, artık MVC türü olmayan bir [Web] katmanına sahip katmanlı bir mimari elde ederiz.
MVC'te, M modelinin V görünümü olan c.a.d'in modeli olduğunu belirtmiştik. V görünümü tarafından görüntülenen verilerin tamamı. MVC'in M modeline ilişkin başka bir tanım verilmiştir:
![]() |
Birçok yazar, [Web] katmanının sağındaki kısmın MVC'in M modelini oluşturduğunu düşünmektedir. Belirsizlikleri önlemek için şunlardan söz edilebilir:
- [Web] katmanının sağındaki her şeyi ifade ederken alan modelinden
- bir V görünümü tarafından görüntülenen verileri ifade ederken "görünüm modeli"
Bundan sonra, "M modeli" terimi yalnızca bir V görünümünün modelini ifade edecektir.
1.3. Kullanılan araçlar
Aşağıda, (Eylül 2013 itibarıyla) Visual Studio 2012'nin Express sürümlerini kullanıyoruz:
- masaüstü uygulamaları için [http://www.microsoft.com/visualstudio/fra/products/visual-studio-express-for-windows-desktop ];
- Web uygulamaları için [http://www.microsoft.com/visualstudio/fra/products/visual-studio-express-for-Web ].
Bu ürünlerin en son sürümlerini yüklemek için Microsoft'un [Web Platform Installer] ürününü (http://www.microsoft.com/Web/downloads/platform.aspx ) kullanabilirsiniz.
Ayrıca, Google’ın Chrome tarayıcısı (http://www.google.fr/intl/fr/chrome/browser/) kullanılacaktır. Buna [Advanced Rest Client] uzantısı eklenecektir. Aşağıdaki adımları izleyebilirsiniz:
- Chrome tarayıcısıyla [Google Web store] sitesine (https://chrome.google.com/webstore) gidin;
- [Advanced Rest Client] uygulamasını arayın:
![]() |
- uygulama artık indirilmeye hazırdır:
![]() |
- Uygulamayı indirmek için bir Google hesabı oluşturmanız gerekecektir. [Google Web Store] daha sonra [1] onayını ister:
![]() |
- [2]'te, eklenen uzantı [Applications] [3] seçeneğinde kullanılabilir. Bu seçenek, tarayıcıda oluşturduğunuz her yeni sekmede (CTRL-T) görüntülenir.
1.4. Örnekler
Öğrenme örneklerinin çoğu yalnızca Web katmanıyla sınırlı olacaktır:
![]() |
Bu öğrenme süreci tamamlandığında, çok katmanlı bir web uygulaması sunacağız:
![]() |











