ASP.Net'te 3 Katmanlı mimari ile MVC (Model, Görünüm Denetleyicisi) arasındaki fark


9

Aynı mimari uygulandığında bana göründüğü gibi 3 katmanlı mimarinin ASP.Net'teki MVC'den (Model, Görünüm Denetleyicisi) nasıl farklı olduğunu bilmek isterim.

3 katmanlı biz var User Services Layer, BusinessLayerve DataAccessLayer, elimizdeki diğer taraftan Model, Viewve Controller. Bu benim için aynı mimari gibi görünüyor.

Herkes iki mimariden gerçekten farklı olup olmadığını, her katmanın birbirinden nasıl farklı olduğunu açıklayabilir mi?



2
MVC daha çok bir UI mimarisi olarak görülebilir. Diğer örnekler, örneğin Açısal'dır. Bir ASP.net MVC projesinde 3 katmanlı mimari uyguladığınızda, MVC içindeki modeli (M) 3 katmana böler.
devfric


@gnat görüyorum, o eski olanı daha önce görmedim .. ama dediğin gibi dups gibi görünüyor, tek şey eski olanın cevabı iyi açıklanmadı, ne düşünüyorsun? :)
japzdivino

Yanıtlar:


18

Bu, bir elma ve bir elma çekirdeği arasındaki farkın ne olduğunu sormak gibidir. Bu iki mimari birbirinin yerini tutmaz. Bence daha doğru bir görüş, 3 katmanlı mimarinin MVC'yi arttırması .

MVC Mimarisi

  • Modeller: Bunlar uygulamanızdaki "şeyleri" temsil eder. Daha sonra açıklayacağım gibi, bu katman son yıllarda biraz bulanıklaştı.

  • Görünümler: Kullanıcı arayüzü. Kullanıcının etkileşimde bulunduğu şey.

  • Denetleyiciler: Kullanıcıya ve model katmanındaki değişikliklere yanıt veren programlama kodu

3 Katmanlı Mimari

3 katmanlı mimari ile farklı sorumluluklara sahip katmanlarınız olur.

  • Kullanıcı Hizmetleri: (veya genel olarak "hizmetler") Bu katman daha çok "model" katmanının alınmasını ve değiştirilmesini koordine etmekle ilgilidir. Karmaşık, çok adımlı eylemler burada gerçekleştirilir

  • İş Katmanı: Bu, programlama koduna kazınmış iş kurallarını gösterir. "İş" in istediği şey bu katmana uygulanır.

  • Veri Erişim Katmanı: Kalıcı bir veri deposuna erişmekten sorumlu bir veya daha fazla sınıf.

MVC ile kesişen 3 katmanlı mimarinin tek bölümü "İş Katmanı" dır. MVC'deki "Modeller" ve 3 katmanlı mimarideki "İş Katmanı" aynı hedefe ulaşmaya çalışıyor.

MVC'deki "M" bulanıklaştı

MVC'deki "model" katmanı son yıllarda genişledi. Gördüğüm kadarıyla, iki, muhtemelen üç çeşit model var:

  1. Etki Alanı Modelleri: Bunlar, "İşletme" nin önem verdiği "şeyleri" temsil eder - İşletme Alanı. Bu sınıflar, iş kurallarını uygulamak için veriler ve bu veriler üzerinde çalışan tüm prosedürleri içerir. Etki Alanı Modelleri sıklıkla bir veritabanındaki tablolara bağlanır. Bu, 3 katmanlı mimarinin "İş Katmanı" na uygun görünüyor.

  2. Modelleri Görüntüle: Bunlar, alan modellerinden verileri görünüme daha lezzetli bir şeye masaj yapmak için kullanılan sınıflardır. Bu, 3 katmanlı mimaride hiçbir yere uymuyor çünkü görünüm modelleri iş mantığı uygulamadığı gibi herhangi bir hizmet veya veri erişimi de sağlamıyor.

  3. İş Modelleri: Karmaşık uygulamalarda, Etki Alanı Modelini İş Mantığından ayırma ihtiyacı ortaya çıkar. İş Modelleri, iş kurallarını uygulamak için bu veriler üzerinde çalışan veriler ve prosedürler içerir ve Etki Alanı Modelleri, yalnızca verileri tutan ancak davranış içermeyen nesneler olan "Mülk Torbaları" na devredilir. Etki Alanı Modelleri, veritabanı ve uygulama arasında başka bir Veri Aktarım Nesnesi biçimi haline gelir.

MVC'de hiçbir yerde veri erişimi söz konusu değildir. Bazı durumlarda, veri erişiminin MVC'nin "model" katmanına ait olduğunu göreceksiniz. Gerçekten bütün bir uygulama oluşturmak için 3 katmanlı mimarinin MVC ile eşleştirildiğini görüyorum . Biri diğerini arttırır veya geliştirir:

  • Modeller
    • Etki Alanı Modelleri (MVC / 3 katmanlı)
    • Modelleri Görüntüle (MVC)
    • (isteğe bağlı) İş Modelleri (MVC / 3 katmanlı)
  • Görüntüleme Sayısı (MVC)
  • Kontrolörler (MVC)
  • Veri Erişimi (3 katmanlı)
  • Hizmetler (3 katmanlı)

Bazı kavşaklar vardır, ancak bunlar büyük ölçüde ayrıdır ve birlikte daha büyük bir sistemin çeşitli bileşenlerini ayırmak ve izole etmek için kullanılır.


3

Hayır, onlar aynı değil.

MVC, kullanıcı arayüzü kodunu yapılandırmak için bir tasarım modelidir. Üç katmanlı bir mimaride kullanılabilir, bu durumda desen kullanıcı hizmetleri katmanına ait olur. Ancak, üç katmanlı olmayan bir uygulamada UI için de kullanılabilir - örneğin, temelde kalıcılığı olmayan ve bu nedenle veri erişim katmanı olmayan bir hesap makinesi.

MVC ön ucuna sahip üç katmanlı bir mimaride, model olarak kullanılan etki alanı nesneleri, iş katmanındaki nesneler olacaktır, ancak MVC deseni, modelin ne tür nesneler olduğunu, yalnızca modeldeki rollerinin ne olduğunu belirtmez. dır-dir. Örneğin, MVVM varyantında modeller, etki alanı nesnelerinin üstünde UI'ye özgü bağdaştırıcılardır. Bu durumda model bile kullanıcı hizmeti katmanına aittir.


Her şeyden önce, MVC bir mimari kalıp geliştiricisidir . Mozilla.org/en-US/Apps/Fundamentals/… . İkincisi, SADECE UI için değil, UI'de yaygın olarak kullanılır, ancak çok belirleyici ifadeniz yanlış ve yanıltıcıdır.
Daniel Dubovski

2

Tonlarca farklı cevap olacağını biliyorum, ama size bu konudaki görüşümü vereceğim.

Bu yazılım mühendisliği "Bu bağlıdır" en ünlü cevaptır.

Aslında ona bakarsanız, çeşitli uygulama ve teorik farklılıkların yanı sıra, benzer akışlara sahip çok benzer kalıplardır.

Nereye bağlı olduğu inşa ettiğiniz uygulama, basit bir webapp sadece bir ORM üzerinden DB konuşurken bir MVC katmanı olabilir. Daha karmaşık olanı, MVC'nin Kullanıcı Katmanındaki ön ucu işleyebilir, BL katmanında daha karmaşık kullanıcı olmayan pozlama işlemleri gerçekleşir ve veri katmanı birden çok kaynaktan oluşur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.