.NET Core против ASP.NET Core

Ответы:

209

Обновление 2020 : обратите внимание, что ASP.NET Core 3 и выше теперь зависят от .NET Core и больше не могут использоваться в .NET Framework. Приведенное ниже описание предназначено для ASP.NET Core 1.x-2.x; разделение на слои все еще сохраняется для ASP.NET Core 3.0, но слой ASP.NET Core больше нельзя использовать поверх .NET Framework в 3.0+.

.NET Core - это среда выполнения. Он может выполнять приложения, созданные для него.

ASP.NET Core представляет собой набор библиотек, которые образуют Framework для создания веб-приложений. Библиотеки ASP.NET Core можно использовать как в .NET Core, так и в «Full .NET Framework» (которая поставляется с окнами уже много лет).

Смущает то, что приложение, использующее библиотеки и инструменты ASP.NET Core, обычно называют «приложением ASP.NET Core», которое теоретически не говорит, создано ли оно для .NET Core или .NET Framework. Таким образом, «базовое приложение ASP.NET» также является «базовым приложением .NET» или «приложением .NET Framework».

Это изображение показывает отношение участвующих технологий (взято из этого сообщения в блоге ) Технологии веб-приложений .NET

Здесь вы можете видеть, что ASP.NET Core построен «поверх» как .NET Framework, так и .NET Core, тогда как «ASP.NET» (в настоящее время часто называемый «классический ASP.NET») - это только .NET Framework.

Мартин Ульрих
источник
22
Итак, что мы называем классическим ASP? "Древний АСП"? : p
Дэн Шнау
1
поэтому , если приложение разработано с использованием ASP.NET Core затем на веб - сервере , мы должны установить .NET Core Runtimeи ASP.NET Core runtimeили просто ASP.NET Core runtimeдостаточно
LP13
В зависимости от версии, 2.1 немного отделит ее, но пока вы устанавливаете «хостинговые пакеты» на серверах, у вас все будет хорошо. Если вы разрабатываете для ASP.NET Core на .NET Framework, вам все еще нужен пакет хостинга для необходимого модуля IIS
Мартин Уллрих
3
@DanSchnau, у нас есть «Классический ASP», «ASP.NET» AKA «Классический ASP.NET» и «Ядро ASP.NET», так что никаких конфликтов вообще нет :)
Гауда
@ LP13: «ASP.NET Core Runtime» не существует, это просто набор пакетов, которые не могут быть запущены сами по себе (без .NET Core, предварительно установленного или поставленного в виде автономного приложения)
Tseng,
43

ASP.NET Core с использованием .NET Core - все зависимости являются автономными, могут использовать большинство пакетов NuGet, не могут использовать пакеты, специфичные для Windows, могут выполняться в Windows, Linux и Mac.

ASP.NET Core с использованием .NET Framework - большинство зависимостей являются автономными, выполняются только в Windows, будут иметь доступ к пакетам NuGet для Windows, требуется версия платформы .NET, предназначенная для установки на компьютере.

Натан Алард
источник
8
Кто называет эти вещи? Это очень запутанно.
Ник
1
@ Ник: Microsoft маркетинг. У них долгая история этого. Они еще не открыли для себя сеть - используют обычные существительные для продуктов (не очень хорошо в мире поисковых систем, где более конкретные, менее распространенные слова лучше, предпочтительно уникальные слова, которых нет в словаре).
Питер Мортенсен
23

ASP.NET Core является одной из рабочих нагрузок, поддерживаемых .NET Core.

Из руководства .NET Core :

Сам по себе .NET Core включает единую модель приложений - консольные приложения, которая полезна для инструментов, локальных сервисов и текстовых игр. Для расширения его функциональности на основе .NET Core были созданы дополнительные модели приложений, такие как:

  • ASP.NET Core
  • Windows 10 Универсальная платформа Windows (UWP)
  • Xamarin.Forms
v-андрей
источник
Это более актуальный ответ для меня. .Net Core для консольного приложения, ASP.Net Core для веб-приложения.
Шон Чжан
5

.NET Framework находится в своем последнем выпуске. Не будет другого после 4.8. Microsoft продолжит работу с .NET Core. С этого времени вы должны отдавать предпочтение .NET Core в своих проектах.

Синан Бозкуш
источник
2

Кроме того, я хотел бы добавить, что это может помочь кому-то.

В конвейере запросов .NET Core есть то, что называется внедрением промежуточного программного обеспечения. При правильной реализации это очень полезно, поскольку оно может автоматически перехватывать исключения приложений и значительно облегчает ведение журнала в одном месте, а не во всех методах.

Рахул
источник
Можете ли вы добавить одну или несколько ссылок / ссылок на ваш ответ?
Питер Мортенсен