Введение в ASP.NET Core 3.0 (preview)

ASP.NET Core 3

ASP.NET Core 3 кроссплатформенный, высокопроизводительный и абсолютно беспалый фреймворк от Майкрософт (Microsoft). Да-да вы не ослышались беспалый и кроссплатформенный. Это означает что вы можете использовать его на Linux подобных серверах.

Кто выбирает ASP.NET Core 3?

Миллионы разработчиков, которые знакомы с ASP.NET 4.x (старые версии не кроссплатформенные.) и которые хотят использовать знакомый и мощный инструмент.

ASP.NET Core 3 дает нам следующие преимущества:

  • Спроектированный для UI (user interface) и веб API
  • Удобная система юнит тестов.
  • Использует движок Razor, который позволяет сделать html динамическим.
  • Кроссплатформенный. Т.е. вы можете запускать как на Windows так и на macOS, and Linux.
  • Опенсорсный т.е. с открытым исходным кодом.
  • Хорошо интегрирован с современными клиентскими фреймворками. (кстати в VS есть очень удобные шаблоны под Angular и React.)
  • Содержит удобные инструменты для хостинга в облаке. В одной из статей рассказываю как можно развернуть приложение в облаке правда ASP.NET Core 2, но 3-ий поддерживает всё тоже самое.
  • Встроенная система разрешения зависимостей или DI (dependency injection)
  • Облегченный (т.е. нет тех огромных зависимостей что были в старых ASP.NET 4.x). Хорошо оптимизирован, что выдает высокую скорость работы. Поддерживает принцип модульности для HTTP запросов через pipeline (пайплайн)
  • Ability to host on IISNginxApacheDocker, or self-host in your own process.
  • Самое крутое, что можно хостить не только на IIS (веб сервак чисто под винду) :). Но также на Nginx (читайте настройку под Nginx ASP.NET пока core 2), Apache, Docker и self-host (т.е. вообще без сторонних серверов, запустил на своем пк и пожалуйста, работай.)

В чем же разница ASP.NET Core 2.x, 3.x .NET Framework (старая версия) и .NET Standard?

ASP.NET Core 2.x может работать с ASP.NET Core или .NET Framework. Но имейте ввиду что если вы добавите библиотеку из .NET Framework в свой проект на Core, то она будет работать только на MS Windows. Чтобы убрать такую проблему Microsoft предлагают использовать промежуточный фреймворк .NET Standard. Не пугайтесь это не еще какой-то новый бла бла фреймворк от Майкрософта.  Для меня это просто шаблон в VisualStudio который я должен использовать при разработке библиотек. Используйте это как правило. А язык и всё остальное тут везде одинаковые. Другими словами, если у вас в проекте попадается библиотека на .NET Framework скорее всего из-за одной такой «овцы» приложение не будет работать кроссплатформенно. И Вам придется арендовать Windows Server, которые заметно дороже Linux подобных.

Теперь важное замечание! ASP.NET Core 3.0 и выше будте работать только с .NET Core 1.x, 2.x. Как я понял даже без .NET Standard. Как пишет Microsoft это связанно с тем что в 3-ей версии кроссплатформенность, производительность, поэтому если вы подтяните что-то их видновой реализации это может испортить все плюшки.

Что уберут или заменят в ASP.NET Core 3

  • Json.NET (Newtonsoft.Json) — Newtonsoft уберут и заменят на нативную (родную) реализацию, которая должна работать значительно быстрее предшественника. Работать она будет с использованием нового unsafe класса Span[T], ReadOnlySpan[T].
  • Entity Framework Core (Microsoft.EntityFrameworkCore.*)