Все потоки
Поиск
Написать публикацию
Обновить
0

ASP *

Технология создания веб-приложений и веб-сервисов

Сначала показывать
Порог рейтинга
Уровень сложности

Три мушкетёра — Event Sourcing, Event Storming и Event Store — вступают в бой: Часть 1 — пробуем Event Store ДБ

Время на прочтение7 мин
Количество просмотров13K


Привет, Хабр! Решил я значит на время отойти от Scala, Idris и прочего ФП и чуть чуть поговорить о Event Store — базе данных в которой можно сохранят события в потоки событий. Как в старой доброй книге у нас тоже мушкетёров на самом деле 4 и четвертый это DDD. Сначала я с помощью Event Storming выделю команды, события и сущности с ними связанные. Потом сделаю на их основе сохранение состояния объекта и его восстановление. Буду я делать в этой статье обычный TodoList. За подробностями добро пожаловать под кат.
Читать дальше →

ASP.NET Web API + Entity Framework + Microsoft SQL Server + Angular. Часть 1

Время на прочтение8 мин
Количество просмотров40K


Введение


Небольшой курс по созданию простого веб-приложения с помощью технологий ASP.NET Core, фреймворка Entity Framework, СУБД Microsoft SQL Server и фреймворка Angular. Тестировать Web API будем через приложение Postman.

Курс состоит из нескольких частей:

  1. Создание Web API с помощью ASP.NET Web API и Entity Framework Core.
  2. Реализация пользовательского интерфейса на Angular.
  3. Добавление аутентификации в приложение.
  4. Расширение модели приложения и рассмотрение дополнительных возможностей Entity Framework.
Читать дальше →

Игра на WebAssembly, часть 2: уровни и опыт, админка

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

Demo
Читать дальше →

А почему мы не пишем код в контроллерах?

Время на прочтение4 мин
Количество просмотров47K
Я думаю, многие из Вас слышали мнение о том что кода в контроллерах быть не должно, и потому контроллер с методами в одну строку считаются «Best Practice».Я в свою очередь сомневаюсь в том, что польза от этого так уж велика. Если у Вас возникали похожие мысли, прошу под кат.

image
Читать дальше →

Blazor Client Side Интернет Магазин: Часть 7 — Обновился до релизной версии 3.2.0 и добавил показ картинок

Время на прочтение2 мин
Количество просмотров3.6K


Привет, Хабр! Вышел релиз Blazor WebAssemby и я немного обновил свой сайт. За подробностями добро пожаловать под кат.
Читать дальше →

Реализации кэша в C# .NET

Время на прочтение8 мин
Количество просмотров45K
Привет, Хабр! В преддверии старта курса «C# ASP.NET Core разработчик», подготовили перевод интересного материала о реализации кэша в C#. Приятного прочтения.




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

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

Кэширование отлично подходит для данных, которые изменяются нечасто. Или, в идеале, не меняются никогда. Данные, которые изменяются постоянно, например, текущее время, не должны кэшироваться, иначе вы рискуете получить неправильные результаты.
Читать дальше →

7 опасных ошибок, которые легко совершить в С#/.NET

Время на прочтение8 мин
Количество просмотров11K
Перевод статьи подготовлен в преддверии старта курса «C# ASP.NET Core разработчик».




C# — великолепный язык, и .NET Framework также очень хорош. Строгая типизация в C# способствует уменьшению количества ошибок, которые вы способны спровоцировать, по сравнению с другими языками. Плюс его общая интуитивная конструкция тоже очень помогает, по сравнению с чем-то наподобие JavaScript (где true это false). Тем не менее, в каждом языке есть свои грабли, на которые легко наступить, наряду с ошибочными представлениями об ожидаемом поведении языка и инфраструктуры. Я попытаюсь подробно описать некоторые из этих ошибок.
Читать дальше →

Entity Framework Core

Время на прочтение3 мин
Количество просмотров23K
Привет, друзья. В этот чудесный майский день мы продолжаем трудиться и сегодня хотим рассказать о том, что в мае OTUS запускает полюбившийся всем курс «Разработчик С#», а также отдельный курс по С# ASP. NET Core. Традиционно, в преддверии старта курсов начинаем публиковать полезный материал. Поехали.




Вступление


