Почему в ASP.NET MVC 4 так много пакетов NuGet и которые действительно важны?

Как сказано в названии, почему в проектах ASP.NET MVC 4 так много пакетов NuGet? Теперь весь фреймворк разделен на пакеты? Какие из них действительно важны для пустого проекта, который будет веб-сайтом, без API и т. Д.?

ОБНОВЛЕНИЕ

Чтобы уточнить, у меня нет проблемы, ну, если вы не считаете базовую путаницу за одну. Я просто хочу знать, почему в новых проектах MVC 4 по умолчанию установлено так много пакетов? Пустой проект содержит одну полную страницу пакетов. Интернет-проект состоит из трех полных страниц пакетов.

Мне просто любопытно, почему это потому, что мои текущие проекты MVC 3 используют не более пяти пакетов.


person Gup3rSuR4c    schedule 16.08.2012    source источник
comment
Мне любопытно, почему проблема с множеством пакетов NuGet? Какую проблему ты пытаешься решить?   -  person neontapir    schedule 17.08.2012
comment
Я не говорил, что возникла проблема. Я просто установил MVC 4, создал новый проект и стал искать, что изменилось. Пустой проект имеет одну страницу, полную пакетов, а Интернет-проект имеет три полных страницы пакетов. Я просто хочу знать, почему это происходит потому, что мои проекты MVC 3 в лучшем случае используют около пяти пакетов. Просто любопытно.   -  person Gup3rSuR4c    schedule 17.08.2012
comment
Я задал этот вопрос, потому что он может окрасить ответы, которые вы получите.   -  person neontapir    schedule 17.08.2012
comment
может быть лучше на programmers.stackexchange.com? хотя не уверен ...   -  person Graham Smith    schedule 17.08.2012
comment
ASP.net не скрывает, что они хотят разбить на компоненты как можно больше фреймворков, что позволяет им отправлять внеполосные релизы в определенные части фреймворка без выпуска полного патча или незначительного обновления релиза, то есть JSON Framework, который перемещенные на JSON.net в MVC 4, могут быть обновлены независимо от MVC, или они решают проблему с ошибкой / безопасностью в части api, не обновляя общую вещь, это также облегчает жизнь разработчикам, поскольку им нужно только обновить пакет вместо полное обновление mvc на машине разработчика и на сервере   -  person Chris McGrath    schedule 26.11.2013


Ответы (2)


Как сказано в названии, почему в проектах ASP.NET MVC 4 так много пакетов NuGet?

Это вопрос, который вам нужно задать разработчикам фреймворка.

Какие из них действительно важны для пустого проекта, который будет веб-сайтом, без API и т. Д.?

Вот строгий минимум, который позволит вам настроить маршрутизацию и определить контроллер с действием, отображающим представление Razor:

<packages>
  <package id="Microsoft.AspNet.Mvc" version="4.0.20710.0" targetFramework="net40" />
  <package id="Microsoft.AspNet.Razor" version="2.0.20710.0" targetFramework="net40" />
  <package id="Microsoft.AspNet.WebPages" version="2.0.20710.0" targetFramework="net40" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" />
</packages>

или если вы предпочитаете только половину страницы:

введите описание изображения здесь

person Darin Dimitrov    schedule 17.08.2012
comment
Полагаю, достаточно справедливо. Спасибо за информацию. - person Gup3rSuR4c; 21.08.2012
comment
А как насчет веб-данных, данных и администрирования веб-страниц ASP.NET 2? Я понимаю, что ASP.NET Web PAges 2 (Core) содержит общие функции MVC и WebForms, но как насчет этих трех? Они обязательны или лучше, что именно они содержат? - person mare; 12.10.2012
comment
о, извините, теперь я вижу, что их добавили веб-помощники ASP.NET, их нет в базовом шаблоне по умолчанию. - person mare; 12.10.2012

