Bir web sitesi için tek bir giriş noktası olması.

9 Cevap php

Bu soru Rasmus Lerdorf's talk from Drupalcon izlerken kaynaklanıyor. Bu soru, onun konuşma Drupal ile yapmak için özel bir şey var, arada ... sadece kendi con verildi. Benim kendi soru da PHP ile yapmak için özel bir şey vardır. Ben merak ediyorum ki, genel olarak tek giriş noktasıdır.

Bu gün çoğu çerçeveler onlarla inşa ne olursa olsun tek bir giriş noktası sunuyor gibi görünüyor. Konuşmasında Rasmus o bu kötü olduğunu düşünüyor bahseder. Onun bu düşünce doğru olurdu gibi geliyor bana. Siteyi isabet herkes aynı giriş noktası üzerinden geliyor ise belli bir noktaya şeyler trafik sonra batağa saplanmak değil mi? Onların istek aynı noktadan geçmesi kalmadan insanlara bir sitede belirli noktalara doğrudan erişim sağlamak için daha verimli olmaz mı? Ama belki de asıl etkisi çok kötü değil mi? Belki modern bir mimari halledebilirim? Belki de dikkate bile değer haline gelmeden ölçekte gerçekten devasa olmak zorunda? Ben bu sitede insanlar bu konuda ne düşündüğünüzü merak ediyorum.

9 Cevap

Kısacası, Rasmus veya yanlış bir yorumdur.

Bu bilgisayarların nasıl çalıştığını anlayarak açık bir eksikliği gösterir. Bir şey daha alışmakta, bu CPU daha yakın ve bu nedenle faster daha muhtemeldir. Sen, tek bir giriş noktası! = Başarısızlık tek nokta. Ama bu tüm insanların giriş tek noktadan derken, biz uygulaması bahsediyoruz noktada, yanında bulunuyor, bu mantık için tek bir giriş noktasıdır.

Söz değil bu giriş merkezi bir nokta var, ya da genel olarak girdileri noktalarının sayısını azaltmak için değil, mimari Beyin ölümü. En kısa sürede, her giriş noktasında app karşısında bir şey yapmak istiyorum, değiştirmek gerekir kaç basamak sanırım? Her sayfası bu kendi üzerinde durdu bir uygulama ile ele alarak, onu değiştirmek zorunda emdi, ve sizi temin ederim, biz gerekli.

Önemli şey, yük dengeleme ve bildirime kodu gibi yöntemlerle ölçeklenebilirlik destekleyen bir web framework kullanmak olmasıdır.

Hayır, bir tek giriş noktası kendi içinde bir darboğaz yapmaz. Google ön sayfasında hits bir sürü alır, ancak sunucuların sürü var.

Yani cevabı: Bu önemli değil.

Yazılım geliştirme şey gibi, duruma göre değişir. Ön-denetleyici tarzı çerçeveler Rasmus itirazının her istek üzerine önünüzde çok kodunu yüklemek zorunda almak performans isabet. Bu% 100 doğrudur. Eğer bir çerçeve kullanarak, bir çeşit akıllı kaynak yükleme modülü / nesne / etc kullanıyor olsanız bile bir performans trade-off. Sen isabet performans almak, ama karşılığında geri almak

  1. "Iş mantığı" (ne olursa olsun) ve Şablon / Layout Mantık Cesaret ayırma

  2. Vb veritabanı sorguları adlandırılan hizmet, veri modeli, için kullanacağınız nesneleri anlık ve (daha da önemlisi) unified İnternet

Rasmus gibi bir adam için, bu performans isabet değmez. O bir C / C + + programcısı bulunuyor. Eğer bir yüksek performansı bir şekilde iş mantığı ayırmak istiyorsanız onun için, PHP için bir C / C + + Uzantısı yazmak.

Eğer kolayca PHP C / C + + uzantıları yazmak ve zaman-to-market performans oranı vs kabul edilebilir bir ortam ve ekibi var ise, o zaman evet, ön-denetleyici çerçeve atmak.

Senin ortam değilse, verimlilik sizin (likely) simple CRUD Application getirebilir bir ön-denetleyici çerçeveyi artırır düşünün.

Bu benim ilk düşündüğüm, ama bir etkisi olduğu görünmüyor. Önyükleme yükleyicisi dahil bazı çevre sabitleri ayarı, isteğe bağlı istisnaları yakalamak ve ön denetleyicisi sevkiyat: Sonuçta, giriş noktası sadece bir kaç şey yapıyor (genellikle). Bu dosya kontrolör, eylem ya da kullanıcıya bağlı olarak değişmez, çünkü think bu verimsiz olmadığı nedenidir.

