.NET сексуален и вам следует знать об этом!
Разрабатывать на C# и .Net Core легко и быстро.
Всегда думал, что моей первой публикацией в блоге будет развернутый на 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 изменилось в лучшую сторону.