Yanıtlar:
Eğer bir bina ediyorsanız tek sayfa uygulama (SPA) , o zaman muhtemelen "MVC" gerekmez ASP.NET MVC . Görünümler, özellikle dinamik görünümler, muhtemelen müşteri tarafında iletilir / manipüle edilir. Sadece iyi açısal kolları.
Ama belki% 100 SPA istemiyorsun. Sonra ne? Hangi yerine 10 sayfa, ancak 10 sayfa düşünün çokdinamik. Bir kullanıcı oturum açtıktan sonra, sağ köşede küçük bir kullanıcı rozeti var. Bu dinamik değil. Sadece kullanıcının "puanı" ve en yeni özçekimleri gibi birkaç şık şey gösterir. Güzel şeyleri önbelleğe alıyorsunuz, böylece kolayca alınabiliyorlar. Şimdi bununla iki yoldan gidebilirsin. Müşteri tarafı bir MVC uzmanıysanız, ilk HTML yükü teslim edildikten sonra, diğer tüm veriler gibi, rozet verilerini alırsınız. Ama belki de saf değilsin. Belki de bir temizleyicinin zıttı sensin. Belki bir kirletici vardır. Bu nedenle, ilk HTML’yi sunmak yerine, sunucunuza geri gönderecek bazı JavaScript’ler sunmak, rozet verilerini almak için JavaScript’le göndermek ve sonunda bu verileri müşteri tarafındaki MVC aracılığıyla bir görünümde birleştirmek için,Bu başlangıç HTML olarak. İlk HTML’niz yayınlandıktan sonra, tipik müşteri tarafı MVC antics ile devam edersiniz.
Öyleyse ... Sunucudaki ve istemcideki MVC, 2001'de karışıklık yaratan kodu düzenlemek için uygun bir yoldur. Birini veya diğerini seçmek zorunda değilsiniz. İkisini de seçebilirsiniz. Verilen, ilk HTML teslim edildikten sonra ne kadar çok şey yaparsanız, sunucu tarafı MVC'sine o kadar az ihtiyacınız olur. Yine de ihtiyacın olursa senin için orada. Örneğin, dış Açısal şablonların aslında .NET MVC ActionResult olabileceği bir ASP.NET MVC / Angular uygulamasında çalıştım. Bu, sunucu denetleyicinizin verileri bir görünümde bir araya getirebileceği, bir şablon olarak Açı'ya teslim edebileceği ve Angular'ın denetleyicisinin daha sonra verilerini görünümde birleştirebileceği anlamına gelir. Bunun iyi bir fikir olduğunu söylemiyorum ama bu sadece bir MVC formunun diğerini eskimiş hale getirmediğini gösteriyor.
Ayrıca, Angular'ı nasıl dağıttığınız önemli değil, ilk HTML'yi, şablonları ve en önemlisi verileri sunacak bir yola ihtiyacınız olacak. Neden bunu kolaylaştıran bir platform kullanmıyorsunuz? Çok var, ancak .NET MVC slouch değil. Dediğim gibi, ilk HTML ve harici Angular şablonlarını bir MVC işleminin sonucu olarak yapabilirsiniz, ancak daha iyisi, verileri sunmak için .NET'S Web API'sini kullanabilirsiniz. Web API kayısı kompostosu kadar lezzetlidir.
Özetle: MVC sadece bir kalıptır. Bu kalıbı herhangi bir sayıda fiziksel katman üzerinde kullanmak isteyebilirsiniz. Kullanılamaz. Mantıklıysa, özgürce kullanın. Ayrıca, Angular yine de MVC olmayabilir (yani, bu şeyleri önemseyen insanlar diyor), bu nedenle adında "MVC" olan bir araçla kullanmaktan çekinmeyin. Cehennem, MVC olsa bile, karıştırın ve istediğiniz şekilde eşleştirin.
ASP.NET MVC sunucu tarafı bir çerçevedir; Hangi JavaScript kitaplıklarını kullandığın önemli değil. AngularJS, hangi sunucu tarafı teknolojisinin web sitesine güç sağladığı umrunda olmayan bir istemci tarafı kütüphanesidir; Python, ASP.NET MVC veya doğrudan diskte depolanan düz eski HTML dosyalarını bile içerebilir.
ASP.NET MVC ve AngularJS her ikisi de uyumludur ve bunları birlikte kullanan birçok proje vardır.
İkisini de kullanmanız mı gerekiyor ? Pek sayılmaz. Tamamen projenizin ihtiyaçlarına bağlıdır.
Web siteniz dinamikse, bazı sunucu tarafı komut dosyaları kullanmanız gerekir. ASP.NET kullanabilirsiniz ve AngularJS kullanıyor olmanız sunucu tarafı kodunuzu daha MVC yapmaz. Sunucu tarafı uygulamanızı MVC olarak yapılandırabilmek istiyorsanız, ASP.NET MVC'yi seçmeniz gerekir.
Benzer şekilde, ASP.NET MVC kullanıyor olmanız müşteri tarafı kodunuzun yapısı hakkında hiçbir şey ifade etmez. Tüm JavaScript'inizi tek bir dosyaya yapı hakkında hiçbir şey düşünmeden koyabilir ve bundan mutlu olabilirsiniz (proje büyümeye başlayana kadar). Yine burada, AngularJS başvurunuzu müşteri tarafında yapılandırmanın bir yolu olarak kendini göstermektedir.
Yan not: sorunuzu ASP.NET MVC olarak etiketlediniz. 3. Bu, sürdürmeniz gereken eski bir proje değilse veya uygulamayı son dört yıldır güncellenmeyen eski sunucularda barındırırken belirli kısıtlamalarınız yoksa, ASP'yi kullanabilirsiniz. .NET MVC 4 veya 5 yerine.
Visual studio kullanıyorsanız, açısal ve MVC Web Api kontrolörleri içeren yeni bir 'tek sayfalık uygulama' MVC web sitesi şablonu vardır.
Bu iyi çalışır çünkü MVC sunucu tarafı kodunuz, açısal istemci tarafı kodunun çağırması için json uç noktaları sağlar.
Ek olarak, tek sayfa uygulamanızın temel html görünümünü veya görünümlerini sunmak için MVC denetleyicilerini kullanabilirsiniz. bu, sunucu tarafı oluşturma, yetkilendirme, yönlendirmeler, hata işlemesi vb.
Genellikle, tek bir sayfa uygulamasında, farklı ortamlar için uç nokta URL'leri, farklı diller ve hatta sunucu tarafı yapmak daha kolay olabilecek tek kimlik doğrulama sayfası gibi şeyler bile html / javascript tarafından oluşturulan küçük bir miktar sunucu isteyebilirsiniz.
3 yıl sonra verilerinizi sunmak için ASP.NET Web API'sini ve uygulamanızı istemci tarafında yapılandırmak için Angular'ı (js veya daha yenisi) kullanın. Statik bir site yapıyorsanız, ASP.NET MVC'yi kullanın.