Подтвердить что ты не робот

Разница между использованием основного веб-приложения ASP.NET(.NET Core) с сетью net461 как единственной структурой и использованием шаблона (.NET Framework)

С выпуском .NET Core RC2 Microsoft сделала так, что теперь есть 3 шаблона веб-приложений:

  • ASP.NET Web Application (.NET Framework) - старый
  • Базовое веб-приложение ASP.NET(.NET Framework) - новое, предназначенное только для Windows.
  • Веб-приложение ASP.NET Core (.NET Core) - Linux, OSX, Windows

Я пытаюсь использовать новый шаблон Базового веб-приложения, но без попыток нацеливания на Linux, OSX и Windows, поэтому кажется, что Базовое веб-приложение ASP.NET(.NET Framework) идеально подходит для меня. Это заняло у меня некоторое время, но я узнал, что для того, чтобы добавить библиотеку классов, которая будет работать с этим типом проекта, вам нужно добавить библиотеку классов (.NET Core) и изменить раздел каркасов на net461, чтобы он соответствовал веб-приложению.

"frameworks": {
    "net461": { }
}

Мой вопрос:

В чем разница между созданием основного веб-приложения ASP.NET(.NET Core) и проектом. Json, делающим net461 единственной целевой средой

а также

просто создайте проект ASP.NET Core Web Application (.NET Framework), который по умолчанию включает только net461.

Есть ли другая разница, о которой я не знаю, например, как публикуются проекты и т.д.?

4b9b3361

Ответ 1

В чем разница между созданием основного веб-приложения ASP.NET(.NET Core) и проектом .json, делающим .NET461 единственной целевой платформой

Это то же самое, что и проект ASP.NET Core Web Application (.NET Framework). Тип проекта между ними определяется файлом .csproj и вы изменили его в своем .csproj с таргетинга на .NET Core на таргетинг на .NET Framework. В предыдущих выпусках/бета-версиях ASP.NET Core было возможно иметь обе Frameworks в файле project.json (который был заменен упрощенным файлом .csproj в .NET Core 2.0, с которым знакомо больше разработчиков .NET), но Вы можете опубликовать только один.

просто создайте проект ASP.NET Core Web Application (.NET Framework), который по умолчанию включает только .NET461.

Существуют ли другие различия, о которых я не знаю, например, способ публикации проектов и т.д. Если вы ориентируетесь на .NET Framework, а не на .NET Core, ваше приложение не может быть кроссплатформенным, и ваше приложение может работать только в Windows, а не в Linux/макинтош

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

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

Это также повлияет на компиляцию, как если бы вы нацелились на .NET Core и использовали специфичную для Windows функцию или пакет, вы получите ошибку компиляции.

Вы можете легко переключаться между ними, .csproj ваш .csproj чтобы нацеливать один или другой.

Документы Microsoft

Вы должны использовать .NET Core для своего серверного приложения, когда:

  • У вас есть кроссплатформенные потребности.

  • Вы нацелены на микросервисы.

  • Вы используете контейнеры Docker.

  • Вам нужны высокопроизводительные и масштабируемые системы.

  • Вам нужны бок о бок версии .NET в зависимости от приложения.

Вы должны использовать .NET Framework для своего серверного приложения, когда:

  • Ваше приложение в настоящее время использует .NET Framework (рекомендуется расширять, а не мигрировать)
  • Вам необходимо использовать сторонние библиотеки .NET или пакеты NuGet, недоступные для .NET Core.
  • Вам необходимо использовать технологии .NET, которые недоступны для .NET Core.
  • Вам нужно использовать платформу, которая не поддерживает .NET Core.

Обновление (2018/10/30)

Было объявлено, что ASP.Net Core 3 с датой выпуска в первом квартале 2019 года будет поддерживать только .NET Core и НЕ .NET Framework

Как было объявлено в блоге .NET ранее в этом месяце,.NET Framework получит меньше новых платформенных и языковых функций, которые поступают в .NET Core в будущем, благодаря природе обновления на месте .NET Framework и желанию ограничить изменения там, которые могут сломать существующие приложения. Чтобы ASP.NET Core мог в полной мере использовать улучшения, поступающие в .NET Core в будущем, ASP.NET Core будет работать только на .NET Core, начиная с версии 3.0. Двигаясь вперед, вы можете просто думать о ASP.NET Core как о части .NET Core.

Клиенты, использующие ASP.NET Core в .NET Framework сегодня, могут продолжать делать это полностью поддерживаемым способом, используя версию 2.1 LTS. Поддержка и обслуживание для 2.1 будут продолжаться, по крайней мере, до 21 августа 2021 года (через 3 года после объявления о выпуске LTS) в соответствии с Политикой поддержки .NET.

Ответ 2

Сначала обратите внимание на разницу в файлах project.json при создании базовых веб-приложений ASP.NET, предназначенных для разных сред.

difference between asp.net core with different frameworks

В соответствии с вашим вопросом, если вы измените каркас в ASP.NET Core Web Application (.NET Core) project.json только на net461 и сохраните его, он восстановит пакеты и выдаст следующую ошибку.

enter image description here

Если вы удалите зависимость Microsoft.NETCore.App и сохраните файл, он снова восстановит зависимости и не выдаст никакой ошибки.

Если вы заметили первое изображение, оно, наконец, стало базовым веб-приложением ASP.NET с .NET Framework.

Ответ 3

Сначала я тоже был смущен. Основное различие заключается в том, что ASP.NET Web Application (.NET Framework) является обычным asp.net, который мы использовали. Он содержит папку App_Start web.config, Global.asax и т.д. (Как и MVC5, вы получаете идею..).

В то время как ASP.NET Core Web Application (.NET Framework) является основной средой (MVC6). (Не зависит от System.Web). Новый project.json.. startup.cs и program.cs и т.д. И он поддерживает все старые библиотеки .net framework.

Ответ 4

с ядром .net вы можете запускать приложение веб-страниц в Linux или Mac OS, тогда как .net подойдет только для Windows, то есть менее переносимо.