Відповіді:
Якщо ви будуєте програму на одній сторінці (SPA) , вам, ймовірно, не потрібен "MVC" в ASP.NET MVC . Перегляди, особливо динамічні погляди, ймовірно, доставляються / маніпулюються на стороні клієнта. Кутові ручки, які просто чудово.
Але, можливо, ви не хочете 100% SPA. Тоді що? Уявіть замість цього 10 сторінок, але 10 сторінок, які дужединамічний. Після входу користувача у правому куті з’являється невеликий значок користувача. Це не динамічно. Він просто показує кілька чудових речей, як "оцінка" користувача та його останній selfie. Ви кешуєте чудові речі, щоб їх було легко знайти. Тепер ви можете піти двома способами з цим. Якщо ви є клієнтом MVC-спеціаліста, ви просто отримуєте дані значка після доставки початкового корисного навантаження HTML, як і всі інші дані. Але, можливо, ти не пурист. Можливо, ти протилежний пуристу. Можливо, ти імурист. Таким чином, замість доставки початкового HTML, доставки JavaScript, який буде розміщений на вашому сервері, публікація через JavaScript, щоб захопити дані значків, а потім, зрештою, об'єднати ці дані у представлення даних через клієнтський MVC,що в якості вихідного HTML. Після доставки початкового HTML ви переходите до типових витівків MVC на стороні клієнта.
Отже ... MVC на сервері та на клієнті - це просто зручний спосіб впорядкування коду, який раніше був у безладі 2001. Не потрібно вибирати той чи інший. Ви можете вибрати обидва. Зрозуміло, чим більше ви робите після доставки початкового HTML, тим менше вам потрібен MVC на стороні сервера. Тим не менш, він є для вас, якщо вам це потрібно. Наприклад, я працював над програмою ASP.NET MVC / Angular, де зовнішні шаблони Angular насправді можуть бути .NET MVC ActionResult. Це означає, що ваш серверний контролер може об'єднати дані у його представлення, доставити їх у Angular як шаблон, а контролер Angular може потім об'єднати свої дані у подання. Я не кажу, що це гарна ідея, але це просто показує, що одна форма MVC не робить іншу застарілою.
Крім того, як би ви не розгорнули Angular, вам знадобиться спосіб надати цей початковий HTML, шаблони та головне дані. Чому б не скористатися платформою, яка робить це легким? Їх багато, але .NET MVC не сутулиться. Як я вже говорив, ви можете зробити початкові HTML та зовнішні кутові шаблони результатом дії MVC, але ще краще, ви можете використовувати веб-API .NET для доставки даних. Веб-API такий же смачний, як і компот з абрикосів.
Підсумовано: MVC - це лише зразок. Ви можете використовувати цей візерунок на будь-якій кількості фізичних шарів. Його не можна використати. Використовуйте його вільно, якщо це має сенс. Крім того, Angular може не бути MVC у будь-якому випадку (так кажуть люди, які переймаються цими речами), тому сміливо використовуйте його з інструментом, який має "MVC" у назві. Пекло, навіть якщо це MVC, перемішуйте і поєднуйте за бажанням.
ASP.NET MVC - це серверна основа; не важливо, якими бібліотеками JavaScript ви користуєтесь. AngularJS - це клієнтська бібліотека, яка не байдуже, яка технологія на стороні сервера надає повноваження веб-сайту - це може бути Python, ASP.NET MVC або навіть звичайний старий набір статичних HTML-файлів, що зберігаються безпосередньо на диску.
ASP.NET MVC та AngularJS сумісні, і існує безліч проектів, які використовують їх разом.
Чи потрібно використовувати обидва? Не зовсім. Це повністю залежить від потреб вашого проекту.
Якщо ваш веб-сайт динамічний, вам доведеться використовувати деякі сценарії на стороні сервера. Ви можете використовувати ASP.NET, і той факт, що ви використовуєте AngularJS, не зробить ваш код на стороні сервера MVC. Якщо ви хочете мати змогу структурувати свою серверну програму як MVC, скоріше виберіть ASP.NET MVC.
Так само факт, що ви використовуєте ASP.NET MVC, нічого не означає про структуру коду вашого клієнта. Ви можете помістити весь свій JavaScript в один файл, не замислюючись про структуру, і радіти цьому (поки проект не почне рости). Тут знову AngularJS представляє себе як спосіб структурувати ваше додаток на стороні клієнта.
Побічна примітка: ви помітили своє запитання ASP.NET MVC 3. Якщо це не є застарілим проектом, який ви повинні підтримувати, або у вас є конкретні обмеження під час розміщення програми на застарілих серверах, які не оновлювалися протягом останніх чотирьох років, ви можете використовувати ASP .NET MVC 4 або 5 замість цього.
Якщо ви використовуєте візуальну студію, є новий шаблон веб-сайту MVC, що містить кутові та контролери MVC Web Api.
Це добре працює, оскільки ваш код MVC на стороні сервера надає кінцеві точки json для кутового коду клієнтської сторони для виклику.
Крім того, ви можете використовувати контролери MVC, щоб обслуговувати основний HTML-перегляд або представлення даних для вашої програми на одній сторінці. це дає вам можливість генерації сервера, авторизації, переадресації, обробки помилок тощо
Часто вам потрібна невелика кількість створених сервером html / javascript навіть на одній сторінці програми, такі речі, як URL-адреси кінцевих точок для різних середовищ, різних мов або навіть непарна сторінка аутентифікації, що може бути простіше зробити на сервері.
Через 3 роки використовуйте веб-API ASP.NET, щоб обслуговувати ваші дані та Angular (js або новіші), щоб структурувати ваш додаток на стороні клієнта. Якщо ви створюєте статичний сайт, просто використовуйте ASP.NET MVC.