.NET сексуален и вам следует знать об этом!

Разрабатывать на C# и .Net Core легко и быстро.

Nikita Goncharuk
Clean Code

--

Всегда думал, что моей первой публикацией в блоге будет развернутый на AWS(Amazon Web Services — коммерческое публичное облако) туториал по безсерверным платформам. Ну или в крайнем случае статья, описывающая преимущества игры Dungeons and Dragons (D&D). В общем, я ошибался…

Пару дней назад случайно услышал новость о том, что некоторые рекрутинговые агентства и фирмы отказывают кандидатам, которые желают работать с платформой.NET. Это обосновывалось следующими причинами:

.NET — старая и закрытая экосистема, которая полностью противоречит другим, более гибким и открытым платформам, таким как NodeJS или RubyRails. .NET чем-то похожа на Java, но к Java рекрутинговые агентства более благосклонны, так как она не является продуктом злостной корпорации Microsoft.

Я, в свою очередь, занимаюсь разработкой веб-приложений, используя C# и .NET Core, который развертываю с помощью GitLab на AWS с использованием лямбда-функций, Linux EC2 и Docker-контейнеров. Я даже заливал свой код на открытый Git репозиторий лет пять назад.

Думаю излишне говорить о том, насколько мне неприятно слышать подобные вещи о .NET .

Однажды, во время обсуждения еще одного моего увлечения — игры D&D , у меня возникло чувство дежавю. Один мой приятель сказал, что игры по типу D&D — старье с высоким порогом вхождения. Но не суть. Про D&D как-нибудь в другой раз… Вернемся к делу.

Придется мне оседлать своего доблестного боевого коня, надеть свои самые блестящие доспехи и отправиться на защиту репутации платформы .NET Core. Я постараюсь убедить вас в том, что разработка на C# и .NET Core не менее легкая и быстрая, чем на Javascript или же NodeJS

Что такое платформа .NET Core?

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

Среда выполнения .NET Core предоставляет систему типов, загрузку сборок, сборщик мусора, встроенное взаимодействие и другие базовые службы. Библиотеки платформы .NET Core предоставляют примитивные типы данных и основные утилиты.

Среда ASP.NET предлагает платформу для создания современных веб-приложения, Интернета вещей и создания бэкенда для мобильных приложений.

• Также разработчику .NET Core(CLI) доступен интерфейс командной строки и компиляторы , такие как Roslyn и F#.

dotnet tool используется для запуска приложений .NET и инструментов командной строки.

Подытожим вышесказанное:

• Среда выполнения .NET Core позволяет запускать бинарные файлы.

• ASP.NET Core — фреймворк с множеством встроенных библиотек, которые позволяют создавать современные веб-приложение, а также API (прикладной программный интерфейс).

• С помощью командной строки .NET Core можно создавать, публиковать и настраивать проекты.

Хватит слов — перейдем к делу!

Моя цель — продемонстрировать вам на сколько легко и быстро можно создавать приложения и вебсайты с помощью платформы .NET Core и что она ничем не уступает таким платформам, как NodeJS И RubyRails. Начинаем…

Установка под Linux довольно проста; перейдите по этой ссылке и выберите свой дистрибутив.

Вот команды для установки под Ubuntu:

Такое вот действие вам следует проделать всего лишь один раз. Для того, чтобы проверить версию программы или просто убедиться, что все работает хорошо, введите команду:

Установка под MacOs или же Windows вообще не должна вызвать никаких проблем. Просто скачайте .NET Core с официального портала Microsoft(https://dotnet.microsoft.com/download/dotnet-core/2.2) и позвольте установщику сделать свое дело. Пара минут и все готово!

Hello World!

Пожалуй начнем с всем-известной традиции. Создадим консольное приложение с выводом Hello World! на экран.

Для начала создадим новую директорию и инициализируем в ней проект:

У вас должна появиться такая структура:

hello-world
├── bin
├── obj
├── hello-world.csproj
├── Program.cs

Директории bin и obj вы можете просто игнорировать. Скорее всего, вам никогда не прийдется их использовать. Я даже прописываю эти файлы в .gitignore, когда использую Git.

Файл с расширением .csproj хранит в себе информацию о конфигурации проекта, пакетах, версиях и тому подомных вещах:

И, наконец, самый для нас важный файл: Program.cs:

Опять же — ничего сложного. У вас есть пространство имен по умолчанию. Есть класс со статическим методом Main(). Название класса или пространства имен можно изменить на любое другое, вам угодное, название. Также этот класс является внутренним, а метод закрытым.

Единственное ограничение — иметь статический метод Main. Даже параметры являются необязательными.Они существуют для того, чтобы предоставлять доступ к аргументам.

Давайте запустим программу:

dotnet run
> Hello World!

Все просто!

Чтобы получить окончательную версию программы, которая применима к любой среду выполнения, имеющей .NET Core , просто опубликуйте программу следующим образом:

dotnet publish -c Release -o dist

В конечном итоге, директория должна иметь следующий вид:

dist
├── hello-world.deps.json
├── hello-world.dll
├── hello-world.pdb
├── hello-world.runtimeconfig.json

Файл hello-world.pdb можно запросто удалить, поскольку он полезен только в случае отладки, но генерируется по умолчанию. Вы можете отключить автоматическую генерацию этого файла, изменив hello-world.csproj следующим образом:

hello-world.dll — файл со скомпилированным кодом, который запускается с помощью этой команды:

dotnet hello-world.dll

Файлы deps.json и runtimeconfig.json используются для обработки зависимостей других пакетов ,а также настройки среды исполнения.

И наконец, вы можете легко опубликовать свою программу под конкретную платформу:

dotnet publish -c Release -r win-x64 -o dist/win-x64
dotnet publish -c Release -r osx-x64 -o dist/osx-x64
dotnet publish -c Release -r linux-x64 -o dist/linux-x64

Hello Web!

Хорошо, мы вывели “Hello World” в консоль и это не вызвало особых затруднений. Но что насчет Веба?

Что-ж давайте добавим пакет для ASP.NET Core:

dotnet add package Microsoft.AspNetCore

Этот пакет позволит нам настроить, собрать и запустить простой WebHost. Добавим пару строк в метод Main(). Вам также нужно сослаться на новый пакет, как при импорте пакетов npm для NodeJS. Файл Program.cs должен выглядеть следующим образом:

Для того, чтобы запустить приложение, используйте команду:

dotnet run

Бинго! Откройте ваш браузер -> перейдите по адресу http://localhost:5000 и наслаждайтесь прекрасным видом на страницу с надписью Hello World!

Пока все. Более практические примеры будут рассмотрены в следующих статьях.Я надеюсь, что после прочтения данной статьи ваше мнение о .NET Core изменилось в лучшую сторону.

--

--