Ben bu ancak garip hissediyorum. Ben şu anda küçük bir MVC framework kendim yapıyorum ama biraz ben kullandığım en çerçeveler ters oluyor. Ben erişilen dosyada kontrolör mantığı koydu. Örneğin, index.php IndexController ve eylemlerini içerecektir. Bu yaklaşım, en azından benim için iyi çalışıyor.

Ben size üzerinde giriş yalnızca tek bir noktaya sahip olması en büyük avantajlarından biri güvenlik olduğunu düşünüyorum. Tek bir yerde kontrol ve valide ise gidiş girdi tüm bozuk sistem için daha az olasıdır.

Php mvc çerçevelerin çoğu yeniden url çeşit kullanmak, ya da en azından kendi de index.php sonra bir şey ayrıştırmak gibi, tek bir giriş noktası needed.

Bunun yanı sıra, i, bağlam başına giriş noktaları sağlamak için mi söylüyorlar, web (/ sabun) / konsol / ...

Sadece eklemek için, insanlar genellikle düşünmek şey bir php sayfası olduğundan, bütün isteklere hizmet bir tek sayfası olmasıdır. Sıralama kuyruk gibi.

Unutulmaması gereken önemli şey, her istek yazısının bir örneğini oluşturur ve iki farklı sayfaları aynı anda erişilen ediliyordu sanki böylece yükü aynı olmasıdır. Peki, hala aynı yük. Hemen hemen.

Ancak, bazı çerçeveler sen giriş komut oluyor gerekmez şeyler bir cehennem sürü olabilir. Sıralama herkesi kucaklayan gibi olası tüm senaryoları karşılamak için, ve bu yük neden olabilir.

Şahsen ben çok sayfaları, ben OOP ve prosedürel karıştırın aynı yolu tercih. Ben eski okul yolu php gibi.

Bir ön kontrolör dosya mimarisi kullanarak dezavantajları kesinlikle vardır. Saem açıkladığı gibi, aynı dosyaya erişirken performansı genellikle avantajlıdır, ama Alan Fırtına ve Rasmus Lerdorf açıklamak gibi, böyle bir ön denetleyicisi gibi kod kolu sayısız durumlar (yapmaya çalışıyorum sitede her "sayfa" için isteği yerine getirmeye çalışır ) kod şişirilmiş ve karmaşık toplama yol açar. Her sayfa yük için kod şişirilmiş ve karmaşık bir koleksiyon kullanarak kötü bir uygulama olarak kabul edilebilir.

Saem bir ön-denetleyici birden çok yerde kodunu düzenlemek zorunda sizi kaydedebilirsiniz savunarak, ancak bazı durumlarda, bu işten dışarı ayırarak çözmüş daha iyi olduğunu düşünüyorum.

Aslında web sunucusu tarafından kullanılan bir dizin yapısına sahip web sunucusu ve geliştiriciler için daha belirgin için basit şeyler yapabilirsiniz. Onlar geleneksel olarak yeni bir URL'ye içine onları yeniden yazmak daha temsil gibi konuma url çevirerek dosyalara hizmet için bir web sunucusu için kolaydır. Bunun yerine her şeyi işlemek için şişirilmiş bir kontrolör ile başlayan, onlar geliştirmek için gereken ne daha özel bir dosya / kontrolör ile başlar, çünkü olmayan bir ön kontrolör dosya mimarisi geliştirici daha belirgin olabilir.

Ben "Birkaç dosya" vs "bir dosya" açısından bu tartışmaya büyük bir yanlış anlaşılma olduğunu düşünüyorum.

Bir giriş noktası tek bir dosyada, çünkü o zaman biz odaklanmak zorunda tüm bu tek dosyada kod olduğunu düşünmek eğilimindedir - bu yanlış.

Popüler çerçeveleri tüm giriş manipülasyon kod, yorumlama kodu ve istekleri için doğrulama kodu ile dosyaların ton vardır. Kod bir yerde değil, daha ziyade bir ormanda etrafında yayılır gerektirir / nasıl talep ve whats bağlı olarak farklı sınıflar arayarak bildirimde bulunur.

Her iki durumda da isteği gerçekten farklı dosyalar tarafından işlenir.

Sonra _detect_uri çeşit (strpos gibi birçok başka fonksiyonları (çağırmak gerekiyor) fonksiyonu), substr (), strncmp () doğrulamak, temizlemek ve istek dize bölmek için tek bir giriş noktası olmalıdır Neden ben Sadece hep birlikte bu kodu ortadan birkaç giriş noktalarını kullanabilirsiniz?

URI.php içinde CodeIgniters _detect_uri () fonksiyonuna bir göz atın. CodeIgniter üzerinde almak için değil, bu sadece bir örnek. Diğer çerçeveler aynı şekilde yapar.

Sen tek bir giriş noktası yanı sıra birkaç giriş noktaları ile bir MVC desen hedeflere ulaşabiliriz.