В большинстве современных ASP NET Core приложений используется Entity Framework Core. Entity Framework Core – это технология для доступа к базам данных от Microsoft. Оно позволяет взаимодействовать с СУБД с помощью сущностей (entity), то есть классов и объектов NET, а не таблиц базы данных. Это самый известный и функциональный ORM – инструмент в C#. ORM — это object-relational mapping — отображение данных на реальные объекты.

Например, если разработчик напрямую работает с базами данных, программист должен думать о подключении, подготовке SQL и параметров SQL, как отправлять запросы и о транзакциях. А с помощью Entity Framework Core все это делается автоматически — разработчик работает непосредственно с классами NET.
Читать дальше →

Асинхронный код в Startup ASP.NET Core: 4 способа обхода GetAwaiter().GetResult()

Время на прочтение8 мин
Количество просмотров22K
С тех пор, как в C# 5.0 завезли механизм async/await, нас постоянно во всех статьях и доках учат, что использовать асинхронный код в синхронном очень плохо. И призывают бояться как огня конструкции GetAwaiter().GetResult(). Однако есть один случай, когда сами программисты Microsoft не гнушаются этой конструкцией.


Читать дальше →

Blazor Client Side Интернет Магазин: Часть 6 — Создание заказа и работа с компенсирующими действиями

Время на прочтение6 мин
Количество просмотров2.9K


Привет, Хабр! Продолжаю делать интернет магазин и изучать Blazor. В этой части расскажу о том как добавил в него возможность создания заказа, просмотра заказов и работу с последовательностью действий одно из которых может завершиться ошибкой. За подробностями добро пожаловать под кат.
Читать дальше →

Blazor Client Side Интернет Магазин: Часть 5 — Просмотр корзины и работа с Stateful

Время на прочтение4 мин
Количество просмотров3.2K


Привет, Хабр! Продолжаю делать интернет магазин на Blazor. В этой части расскажу о том как добавил в него возможность просмотра корзины товаров и организовал работу с состоянием. За подробностями добро пожаловать под кат.
Читать дальше →

.Net Core Api: получение данных в запросе из разных источников

Время на прочтение8 мин
Количество просмотров9.4K
В .Net Core есть встроенный механизм Model Binding, позволяющий не просто принимать входные параметры в контроллерах, а получать сразу объекты с заполненными полями. Это позволяет встроить в такой объект все нужные проверки с помощью Model Validation.

Вот только данные, нужные для работы API, приходят нам не только из Query или Body. Какие-то данные нужно получить из Headers (в моем случае там был json в base64), какие-то — из внешних сервисов или ActionRoute, если вы используете REST. Для получения данных оттуда можно использовать свой Binding. Правда и тут есть проблема: если вы решили не нарушать инкапсуляцию и инициализировать модель через конструктор, то придется пошаманить.

Для себя и для будущих поколений я решил написать что-то вроде инструкции по использованию Binding и шаманство с ним.
Читать дальше →

Нестандартные мысли об архитектуре веб-сайта

Время на прочтение4 мин
Количество просмотров4.6K
Мы у себя в WIT-e, конечно, иноходцы. Своя ERP-система (писал о ней тут — Как нам обойтись без 1С?), своя CRM-система, своя M2M для связи с дистрибуторами («какие еще умные слова и аббревиатуры вы знаете?»). Ну и, конечно же, свой подход к WWW, чтобы оставаться в рамках этой 3-буквенной парадигмы.

Все началось с любви к Микрософт, и какая-то из ранних версий сайта еще в конце 90-х была сделана на технологии ASP, а в качестве базы данных под ней лежал обычный файл MS Access. Кстати, провайдеры до сих пор предлагают хостинг на старой доброй ASP, спустя 18 лет после ее обновления до ASP.NET – вот вам и legacy systems во всей красе.
Читать дальше →

Ближайшие события

Прозрачная аутентификация в ASP.Net Core на Linux

Время на прочтение6 мин
Количество просмотров22K

Аутентификация в ASP.Net (Core) — тема довольно избитая, казалось бы, о чем тут еще можно писать. Но по какой-то причине за бортом остается небольшой кусочек — сквозная доменная аутентификация (ntlm, kerberos). Да, когда мы свое приложение хостим на IIS, все понятно — он за нас делает всю работу, а мы просто получаем пользователя из контекста. А что делать, если приложение написано под .Net Core, хостится на Linux машине за Nginx, а заказчик при этом предъявляет требования к прозрачной аутентификации для доменных пользователей? Очевидно, что IIS нам тут сильно не поможет. Ниже я расскажу, как можно данную задачу решить c минимальными трудозатратами. Написанное актуально для .Net Core версии 2.0-2.2. Скорее всего, будет работать на версии 3 и с той же вероятностью не будет работать на версии 1. Делаю оговорку на версионность, поскольку .Net Core довольно активно развивается, и частенько методы, сервисы, зависимости могут менять имена, местоположение, сигнатуры или вообще пропадать.


