Ответы пользователя по тегу ASP.NET
  • Какие статьи почитать (или видео), чтобы разобраться полностью в теме про роутинг в .net?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Ну варианта три:
    1. Конвенции
    2. Атрибуты
    3. MapGet / MapPost итд

    Это если не считать всякие сторонние роутеры типа F# Giraffe

    Атрибуты были и в .net framework.
    А от Convention based все уходят, тк:
    1. Не позволяет делать нормальный rest-style роутинг. Да и в принципе маршруты с ним получаются не очень красивые, и не очень предсказуемые.
    2. Легко может поломаться

    private static void MapEndpoint(

    Последнее - это частный случай 3го варианта. Ещё он есть в формате отдельной библиотеки - Carter
    Ответ написан
    2 комментария
  • Из за чего может не выводить в консоль dbug?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Из за чего может не выводить в консоль dbug?

    Из-за того что у тебя явно в конфиге указаны минимальные уровни логирования (в твоём случае отрабатывает строчка Default: Information):
    "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Warning",
          "Microsoft.EntityFrameworkCore": "Information"
        }
      }

    Уровни логирования такие, от самого высокого к самому низкому:
    • None = 6
    • Critical = 5
    • Error = 4
    • Warning = 3
    • Information = 2
    • Debug = 1
    • Trace = 0

    Как видишь, Information и Warning идут выше, чем Debug.
    Чтобы сообщение залогировалось - его уровень должен быть выше или равен минимальному уровню.

    https://learn.microsoft.com/ru-ru/dotnet/api/micro...
    Ответ написан
    Комментировать
  • В чем различия ASP.NET CORE 5 и ASP.NET CORE 6?

    vabka
    @vabka
    Токсичный шарпист
    Есть статья, которая буквально называется
    What's new in ASP.NET Core 6.0
    Ответ написан
    Комментировать
  • Spring или Asp.net core для будущей работы?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Зарплаты примерно и там и там если не одинаковые, то очень близкие.
    Вакансий на Java/Spring больше, чем на C#/ASP NET Core, но во втором случае и конкуренции меньше. В целом проблем с поиском работы нет.

    Я буду жабой, которая хвалит своё болото и предложу углубиться в ASP.NET Core.
    Мне C# кажется более перспективным языком и платформой чем Java. (хотя ещё я бы посмотрел на Kotlin)

    Но тебе всё равно следует посмотреть ситуацию на конкретно твоём рынке труда и принять окончательное решение.
    Учитывай, что ситуация за 3-4 года 10 раз может поменяться.
    Ответ написан
    2 комментария
  • Где можно посмотреть проекты близкие к реальным по ASP.NET?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    eshoponweb и eshoponcontainers.
    Ещё, думаю, можешь посмотреть на какие-нибудь опенсорсные проекты. Например на SunEngine
    Ответ написан
    Комментировать
  • ASP.NET CORE это фреймворк который следует паттерну MVC, а паттерн MVC предполагает как бэкенд так и фронтенд разработку?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    что это больше full стек фреймворк

    Ошибаешься. ASP NET Core отвечает только за обработку http-запросов и жизненный цикл приложения.
    В этом плане он больше похож на какой-нибудь чисто бэкендовый фреймворк типа Nest.js

    full stack - это ASP NET Core MVC с Razor Pages (или с Blazor).
    Он как раз будет похож на Django с его html-шаблонами и jinja.

    Меня интересует только бэкенд разработка, мне обязательно при изучении asp.net core знать html и css?

    Конечно не обязательно, если ты не собираешься делать фронт.

    Как пример архитектуры можешь посмотреть на eShopOnWeb и eShopOnContainers (к каждому из них прилагается бесплатная книга с подробным описанием) - в них как раз есть пример разделения web api и UI с MVC

    Вот схема, как сделан eShopOnContainers к примеру (обрати внимание на разделение API и webApp)
    eShopOnContainers-architecture.png
    Ответ написан
    2 комментария
  • Можно ли настроить JWT в ASP NET CORE чтобы токен никогда не устаревал?

    vabka
    @vabka
    Токсичный шарпист
    Пропиши дату протухания JWT на какой-нибудь 2099 год и считай что это вечный токен.
    JWT можешь даже руками сгенерить, если тебе нужен только один.
    Ответ написан
    Комментировать
  • Как составить план обучения после основ С#?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Раз у тебя уже есть готовый список, то вот что можно ответить:

    Самое важное, без чего ты вообще никак не сможешь работать:
    ASP NET Core, Postgresql
    Им нужно уделить больше внимания.
    Курсы есть и по тому и по другому, есть и вполне хорошие бесплатные.
    Например у Postgrespro есть бесплатный курс (тебя должен интересовать PostgreSQL для разработчика) и книги.

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

    git - ты его не упомянул, но он очень важен. Есть бесплатная книга Pro Git где подробно описаны все его команды + есть немало видео на youtube где в действии показано, как им пользоваться.

    SOLID - можно почитать статьи и книгу "Чистая Архитектура". В любом случае от тебя не ждут знаний на уровне архитектора тут.

    Unit tests - просто попробуй сам писать тесты на каком-нибудь фреймворке. Например на xUnit.
    Ещё можешь почитать книжку Кента Бэка про разработку через тестирование.

    Code review - просто почитай пару статей о том, зачем это нужно, и как не быть мудаком-ревьюером, и как принимать обратную связь на ревью.

    Методологии разработки - просто ознакомься с теми, какие вообще есть.
    Большинство сейчас работают по Scrum или Kanban (либо на чём-то производном от них).
    Можешь ещё agile manifesto почитать
    Опять же - от тебя тут не ждут знаний уровня менеджера проектов, и тебе не придётся с нуля процесс разработки в команде выстраивать.
    Ответ написан
    1 комментарий
  • Что точно идентифицирует Google аккаунт при аутентификации на сайте?

    vabka
    @vabka
    Токсичный шарпист
    Тебе нужно свойство Subject - это как раз уникальный идентификатор в рамках гугла.

    Документация:
    https://developers.google.com/identity/protocols/o...

    Исходники:
    https://github.com/googleapis/google-api-dotnet-cl...
    Ответ написан
    Комментировать
  • Какие темы учить новичку, что б перейти на изучение Asp.net core/mvc?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Когда у тебя уже нет проблем с написанием кода в консоли - можешь спокойно переходить на asp net.
    Если возникают сложности с написанием кода, и они не связаны с asp net - значит изучил недостаточно и стоит ещё раз повторить какую-то тему.
    Ответ написан
    Комментировать
  • Как сделать деплой приложения asp.net core?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Нет такого понятия как "запустить сайт".

    Твоё asp net приложение - это исполняемый файл со встроенным веб-сервером, который слушает TCP на определённом порту и отвечает на http запросы.

    Так что когда консоль запустилась - твой сайт тоже можно считать запущенным.
    Ответ написан
    2 комментария
  • Как написать логику работы контролеров в Asp. net?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Сделай пока хоть как-то, лишь бы тебе самому было понятно.

    Потом порефакторишь исходя из задачи.

    Например репозитории имеют смысл, если у тебя возможно, ть заменить хранилище данных - это фича.
    А вот если ты никогда не планируешь менять базу данных - можно спокойно хоть прямо из контроллеров в EF стучаться.
    Ответ написан
    Комментировать
  • Как происходит деплой небольших веб-сервисов на ASP.NET Core на Linux VPS?

    vabka
    @vabka
    Токсичный шарпист
    Самый простой вариант - это на компе разработчика выполнить:
    dotnet publish -c Release -r linux-x64 --self-contained true /p:PublishReadyToRun=true /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true

    Закинуть получившийся бинарь на сервер (через scp например)
    Настроить systemd

    А дальше уже можно накручивать что хочешь.
    Ответ написан
    Комментировать
  • Где брать примеры проектов ASP.NET CORE MVC?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Комментировать
  • Стоит ли выносить выполнение синхронных методов в пулл потоков в контроллерах ASP NET Core?

    vabka
    @vabka
    Токсичный шарпист

    Асинхронных блоков, требующих использования await в методе нет.

    В таком случае это будет обычный синхронный метод, хоть и возвращающий таску.


    Встаёт вопрос - перевести ли выполнение этого метода в пулл потоков (через обёртывание в Task.Run) или оставить так как сейчас есть?

    Зависит от того, что именно ты там делаешь.
    Если есть работа с IO, то следует перейти на асинхронщину.

    Если долгие вычисления, то тогда да - есть смысл сделать Task.Run, чтобы не нагружать потоки из основного пула
    Ответ написан
    Комментировать
  • ASP.NET Core MVC это и есть ASP.NET MVC 5/6 или это разные?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Это разное.
    Первый для net Core и NET 5+, а второй для net Framework.
    Второй уже легаси и даже МС не рекомендует делать новые проекты на нём
    Ответ написан
    Комментировать
  • Книги, курсы по архитектуре приложений?

    vabka
    @vabka Куратор тега .NET
    Токсичный шарпист
    Чтобы понимать, где domains, где infrastructure и т.д

    Чистая архитектура от дяди Боба

    Как проектировать микросервисы правильно

    Не делить на микросервисы, пока преимущества от их применения не станут очевидны.
    Ответ написан
    Комментировать
  • Как лучше присоединить Serilog к .NET 6?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    - GC по умолчанию отключён в такого вида приложениях

    Как у тебя память в таком приложении не заканчивается?
    Log.CloseAndFlush()

    Это нужно из-за того, что некоторые реализации Sink-ов могут накапливать сообщения перед отправкой.

    В целом первый вариант мне нравится больше (сами так делаем)

    А во втором приходится ещё и менять параметры стандартного логгера (ILogger) в appsettings.json.

    Это из-за того что у тебя там ReadFrom.Configuration

    PS: вообще тут у тебя несколько ортогональных вещей:
    1. Использовать логгер извне HostBuilder, если сам HostBuilder свалится. (try-catch из второго примера)
    2. Конфигурация только из кода (1) или конфигурация из appsettings (2)
    3. UseSerilog (2) против ConfigureLogging (1)

    Емнип, UseSerilog под капотом вызывает ConfigureLogging, так что выбор остаётся только по первым двум пунктам.
    Ответ написан
    Комментировать
  • Выборка данных со связью многие-ко-многим, как достать?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Если у тебя есть Navigation property в рецептах и отдельно есть список id-шников ингредиентов, по которым надо фильтровать, то можно что-то типа такого:
    var ingredientIds = new [] {/*тут типа айдишники*/};
    var recipes = context.Recipes.Where(r => r.Ingredients.Any(i => ingredients.Contains(i.Id)).ToArray();
    Ответ написан
    2 комментария
  • Как писать backend сайта без шаблонов?

    vabka
    @vabka
    Токсичный шарпист
    Ну прям в фундаменте у asp net core лежит веб-сервер Kestrel, но напрямую с ним никто не работает.
    Если убрать контроллеры, MVC, Razor, то остаётся minimal api: https://docs.microsoft.com/en-us/aspnet/core/funda...
    Ответ написан
    1 комментарий