После обновления средств ASP.NET MVC 3 ASP.NET MVC все чаще предоставляется через пакеты NuGet. Это дает несколько преимуществ:

  • Обновляется до компонентов, доставляемых через NuGet - самого MVC и других связанных компонентов (Razor, Web API), не дожидаясь выхода новой «большой» версии ASP.NET MVC, .NET или Visual Studio.
  • Это также означает, что вы можете использовать отдельные части по своему усмотрению за пределами MVC - например, веб-API можно использовать вне ASP.NET.
  • Все чаще и чаще компоненты используются совместно слоями пользовательского интерфейса и другими частями ASP.NET. Некоторые примеры: маршрутизация используется совместно с веб-формами и веб-страницами, Razor используется совместно с веб-страницами, новые части OAuth используются совместно с веб-формами.

Вы заметите, что в проекте из шаблона Basic вы получите следующие пакеты:

  • Microsoft.AspNet.Mvc
  • Microsoft.AspNet.Razor
  • Microsoft.AspNet.WebApi
  • Microsoft.AspNet.WebApi.Client
  • Microsoft.AspNet.WebApi.Core
  • Microsoft.AspNet.WebApi.WebHost
  • Microsoft.AspNet.WebPages
  • Microsoft.Net.Http
  • Microsoft.Web.Infrastructure
  • Newtonsoft.Json

Пять из девяти используются для Web Api, который сильно разбит на компоненты, чтобы дать разработчикам большую гибкость в выборе того, где и как они могут их использовать. Если вы хотите минимизировать количество пакетов NuGet, вы можете использовать шаблон Basic.

По мере продвижения к базовым шаблонам и Интернет-шаблонам вы увидите больше пакетов для поддержки дополнительных функций, предоставляемых проектами. Интернет предлагает несколько пакетов кода с открытым исходным кодом, не принадлежащих Microsoft, таких как библиотеки OAuth и JavaScript.

Существует много пакетов JavaScript, и это действительно хорошо, если подумать, поскольку это означает, что NuGet автоматически обрабатывает зависимости JavaScript за вас - если вы хотите обновить jQueryUI, который, в свою очередь, требует новой версии jQuery, он Я автоматически обновлю для вас jQuery.

person Jon Galloway    schedule 27.08.2012
comment
Означает ли это, что мне больше не нужно устанавливать платформу ASP.NET MVC4 через установщик веб-платформы? - person Nigiri; 28.08.2013
comment
Visual Studio 2012 включает MVC 4. Если вы используете 2010, в большинстве случаев я бы рекомендовал использовать Web PI. Вы можете создать сайт MVC 4, используя пустое веб-приложение и пакеты NuGet, но вам также нужно будет возиться с web.config, у вас не будет полной поддержки VS для таких вещей, как фрагменты и т. Д. - person Jon Galloway; 29.08.2013
comment
Несогласие со всеми пакетами Javascript Nuget, застрявшими в проектах Empty MVC, - это хорошо. Я не хочу ждать, чтобы перейти на последний уровень патча jquery, пока он не будет выпущен через Nuget, что может быть на год позже. Я обновлю его сам - это единственный файл, и Nuget только мешает. - person Chris Moschini; 11.12.2013
comment
Чтобы добавить javascript ... Я на самом деле ненавижу использовать пакеты nuget для чего-то вроде jquery, angular, bootstrap и т. Д. Я лично считаю плохим дизайном включать их во все ваши проекты визуальной студии, а затем размещать их все по разным URL-адресам. Особенно в системах с несколькими сайтами / sso ... Почему люди заставляют пользователей загружать свою копию jquery 12 раз, просматривая их экосистему? Почему у них нет собственного CDN для сохранения планов пользовательских данных (особенно в эту новую мобильную эпоху) ... Только мои 2 цента, но я просто забиваю пакеты nuget копиями таких активов ... плохой запах кода. - person Ryan Mann; 03.06.2015