Что такое Kerberos, и как это работает, кратко можно прочитать в Wiki. В нашей задаче Kerberos в паре с keytab файлом дает возможность приложению на Linux сервере (на Windows, само собой, тоже), который не требуется включать в домен, пропускать сквозной аутентификацией пользователей на windows-клиентах.

Читать дальше →

Наивно. Супер: код и архитектура простой игры

Время на прочтение5 мин
Количество просмотров10K
Мы живём в сложном мире и, кажется, стали забывать о простых вещах. Например, о бритве Оккама, принцип которой гласит: «Что может быть сделано на основе меньшего числа, не следует делать, исходя из большего». В этой статье я расскажу про простые и не самые надёжные решения, которые можно применять в разработке простых игр.


Читать дальше →

Как ошибка из 2009 вызывает конфликт Docker for Windows и Razer Synapse

Время на прочтение2 мин
Количество просмотров18K
Сегодня мне попался весьма любопытный баг: Docker for Windows не запустится, если у вас запущена панель управления драйвером Razer Synapse.

Но интереснее всего то, почему так случилось…

Читать дальше →

Связь между C# и C#: REST, gRPC и все, что между

Время на прочтение10 мин
Количество просмотров36K
Существует много способов связи между клиентом C# и сервером C#. Некоторые из них надежные, другие нет. Некоторые очень быстрые, другие нет. Важно знать различные варианты, чтобы вы могли решить, что лучше для вас. В этой статье будут рассмотрены самые популярные на сегодняшний день технологии и почему они так широко используются. Мы поговорим о REST, gRPC и всем, что между ними.
Читать дальше →

Новый эксперимент: Вызов сервисов .NET gRPC из браузера с gRPC-Web

Время на прочтение3 мин
Количество просмотров7.8K
Рады объявить об экспериментальной поддержке gRPC-Web с .NET. gRPC-Web позволяет вызывать gRPC из приложений на основе браузера, таких как JavaScript SPA или приложений Blazor WebAssembly.

gRPC-Web для .NET обещает привнести многие замечательные функции gRPC в приложения для браузеров:

  • Строго-типизированные кодо-сгенерированные клиенты
  • Компактные сообщения Protobuf
  • Серверный стриминг

Читать дальше →

Blazor WebAssembly 3.2.0 Preview 1 теперь доступна

Время на прочтение6 мин
Количество просмотров4.8K
Сегодня мы выпустили новое предварительное обновление для Blazor WebAssembly с множеством замечательных новых функций и улучшений.

Вот что нового в этом выпуске:

  • Версия обновлена до 3.2
  • Упрощенный запуск
  • Улучшения размера загрузки
  • Поддержка клиента .NET SignalR

Читать дальше →

Quartz в ASP.NET Core

Время на прочтение4 мин
Количество просмотров36K

Вступление


Знаю, что на эту тему есть очень много статей и своего рода туториоалов, я уже и не говорю об официальной документации, но при работе над своим последним проектом я столкнулся с очень занятной проблемой, о которой мало где говорится. Речь сегодня пойдет о проблеме использования Dependency Injection и Quartz в проекте на платформе ASP.NET Core.

Началось всё с того, что я не думал, что могут возникнуть какие-то проблемы и скажу сразу, что пробовал использовать различные подходы: добавлял все классы, которые включал в себя Quartz в services и юзать их через DI — мимо (но не полностью, как потом оказалось), пробовал добавить HostedService — тоже не работало (в конце прикреплю несколько хороших ссылок на полезные статьи о работе с Quartz) и так далее. Я уже думал, что у меня проблема с триггером — тоже нет. В этой короткой статье я попытаюсь помочь тем, у кого, возможно, была такая же проблема и надеюсь мое решение поможет им в дальнейшей работе. Под конец вступления хочу добавить, что буду весьма признателен если в комментариях те, кто хорошо знаком с технологией, дадут несколько советов, которые помогут улучшить то, что я предложил.
Читать дальше →