MVC mimarisinde yazılımı Model View Controller olarak katmanlara ayırarak daha düzenli bir geliştirme sağlıyoruz. Da tam olarak Viewlerin neler olması gerektiği, modelların neler olması gerktiği yada Controllerların neler olması ve hatta onların içindeki Actionların neler olması gerktiğine nasıl karar veriyoruz?

Elimizde bir yazılım gereksinimi var diyelim. Bundan MVC mimarisini nasıl çıkarırız?

Uyguladığınız yada sektörde uygulanan pratikler nelerdir?

soruldu: 14 Ağu '14, 12:56

emrekacan's gravatar image

emrekacan
813304450
cevap kabul oranı: 9%

Daha once soyle bir cevap verilmisti:

MVC kullanımını açıklar mısınız? http://www.btsoru.com/questions/1924/mvc-kullanmn-acklar-msnz

(14 Ağu '14, 16:25) CemIkta ♦ CemIkta's gravatar image

Teşekkür ederim. Evet orda nasıl kullanılacağı açıklanmış. Ama ben tam olarak oradaki Öğrenci sınıfına nasıl karar verildi. Onun OgrenciListesi.java view kısmına nasıl karar verildi. Onu anlamaya çalışıyorum.

(15 Ağu '14, 02:20) emrekacan emrekacan's gravatar image
1

"Nasıl karar veriyoruz" sorusu biraz geniş bir soru. MVC üzerine yazılmış kitaplarda çeşitli yaklaşımları ne zaman kullanılması ve ne zaman kullanılmaması gerektiğini anlatıyorlar. Özellikle hangi programlama dili ile MVC kullanacaksanız onunla ilgili kitaplara göz atmanızı tavsiye ederim. Böylelikle uygulamanıza hangisinin daha iyi olacağına karar verebilirsiniz.

(15 Ağu '14, 07:23) araknafobia araknafobia's gravatar image

Zaten sorma sebebim teknoloji bağımsız öğrenmek. Çünkü etrafta bir sürü MVC mimarisi uygulayan teknoloji var. İster C# ister Java hatta JAvascript. Bi uygulamayı yazarken MVC mimarisini mimari boyutta uygulayıp gerektiğinde hepsindede uygulamak istiyorum. Çünkü MVC nin kendisi teknoloji bağımsız. (En azından ben öyle biliyorum.) Sizde bu mümkün mü? Mümkünse nasıl?

(15 Ağu '14, 08:05) emrekacan emrekacan's gravatar image

teknoloji bagımsız, dogru, ama MVC mimarisi, web projelerinde oldukça açıktır. Controller, View ve Modeller kesin olarak zaten ayrılmıştır. View html sayfalarıdır, model db tablolarını temsil eden ve ya iş yapmayan, nesneleri temsil eder. controller ise model ile view arasında iletişimi sağlayan, iş yapan sınıflardır. Yani projede neler view, model ve ya controller dır, bunlar gayet açık ve nettir. @araknafobia 'nın kastettiğide bu zannedersem. Programlama dillerinde mvc framework 'ü rahat geliştirmek için hazır yapılardır vardır. Yani teknolojiye göre değişmesi de bundan kaynaklanır.

(15 Ağu '14, 08:25) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Yanlış ifade ettim galiba. Kastım Model - View - Controllerı birbirinden ayırmak değil. Amacım Bunları kendi içinde ayırmak. Yani tamam Görüntüyle alakalı herşey Viewde olacak, Yada Modelle View arasındaki işleri Controllerlar yapacak. Da Neler controller yada View olacak? Mesela sizin HaberSitesiv2 projenizde HaberController ve KoseYazisiController var. Neden bunları tek kontroller içinde yapmadınız? Yada HaberController'ı kendi içinde SporHaberController ve SiyasetHaberController diye ikiye ayırmadınız?

(15 Ağu '14, 08:39) emrekacan emrekacan's gravatar image

Aynı şekilde HaberController içindeki HaberDetay Action'ı var neden HaberListe yada HaberCreate yok? vs vs. Tam olarak öğrenmek istediğim bu? Teşekkür ederim.

(15 Ağu '14, 08:39) emrekacan emrekacan's gravatar image
1

Sorunuzu şöyle anladım: MVC nin ne olduğunu kısmen biliyorum ancak tam olarak view kısmında neler olacağı ya da model kısmı nasıl yazılmalı onları detaylı öğrenmek istiyorum. Eğer doğru anlamışsam şöyle bir cevap vereceğim son olarak; Daha detaya inmek için kendinize bir dil ve framework seçin ve onunla ilgili kitaplar okuyun, alıştırma yapın. O kitaplarda her bir parçayı nasıl olmalı ve olmamalı diye anlatıyorlar. Soyut olarak MVC'yi tamamen teknolojiden bağımsız öğrenmek pek mümkün değil gibi.

Yanılıyorsam yine üstadlar uyarsın. İyi çalışmalar.

(15 Ağu '14, 08:44) araknafobia araknafobia's gravatar image

Şimdi biraz daha netleşti. Bazı yerler size kalmıştır. Contoller sınıfının çok büyüyecegini öngörüp, mantıksal olarak farklı controllerlara ayırabilirsiniz. İsterseniz hepsini tek controller yonetir. Mesela userController ve roleController yerine, MembershipController yaparsınız, rol ve kullanıcı işlemlerini bunun içinde yaparsınız. haber ve kose yazısı için mesela postController yaparsınız her ikisini de bu tek controllerden yönetirsiniz. bu tamamen sizin öngörünüz ile alakalıdır. Yani bunun için standart bir kural yoktur.Bu konuda temel kural mantıksal ve temiz kod yazma üzerinedir.

(15 Ağu '14, 08:51) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

@araknafobia, size katılıyorum. Yazılım süreçleri, mimari ve algoritmaların dile bagımlılığı, o dilin, bunlar ile daha rahat çalışmasını sağlayacak çok fazla teknoloji geliştirmesinden kaynaklanıyor.

(15 Ağu '14, 08:57) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Anladım. Teşekkür ederim herkese.

(15 Ağu '14, 09:02) emrekacan emrekacan's gravatar image
11 yorumdan 5 tanesi gösteriliyor hepsini göster

Eger basit bir Front-end teknolojileriyle yazilmis web application i ele alicak olursak;

Model: Server tarafindaki veri yapilandirmasi. Genel olarak JSON ile front end e aktarilmakta. Basit bi ornek vericek olursak diyelimki serverdan bi insan hakkinda veri almak istiyosunuz. JSON dosyasi serverda insani su sekilde kayitli tuttugunu varsayalim:

insan = { "ad" : "Emre", "soyad" : "Yilmaz", "yas" : "22", "cinsiyet" : "Erkek", }

Controller: Bu islemi Javascript yardimiyla (eger MVC framework kullaniyorsaniz duruma gore nasi yapicaginiz degisir) Server a http request gondererek hallediyoruz. Bu bolum controller in gorevlerinden bitanesi, genel olarak framework kullanim amaci sizin komplex bir javascript yazmadan Framework un API'si yardimiyla bu isi halledebiliyor olmaniz gerekir. Controller Serverdan almis oldugu JSON dosyasini View a aktarir.

View: Bu almis oldugunuz dosyadaki datayi ne sekilde parse edip son kullaniciya sunma biciminizdir basitce. Bana kalirsa bu durum icin view basitce HTML dosyasinin ta kendisidir (ama bazen tek basina html dosyasi da olmayabilir).

Verdigim bu ornekte de gordugunuz gibi On yuz (view) arka yuzden (model) tamamen ayrilmistir. Birbirlerinden tamamen habersizlerdir, direk iletisime gecemezler. Aradaki iletisimi controller saglamaktadir. Bu da MVC mimarisinin altindaki temel mantikdir. Yani Server ile Onyuz u birbirinden tamamen ayirmak.

Not: Biraz turkce kelime sikintim var kusura bakmayin :) Mumkun oldugunca hatasiz aciklamaya calistim, aciklamamda bi hata kusur varsa lutfen duzeltiniz.

permanent link

cevaplandı: 17 Ağu '14, 11:18

Haluk's gravatar image

Haluk
23027
cevap kabul oranı: 0%

değiştirildi: 17 Ağu '14, 11:20

Cevabınız için teşekkür ederim. Ama sorduğum tam olarak bu değildi. Sorudaki yorumların 11'ini de okursanız daha net bilgi alabilirsiniz. Teşekkür ederim tekrar.

(18 Ağu '14, 03:16) emrekacan emrekacan's gravatar image

Örnek olarak server bilgilerini tutabilceğiniz bir uygulama için MVC dosya yapısı söyle olur : alt text

(UI).xml (jsp için serverInfo.jsp olur) basit bi request için xml'de controllera verilen url(var controllerUrl = "/me/servers/InquireServerInfoMiController";)' den requestTo'ya ordan servislere (manager) dosyasına ardından dao ya burda kullandığınız orm(burda ibatis kullanılmıştır) teknolojısı gore dao.xml e gider ve DB(oracle)'den veri alır.

permanent link
Bu kayıt wiki sayfası olarak tanımlanmıştır.

cevaplandı: 18 Ağu '14, 07:54

%C3%B6zcan's gravatar image

özcan
591101119
cevap kabul oranı: 15%

değiştirildi: 18 Ağu '14, 07:57

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×47

Soruldu: 14 Ağu '14, 12:56

Görüntüleme: 1,042 kez

Son güncelleme: 18 Ağu '14, 07:57

powered by BitNami OSQA