MVC'de kontrolör ve yönlendirici arasındaki fark nedir?


19

Aynı şey mi (eylemlere URL'ler veya URL'lere eylemler eklemek) mı yoksa eksik olduğum bir fark var mı?

Örnek: http://github.com/dannyvankooten/PHP-Router vs. http://konstrukt.dk


1
o yönlendirici bana daha çok yüceltilmiş bir vekil gibi geliyor
cırcır ucube

Yalnızca bir modele (veritabanına), bir denetleyiciye (yönlendirici olan) ve görünüme (sayfa) ihtiyacınız vardır. Bu kadar. Bir Yönlendiriciniz ve bir Denetleyiciniz varsa, onu karmaşık hale getirmiş olursunuz ve yalnızca bir Denetleyiciye veri aktarmak için Router'ı kullanırsınız. Denetleyici bir Yönlendirici'dir, ancak Yönlendirici bir Denetleyici değildir. Buraya bakın code.tutsplus.com/tutorials/mvc-for-noobs--net-10488
cilt bir

Yanıtlar:


15

Yönlendirici:

Yönlendirme, bir URI uç noktasını (URI'nin temel URL'den sonra gelen kısmı) alma ve o denetleyicinin hangi modül, denetleyici ve eylemin isteği alması gerektiğini belirlemek için parametreleri ayrıştırması işlemidir.

Denetleyici:

Denetleyici, tüm isteklerin denetleyici tarafından kesildiği ve istenen URL'ye (Yönlendiriciden yönlendirme isteği) dayalı olarak ayrı Eylem Denetleyicilerine gönderildiği bir »Denetleyici deseni uygular.


4

Bir Frontend-Controller , somut Eylemin yürütülmesi gereken uygulamaya karşı (HTTP) isteğine dayalı olarak karar vermek için bir Yönlendirici ve bir Dağıtıcı ile işbirliği yapmalı ve sonra onu göndermelidir.

Bir tasarım nasıl ayrıntılı bağlı olarak, bazı Kontrolör ler olmadan çalışma Yönlendirici ler ve kendi yönlendirme veya yönlendirme talebi nasıl işleneceğini tasarımında örtülü olduğunu yapmak.

Bazı Dağıtıcı s da geçiş ile ilgili gönderilen nesneyi hareket yöntem . Eylem-Yöntemler sonra kendilerini ayrıştırmak İsteği bile öylesine kısmen Denetleyici eylemleri hala yapabileceği bazı talepleri baz alarak rotalanması. Bunun tipik bir örneği, bir çerçevenin yanıt olarak bir yönlendirme yapmayı önerdiği durumdur. Bu aynı zamanda Yönlendirici ve Denetleyicinin ne kadar ilgili veya yakın olduğunu gösterir .

Burada normal olarak çizilen fark, yönlendirmenin hangi eylem yönteminin yürütüleceğine dikkat etmesi veya tanımlanmasına yardımcı olmasıdır ve daha sonra denetleyici bu eylemi sağlamaktan sorumludur, ancak her ikisi de isteği ele alır.

Gördüğünüz gibi, Yönlendirici ve Denetleyici arasındaki farklar uygulamalar ve çerçeveler arasında büyük farklılıklar gösterebilir. Sonunda, somut uygulama belirli bir soyutlama seviyesinin yararlı olup olmadığına ya da yolunda durmasına ihtiyaç duymaktadır.

Ancak terimlerden, Denetleyicinin genel uygulamada daha yüksek bir rol olduğunu söyleyebilirim . Bu, eylemin söyleyeceği yerdir.


3

Rota, URL'yi eylem olan bir denetleyiciye eşler. Bazen roller, çerçeveye bağlı olarak çok iyi ayrılmaz.


2

Yönlendiriciler denetleyici katmanının bir parçasıdır . Yönlendirici işleme mekanizması, eski okul Ön Denetleyici deseninin (index.php'deki büyük anahtar) değiştirilmesidir.

Modern bir çerçevede, bir yönlendirici olası bir tür "istek" ile işlemcisi arasında doğrudan bir bağlantı tanımlar. Buna karşılık, bir kontrolör sadece bilgiyi tanımlamakta ve bu verileri kendi bağlamında ayrıştırmaktadır.


0

Oldukça basit bir yönlendirici, genellikle GET veya POST değişkenleri gibi harici girdilere dayanarak uygulama boyunca bir yolculuk yapar.

Ancak bir Yönlendirici, bir MVC'nin herhangi bir parçası değildir, birkaç MVC ve HMVC çerçevesi yönlendiricileri kullanır, ancak bu onları MVC modeline bağlamaz.

Ek olarak, MVC I'in birkaç erken uygulaması, ayrı denetleyicilere erişmek için denetleyici başına bir dosya ile eylemlerin dosya tabanlı ayrılmasına dayanmaktadır. Bu, uygulamaya çok daha iyi hizmet eder, çünkü sıska kontrolörlere sahip olmak, daha sağlam modellerle, kontrolördeki belirli bir yönteme geçmek zorunda kalmazsınız ve bu nedenle mantığa tek bir yerden erişebilirsiniz (model) davranışlar.


-1

yönlendirici alır

istek

ve hangi denetleyici / denetleyici yöntemlerinin isteği işleyeceğine karar verir.

Kontrolör istekleri kabul eder ve işler!

Şimdi de url'yi böler ve temel url'den sonra ilk kısmı kontrolör olarak ve ikinci kısmı eylem olarak kullanan bir kontrolör yaptım. Bu, denetleyiciye karşılık gelen bir dosyayı ve bu dosya içinde eyleme karşılık gelen bir yöntemi yükler.

Bu gerçekten bir kontrolör değil (MVC söz konusu olduğunda), yönlendirmenin bir parçasıdır.

Örneğin [GET] uri'yi ele alın: example.com/article/view/123 MVC yönlendirici uri'yi ayrıştırır ve aşağıdaki segmentleri bulur

makale görünümü 123 Varsayılan olarak çoğu yönlendirici articleController örneğini başlatır ve 123 parametresini parametre olarak geçirerek çağırır. (Alternatif olarak bazı getUriSegment (segmentIdx) yöntemine sahip olabilirsiniz, bu da çerçeveniz için bir tasarım seçimidir.)

ArticleController bir $ articleId parametresi ile bir görünüm yöntemi olacaktır. Bu yöntem muhtemelen şöyle bir şey yapacaktır: belirtilen makaleyi alın (örneğin bir model aracılığıyla bir db'den) ve sonra görüntüleyin (muhtemelen model tarafından döndürülen makaleye verilen bir görünümü döndürerek)

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.