Загрузка...

Part 1 - We poke Asp.net with a stick, does it move?

Thread in C# created by наркотик Oct 31, 2025. 1,078 views

  1. наркотик
    Хз, стало скучно. Если видите несоответствие реальности или ошибки пишите, чтобы я никого не ввел в заблуждение, быстренько поправлю.

    Что такое ASP NET CORE?
    Asp - это технология для создания веб-приложений на платформе .NET.
    Ранее ASP NET был не кросс-платформенным, еще во времена .NET Framework, который работал только под Windows. Это значит, что если ты написал сайтик, то сервер у тебя обязан быть на базе винды (Windows Server всякие там). Однако большинство серверов в вебе традиционно используют Linux (тут стоило дополнительно отметить жесткую привязку к веб-серверу IIS в ту эпоху, благодаря которому приложение в целом работает, но кому надо сами почитайте).

    Затем появился .NET Core как дальнейшее развитие всей этой истории. Особенностью стала возможность работать на любой ОС: Windows, MacOS, Linux, что получилось благодаря JIT-компиляции.
    Основа всего, центральное звено платформы - это фреймворк .NET (вот есть .Net, а есть язык, который поддерживается платформой: C#, F# и т.д.). В его составе есть среда выполнения CLR (Common Language Runtime), которая работает поверх ОС - это некая виртуальная машина (ой, джаву напоминает, да?), которая обрабатывает IL-код (Intermediate Language - промежуточный язык). Этот код создается компилятором во время сборки проекта. Во время запуска приложения IL-код на лету компилируется в машинный код под то железо, на котором запущена программа, делается это JIT-компилятором (Just-In-Time Compiler - компилятор периода выполнения). Поэтому, кстати, без дополнительных мер приложульку на C# гораздо проще крякнуть. Есть опция в машинный код собрать всё с Native AOT, но сейчас не об этом, просто знайте.

    [IMG]
    Рисунок - Зарисовка с некоторыми допущениями для упрощения восприятия​

    Сейчас .NET Core принято просто называть .NET и номер версии, соотв. .NET 8, 9, 10.
    .Net Framework не трогайте, оно мертвое легаси.

    Какие виды проектов есть?
    Когда вы начнете создавать свой первый проект с веб-приложением, IDE (среда разработки) предложит вам несколько шаблонов.
    Я считаю уместным разделить все это на 2 типа:
    • Серверный рендер фронтенда (визуальная часть, html, css, js и подобные вещи);
    • Апишка без визуала, отдаем только данные.

    Рассмотрим что есть что. Шаблоны по типу ASP NET Core MVC, Razor Pages и прочая шляпа (WebForms не знаю предлагает сейчас или нет, не трогайте это труп). Вот эти всадники апокалипсиса, которые я перечислил, работают по следующему принципу. Рассмотрим серверный рендеринг в ASP: это подход, при котором весь HTML-код генерируется на сервере, а браузеру отправляется готовый результат для отображения. Для генерации html-кода используется файл с расширением cshtml, в нем пишется html и прям в него можно писать код на C#, например в цикле 10 раз вывести слово привет. Повторюсь на другом примере, ключевое отличие от javascript в том, что js отработал бы логику у клиента (у вас в браузере), а генерация html происходит на сервере и готовый вариант (уже без сишарп кода) отправляется в ответ клиенту. Такой подход не трогайте, можете вообще не изучать, это легаси (только на древних проектах осталось).

    Второй подход заключается в том, что в ответ на запрос мы отдаем только данные в формате json {"name": "Наркотик", "age": 99}, а отдельно написанный фронтенд (например, на React) сделает Get запрос на наше приложение https://mysite.com/api/users/1 и получит тот json. С этими данными он может уже что угодно делать. Чтобы начать работать именно над API, при создании проекта выберите шаблон, где упоминается WebApi.

    А теперь насущный вопрос, мы отдельно написали наше апи и отдельно написали (ну или генерим в первое время, неплохой видос для введения в ваааебкоденге фронта *не реклама) красивенький нарядный фронтенд на реакте. Фронтенд, находясь в браузере у человека делает запрос на наше апи и получает данные, рисует. Всё хорошо, а как этот фронтенд попадет к человеку? Ответ - Nginx, подробно не буду описывать - рано еще, просто ставится программка и настраивается, чтобы, например по маршруту /api/запрос работал как реверс-****** и дальше отдавал нашей апи-приложульке, а по обычному маршруту тупо отдавал сбилженные файлы фронта. Больше мусолить это не вижу смысла, в процессе на практике само придет.


    [IMG]
    Рисунок - Снова зарисовка с допущениями для упрощения понимания (вообще nginx на сервере поднимается, я тупанул просто и в случае с серверным рендером можно и без него спокойно обойтись, IIS достаточно)​

    Создание первого проекта
    Чтобы создать проект, прежде всего, нужно поставить IDE. Выбираем Visual Studio или Rider, что вам больше понравится. Оба имеют бесплатную версию. Мне больше нравится Rider.

    1. Жмем "New Solution" (Новое решение)

    [IMG]

    2. Выбираем Шаблон Web Api (В Visual Studio все будет похожим образом устроено).

    [IMG]
    [IMG]

    3. Создаем проект

    Структура проекта

    Текста получилось много. Коротко опишу, что и где в проекте и пока что конец.

    Рассмотрим структуру созданного проекта:
    • Dependencies: все добавленные в проект пакеты и библиотеки, иначе говоря зависимости
    • Properties: узел, который содержит некоторые настройки проекта. В частности, в файле launchSettings.json описаны настройки запуска проекта, например, адреса, по которым будет запускаться приложение, порт и т.п.
    • appsettings.json: файл конфигурации проекта в формате json
    • appsettings.Development.json: версия файла конфигурации приложения, которая используется в окружении разработки (типа режим разработки).
    • Program.cs: главный файл приложения, с которого и начинается его выполнение. Код этого файла настраивает и запускает веб-приложение.
    • WeatherForecast.cs - Моделька, которая описывает данные.
    • WeatherForecastController.cs - Контроллер. При запросе срабатывает механизм маршрутизации, который по пути запроса определит какой метод (контроллер / endpoint) вызвать.

    Запустим приложение и затестим (без Swagger и прочих вспомогательных инструментов, информации и так много).

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

    [IMG]

    Чтобы сработал наш тестовый контроллер, который по умолчанию создался из шаблона, нужно перейти на путь http://localhost:5224/weatherforecast (порт может быть другим).

    И о чудо, приложение отдало данные в Json формате.

    [IMG]

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


    Тут будет навигация на следующие темы (если они будут).
    Часть 2 - GymVibe [проектируем сущности]
     
  2. Сбертян
    Сбертян Nov 1, 2025
    Novokeks are a social threat
    11,418 May 5, 2020
    проду жду
     
  3. yupp
    yupp Diamond SVG Icon Feb 24, 2026 Проституция запрещена!!! (РФ)
    [C#/WEB] Development of any software for feedback
    1,246 Jan 25, 2022
    Крутяк :+rep: :krutoy:
     
Loading...