Более чистый подход к запуску и настройке приложений в .NET 6 после того, как Microsoft удалила и сохранила старый файл запуска.

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

Отправной точкой было найти несколько сообщений об использовании файла Startup.cs в новой минимальной модели хостинга .NET 6. Я знаю, что не я один нахожу формат Microsoft более раздражающим, чем что-либо еще. Поскольку Microsoft удалила файл Startup.cs по умолчанию, это заставило меня предположить, что они предлагали, чтобы Program.cs был тяжелым и длинным беспорядком. Читая сообщения и документацию Microsoft, я понял, что у них есть предлагаемая реализация. Проблема в том, что я думаю, что реализация немного грязная.

Решение Microsoft

Прочитав их документацию, я обнаружил, что…

Приложениям, переходящим на версию 6.0, не нужно использовать новую минимальную модель хостинга.

Это было неожиданностью, потому что я думал, что они убили файл Startup.cs, и это проблема, потому что я обнаружил, что это разъедает их минимальную модель. Этот подход приводит к вставке нескольких дополнительных строк в Program.cs для обработки всей конфигурации службы и промежуточного программного обеспечения. Он создает файл нового формата Startup.cs, который состоит из двух методов и введенного набора конфигураций, достаточно простой и выполняющий свою работу.

В сочетании со следующим классом Startup.cs

Альтернативное решение

Приведенный выше код работает просто отлично, возможно, он выглядит немного неуклюжим, но он выполняет свою работу. Альтернативный подход, который я сделал, — это простое использование методов расширения. В мире ничего не меняется, но я обнаружил, что он выглядит более стройным и чистым. Методы расширения передаются в объектах WebApplicationBuilder и WebApplication. WebApplication имеет доступ к конфигурации Environment, и оба также имеют доступ к IConfiguraiton. Это сохраняет дух старого Startup.cs точно так же, как метод Microsoft, но я обнаружил, что он также сохраняет чистоту и ясность Program.cs.

В сочетании со следующим ProgramExtentions.csclass.

Этот метод не изменит вашу жизнь, но я нашел в нем ценность. Немного педантичный, да, наверное, но мне нравится простота, которую предлагают эти методы расширения. Если они раздуты в размере, можно разбить их на отдельные файлы для каждого метода. Если какая-либо конфигурация становится еще больше и важнее, можно сделать методы ConfigureApplication и ConfigureExceptionHandling. Возможности этого шаблона безграничны.

Connect or Support?
If you like this, or want to checkout my other work, please connect with me on LinkedIn, Twitter or GitHub, and consider supporting me at Buy Me a Coffee.