Hem AngularJS hem de ASP.NET MVC kullanmalı mıyım?


58

AngularJS ve ASP.NET MVC'yi öğrenmeye başladım, fakat ikisini de neden aynı projede kullandıklarından emin değilim?

İkisi de MVC çerçevesi değil mi? İkisini de aynı uygulamada mı kullanmalıyım? Öyle değil mi?

Yanıtlar:


74

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.


3
Şaşırtıcı tepki. Açıklamalarınız için çok teşekkür ederiz +1
Natalie

Bana, örneğin bana veri sağlayan bir web api varsa ve bu verileri ızgarada göstermek istiyorsam, Döngüsel veya MVC kullanarak döngü ve şablonlama yapabilir miyim? Web api servisini hangisini kullanarak arayabilir miyim? Projenin başlangıcından hangi yöne gideceğinize nasıl karar veriyorsunuz?
Natalie

1
@Natalie Veriler Web API'sindeyse, muhtemelen müşteri tarafından elde ediliyordur. Bu, .NET MVC'yi değil, Angular'da bağlayıcı olduğunuz anlamına gelir. Açıkça döngü yok. NgRepeat kullanarak verileri şebekenize / tablonuza bağlarsınız . Verileri almak için $ http modülünü kullanmanız ve Web API uç noktanızı aramanız gerekir. Hangi yaklaşımın kullanılacağına karar vermek gelince, bu ilginç. Siyah beyaz cevap yok. İçgüdülerinizi denemek, değerlendirmek ve takip etmek zorundasınız.
Roger’i

... bir uyarı kelimesi. Daha önce Angular veya başka bir tam hizmetli JavaScript çerçevesini daha önce kullanmadıysanız, halatları öğrenmek için biraz zor saatler geçirmeniz gerekir. Onlar kesinlikle basit değildir. Sizi temin ederim ki, uzun vadede hayatınızı kolaylaştırırlar. Çok çalış. Yapıştır. Harika olacaksın
Roger’i

1
@ScantRoger Özür dilerim, ama cevabınız benim için her şeyi netleştirmedi. Görünümün agnostik olduğu bir MVC sunucu tarafı çerçevesi kullanıyorsam, Angular'ı bununla nasıl bağlarım? Sunucu (web API) zaten Model ve Denetleyici tanımlarını içeriyor. Öyleyse, eğer Angular'ı kullanırsam, tekrar MVC uygulayacağım. Öyleyse, MCVCM ... olur mu? (Model & Denetleyici hem istemci tarafında ve sunucu tarafında tanımları) Ya da zaten benim Web API için bir MVC framework kullanıyorum eğer böyle Açısal gibi bir istemci tarafı MVC framework kullanarak edilmemelidir nedenle bu
Abdul

17

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.


1
teşekkürler MainMa. AngularJS'nin istemci tarafı ve MVC'nin sunucu tarafı olduğunu biliyorum. Gidon, knockoutjs gibi diğer kütüphanelerin MVC.NET'te kullanılabileceğini ve php, java uygulamalarında Angular'ın kullanılabileceğini de biliyorum. İstediğim şey neden ikisini birlikte kullanmamız gerektiği, çünkü ikisi de "MVC" olan aynı şeyi yapıyor, ama biri müşteri tarafı, diğeri sunucu tarafı. Neden MVC çerçevelerini istemci tarafında ve sunucu tarafında karıştırmalı? Sadece Açısal uygulama olan bir uygulama yapamaz mıyız? Ya da sadece MVC.net uygulaması olan bir uygulama?
Natalie

@Natalie: Anladım. Bununla ilgili daha fazla bilgi sağlamak için cevabı değiştirdim. Kısa cevap, bu iki çerçeveyi, hem sunucu hem de müşteri tarafında belirli bir yapıya sahip olmanın mantıklı olduğu projelerde karıştırmanızdır.
Arseni Mourzenko

Bana, örneğin bana veri sağlayan bir web api varsa ve bu verileri ızgarada göstermek istiyorsam, Döngüsel veya MVC kullanarak döngü ve şablonlama yapabilir miyim? Web api servisini hangisini kullanarak arayabilir miyim? Projenin başlangıcından hangi yöne gideceğinize nasıl karar veriyorsunuz?
Natalie

Aklımda aynı soru var. ASP.NET MVC kullanmak için hiçbir sebep bulamadım. Sunucu tarafında Asp.net Web API'sine benziyor, istemci tarafında ise Açısal yeterli olacaktır. Ama önce düşündüm; Web API = Veri Erişim Katmanı, Asp.Net MVC = İş Mantığı Katmanı, Açısal = UI katmanı. Ancak Açısal taraftan yalnızca Web API çağrıları yapabiliriz, böylece Asp.Net MVC sunucu tarafını kullanamayız. Asp.Net MVC'yi neden kullanmamız gerekebileceğine dair iyi bir örneğe ihtiyacımız olduğunu düşünüyorum.
Salim

9

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.


1
VS 2015 CE'de standart SPA şablonu oluştururken, script klasöründe bootstrap, jquery, nakavt, yanıt ve sammy görüyorum, ancak açısal değil. Bir şey mi eksik?
TK-421

2

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.

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.