Size: a a a

2021 May 18

V🧀

Vestrond 🧀 in .NET Talks🎄
источник

Lr

Larymar r.sorokin in .NET Talks🎄
Вот пидоры
источник

IC

Ilya L Che in .NET Talks🎄
Нет, я.
источник

Lr

Larymar r.sorokin in .NET Talks🎄
День восемьсот тридцать третий. #ЧтоНовенького
.NET 6: Минималистические API
#ЧтоНовенького
.NET 6: Минималистические API
В Microsoft всерьёз озаботились слишком высоким порогом входа в ASP.NET, по сравнению с другими фреймворками. Проблема в том, что минимальный проект API или веб-сайта в ASP.NET содержит с десяток файлов и папок: файлы конфигурации, Startup.cs и т.п. А кто знает точно, что вообще происходит в файлах Program.cs и Startup.cs? Зачем там весь этот код?

В итоге в Microsoft пришли к следующему коду в файле Program.cs:
var app = WebApplication.Create(args);

app.Map("/", () => "Hello World");

app.MapGet("/todos", async () =>
{
 using var db = new TodoDbContext();
 return await db.Todos.ToListAsync();
});

app.MapPost("/todos", async (Todo todo) =>
{
 using var db = new TodoDbContext();
 await db.Todos.AddAsync(todo);
 await db.SaveChangesAsync();
});

app.Run();

Помимо этого, конечно, нужны классы домена и контекста TodoDbContext. И понадобится ещё файл Imports.cs, где будут находиться все директивы using, используемые в приложении (их теперь, чтоб не писать в каждом файле, можно подключить глобально через global using …, по аналогии с файлом ViewImports).

И всё! Вот полноценное рабочее веб-API приложение (можно дальше добавлять MapDelete, MapPatch и т.п.). Как вам?

Никаких CreateHostBuilder, UseStartup, Configure и ConfigureServices, папки контроллеров и прочего шаблонного кода. Все настройки по умолчанию собраны в WebApplication.Create, а дальше вы просто сопоставляете путь с функцией обработчиком, и вуаля!

На мой взгляд, это великолепное нововведение! Как объясняют создатели (ссылка на полное видео внизу), это позволит новичкам не погружаться сразу в бессмысленный набор файлов, а начать с самого простого. Один файл. Задаёшь путь и нужный вывод (см. "Hello World" выше), переходишь по этому пути, и получаешь результат!

При этом самое главное, что это не обязаловка. Нынешний хорошо структурированный расклад не только продолжит существовать, но также будут добавлены все возможные вариации между ним и этим однофайловым кодом. То есть, вместо WebApplication.Create вы можете создать построитель, и внедрить нужные зависимости:
var builder = WebApplication.CreateBuilder(args);
builder.Services
 .AddDbContext<TodoDbContext>(o =>
   o.UseSqlite("DataSource=Todos.db"));
var app = builder.Build();

Далее можно более детально настроить хост, добавить необходимые сервисы. Затем можно выделить настройку сервисов в файл Startup, а сопоставление путей с методами в отдельный файл, а дальше разделить на контроллеры. То есть обучение технологии теперь будет проходить более естественно. Не начиная с многостраничного объяснения, что, где и зачем лежит. Теперь можно начать с элементарного рабочего кода, а дальше (при необходимости) выделять обособленные части в отдельные файлы и постепенно перейти к той структуре, которая нам всем известна.

Ну и конечно, такой подход сильно поможет в создании микросервисов, когда нужен самый простой код, «без ансамбля». Помимо прочего, судя по первым тестам, он работает на 30-50% быстрее стандартного приложения из-за избавления от всего ненужного функционала.

Источник: https://youtu.be/enAskgcF0c0https://youtu.be/enAskgcF0c0
источник

SK

Stas Khavruk in .NET Talks🎄
Я скидал в коричневый. Великий крудер Пётр, сразу выговорился
источник

V🧀

Vestrond 🧀 in .NET Talks🎄
не прошло и 100 лет
источник

SK

Stas Khavruk in .NET Talks🎄
Пётр говорил, что ещё за времён 3.5 сфорганили такое чудо
источник

Lr

Larymar r.sorokin in .NET Talks🎄
Конечно , назввалась ненси
источник

Lr

Larymar r.sorokin in .NET Talks🎄
Потом похоронили
источник

Lr

Larymar r.sorokin in .NET Talks🎄
Вот откопали
источник

SK

Stas Khavruk in .NET Talks🎄
Ну тут говорят, что бы порог входа уменьшить и постепенно обучая, показать почему в аспа такой бойлер плейт
источник

Lr

Larymar r.sorokin in .NET Talks🎄
Мне это нравится, мне так в падлу писать такой бойлер для микросервисов
источник

M

Michael in .NET Talks🎄
да вроде дефолтый шаблон делает рутину для вкатывания или мои глаза уже не видят сложностей
источник

SK

Stas Khavruk in .NET Talks🎄
Я скидал статью, где через джон или ямл описываешь ентити и тулза генерит бойлерплейт аспа. Может как апи, так и вью, и большинство бойлерной логики, и ещё по слоям сделает
источник

Lr

Larymar r.sorokin in .NET Talks🎄
Скорее нудностей
По этому я для себя юзаю f#
источник

M

Michael in .NET Talks🎄
блин скоро без знания шарпа станет тут писать стыдно!
источник

Lr

Larymar r.sorokin in .NET Talks🎄
Да толку, все кроме айрата на шарпе пишем
источник

Lr

Larymar r.sorokin in .NET Talks🎄
источник

Lr

Larymar r.sorokin in .NET Talks🎄
Хотя челикса с конем вполне могу понять
источник

MN

Mr. N in .NET Talks🎄
Интересно в Transact SQl есть var?
источник