Перейти к основному содержимому

5.04. Платформа .NET

Разработчику Архитектору

Платформа .NET

Что в себя включает платформа?

.NET (читать как "дотнет") – платформа для разработки, включающая в себя инструменты для создания, компиляции и выполнения приложений. Её эволюцию можно разделить на три ключевых этапа:

  • .NET Framework – первая и исторически исходная реализация платформы, выпущена в 2002 году. Работала только в среде Windows.
  • .NET Core – кроссплатформенная (Windows, Linux, macOS) и открытая версия, выпущенная в 2016 году, создалась как альтернатива .NET Framework для производительности и модульности.
  • .NET 5+ (современный .NET) – в 2020 году Microsoft объединила .NET Framework и .NET Core в единую платформу .NET.

Отобразим сравнение в форме таблицы:

Технология/характеристика.NET Framework.NET Core.NET 5+
КроссплатформенностьНетДаДа
Открытый исходный кодНетДаДа
WinFormsДаНет (только Windows)Да
WPFДаНет (только Windows)Да
ASP.NET (WebForms)ДаНетНет
ASP.NET CoreНетДаДа
Entity FrameworkДаНетНет
Entity Framework CoreНетДаДа
WCFДаНетЧерез сторонние альтернативы
DockerНетДаДа

Эти упомянутые технологии лучше упомянуть вкратце сразу, для понимания возможностей платформы.

Компоненты

★ Основные компоненты .NET

  • dotnet – так называют саму платформу .NET, и так называется команда для работы с платформой, отвечающая за запуск и сборку;
  • CLR (Common Language Runtime) – компонент, который выполняет код (с английского «run» - бежать). Этот компонент отвечает за управление памятью (сборку мусора), обеспечивает безопасность.
  • CTS (Common Type System) – компонент, отвечающий за систему правил типов данных.
  • CLS (Common Language System) – компонент, отвечающий за гарантию совместимости кода.
  • Библиотеки. Это наборы готовых классов для работы с конкретными задачами - файлы, строки, сеть. Они бывают базовые (BCL, Base Class Library), которые уже «вшиты» в .NET, и бывают пользовательские.
  • NuGet – магазин библиотек.

image.png

IL (Intermediate Language) – это независимый от процессора частично скомпилированный код. Код IL будет скомпилирован в родной машинный код с использованием текущих свойств среды компилятором Just-In-Time (JIT). JIT-компилятор переводит IL-код в код сборки и использует архитектуру процессора целевой машины для выполнения приложения .NET.

В .NET язык IL называется Common Intermediate Language (CIL), а на первых этапах .NET он назывался Microsoft Intermediate Language (MSIL).

CLI (Common Language Infrastructure, не путать с командной строкой Command Line Interface) – это открытая спецификация, разработанная компанией Microsoft. Это библиотека скомпилированного кода, используемая для развертывания, создания версий и обеспечения безопасности.

В .NET существует два типа CLI: сборки процессов (EXE) и сборки библиотек (DLL). Сборки CLI содержат код на языке CIL, и при компиляции языков программирования CLI исходный код транслируется в код CIL, а не в объектный код, специфичный для платформы или процессора.

Технологии для приложений

  • WinForms – фреймворк для сборки простых Windows-приложений с кнопками/окнами.
  • WPF (Windows Presentation Foundation) – современный фреймворк для красивых Windows-программ с анимациями и гибким дизайном.
  • UWP (Universal Windows Platform) – фреймворк для приложений из магазина Windows (для Windows 10 и новее).

Веб-технологии

  • ASP.NET WebForms – устаревший фреймворк для веб-приложений с drag-and-drop интерфейсом (можно сказать, это WinForms для браузера).
  • ASP.NET WebAPI – фреймворк для создания REST-сервисов (про интеграции и REST мы поговорим позже).
  • ASP.NET Core – современный кроссплатформенный фреймворк для веб-приложений. Сейчас, говоря ASP.NET, мы подразумеваем именно Core.

Работа с данными

  • ADO.NET – низкоуровневый доступ к базам данных (SQL-запрос пишется вручную в виде строки).
  • Entity Framework – удобная прослойка с готовыми классами для автоматических SQL-запросом без необходимости «прятать» SQL-запрос в строку.
  • Entity Framework Core – переписанный и современный Entity Framework для .NET и .NET Core.

Связь между сервисами

  • WCF (Windows Communication Foundation) – устаревший фреймворк для сложного обмена данными между программами.
  • gRPC – (от RPC, remote procedure call), система удаленного вызова процедур для более быстрого обмена данными между сервисами.
  • Работа с gRPC API
  • gRPC — это фреймворк удаленных вызовов процедур, который использует HTTP/2 для передачи данных между приложениями. Он выделяется высокой производительностью благодаря бинарному формату Protocol Buffers.

Подробнее про .NET можно почитать у Microsoft на официальном сайте, там же есть и C#, и C++, и F#, и Visual Studio - https://learn.microsoft.com/ru-ru/dotnet/