Nothing Special   »   [go: up one dir, main page]

Как стать автором
Обновить
1.67

ASP *

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

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

Давай дружить. OpenId Connect и Yarp

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

Сегодня в этой статье я хочу поделиться личным опытом работы и решением конкретного кейса. Как подружить сервер авторизации на протоколе OpenId Connect и веб-приложения, накрытых обратным прокси-сервером YARP.

Читать далее

О применении RazorPages в консольных и десктопных приложениях

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

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

Читать далее

Запуск фоновых задач в asp.net core

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

Небольшой обзор стандартных средств запуска бэкграунд-задач в аспнет приложениях — что есть, чем отличается, как пользоваться. Встроенный механизм запуска таких задач строится вокруг интерфейса IHostedService и метода-расширения для IServiceCollection — AddHostedService. Но есть несколько способов реализовать фоновые задачи через этот механизм (и ещё несколько неочевидных моментов поведения этого механизма).

Читать далее

JSON-сериализация асинхронного стрима

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

Можно считать это продолжением публикации Кастомный JsonConverter: уменьшаем связность и экономим ресурсы. Там при рассмотрении списков верхнего уровня упор был сделан на десериализацию из JSON. Но чтобы что-то десериализовать, нужно сначала это сериализовать. Посмотрим, чем нам может помочь возможность сериализации IAsyncEnumerable<T> объекта.

Читать далее

Истории

Кастомный JsonConverter: уменьшаем связность и экономим ресурсы

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

Рассматриваем некоторые возможности, которые нам предоставляет кастомный JsonConverter.

Читать далее

Как обрабатывать необработанные исключения в ASP.NET Core Web API

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

Привет! Я Антон Антонов, Full Stack Developer. Расскажу, как обрабатываю необработанные исключения в ASP.NET Core Web API, и дам примеры обработчиков ошибок, которые отвечают наиболее распространенным требованиям.

Читать далее

Утилизация «мусорщиком» сессий с истекшим сроком годности

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

Соглашаясь с мнением, что stateful-сервер ограничен в масштабируемости, всё же считаю, что инструмент должен соответствовать задаче. Для высоконагруженной системы с миллионами запросов в секунду важна распределённость, но за неё мы платим необязательностью предоставления актуальных данных в конкретный момент. Ни того ни другого нельзя сказать о системе, в которой при самых оптимистичных предположениях будет работать сотня операторов.

Так что предположим, что запрос на полноценные сессии всё же имеется. И эти сессии надо как-то утилизировать после окончания их срока жизни. Навскидку можно предложить следующие решения.

Запуск параллельной задачи при очередном запросе с клиента.

Запуск специального потока.

Использование таймера.

Всё же осмелюсь предложить ещё одну идею.

Обновление: благодарю @Politura - комментарий о MemoryCache оказался очень полезным! Проверил и решил так и сделать.

Читать далее

Как не дать пользователю заснуть во время загрузки большого набора данных

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

Одно из двух, — прошелестел он, — или пациент жив, или он умер. Если он жив — он останется жив или он не останется жив. Если он мёртв — его можно оживить или нельзя оживить.

А.Н. Толстой. "Золотой ключик, или Приключения Буратино"

Пользователю лень фильтровать запрашиваемые данные, а их бывает довольно много. Заставлять пользователя что-то фильтровать - негуманно и попахивает произволом. В таком случае пользователь сидит грустит, ругает разработчиков, давит на техподдержку. Если сделать "в лоб", сервер по запросу клиента будет собирать для отправки коллекцию объектов, загружая их из базы или ещё как-то. Потом всю эту махину он пошлёт в ответном HTTP-пакете, предварительно серилизовав в JSON, там это всё будет в один присест десериализовано в клиентские объекты, которые, наконец-то предстанут пред взором потерявшего надежду пользователя.

Читать далее

RabbitMQ в ASP.NET Core. Быстрый старт

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

RabbitMQ – это брокер сообщений, служба, отвечающая за обмен сообщениями между разными программными сервисами.

RabbitMQ держит сообщения в очереди (Queue), которая является именованным буфером, хранящим адресованные ему сообщения.

Программа, посылающая сообщения в очередь RabbitMQ, называется поставщиком (Producer).

Программа, принимающая сообщения, называется подписчиком (Consumer). Такие программы подписываются на события поступления сообщения в очередь, и всегда находятся в ожидании новых сообщений.

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

Читать далее

Версионирование API в ASP.Net Core

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

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

Для решения такого рода проблем в ASP.Net Core существует механизм версионирования API – когда контроллеры и их методы могут существовать одновременно в разных версиях. В таком случае, те сервисы, которым достаточно существующего состояния используемых ими API, могут продолжать использовать определенные версии этих API, а для сервисов, которые требуют модернизации логики контроллеров, мы можем создавать новые параллельные версии, и все эти версии могут работать в нашем проекте одновременно.

Читать далее

AutoMapper: добавление и использование в проекте ASP.Net Core

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

При работе с данными (и не только) нам часто приходится сталкиваться с необходимостью копирования (маппинга) значений свойств одного объекта в новый объект другого типа.

Например предположим, что запрос к базе данных возвращает нам запись в виде объекта, представленного классом Person:

Читать далее

CRUD операции с Blazor, .Net 6.0 и Entity Framework Core

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

В этой статье мы создадим веб-приложение, используя Blazor, .Net 6.0 и Entity Framework Core для выполнения CRUD операций на базе Asp.Net Core.

В этом руководстве мы будем использовать Visual Studio 2022 и SQL Server 2014.

Читать далее

JavaScript редактор SVG диаграмм который весит в 6,5 раз меньше bootstrap (библиотека с открытым исходным кодом)

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

Demo | GitHub

Эксперименты с созданием редактора диаграмм на Blazor Webassembly (Blazor WebAssembly: Drag and Drop в SVG, Blazor WebAssembly: соединительные линии в SVG) показали что технология не годится для интенсивных манипуляций с DOM.

То что будут проседания было известно заранее: WebAssembly не имеет доступа к DOM, любые изменения только через вызовы JavaScript. Задержки оказались такими большими, что перетаскивание на мобильном тормозило уже после добавления третьей фигуры.

Читать далее

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

Исследуем .NET 6. Часть 6. Поддержка интеграционных тестов в WebApplicationFactory

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

В предыдущей статье я описал обходной путь, который был добавлен в .NET 6, чтобы инструменты EF Core, которые ранее полагались на существование определённых методов, таких как CreateHostBuilder, продолжали работать с новыми минимальными API хостинга.

В этой статье я рассмотрю связанное изменение, обеспечивающее работу интеграционного тестирования с WebApplicationFactory в .NET 6. WebApplicationFactory использовала тот же класс HostFactoryResolver, что и инструменты EF Core, но потребовалось ещё несколько изменений, которые я рассмотрю в этой статье.

Читать далее

Инструменты мониторинга ASP NET Core приложения в Azure: Event counters

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

Совсем недавно мне пришлось разбираться с проблемами перформанса одного веб приложения. В процессе определения источника проблем возникали вопросы "сколько в среднем занимает вызов метода класса X", "как много данных приходит на эндпоинт Y", "как часто происходит flush в Z", и несколько стандартных вопросов при перформанс оптимизациях: "как мы потом узнаем что стало лучше", "насколько стало лучше", "было бы неплохо показать графики для демонстрации" и т.д. Так как некоторая часть работы была спрятана вне API endpoint-ов (background workers) и требовалась более детальная статистика для некоторых компонентов, стандартные средства перформанс мониторинга Application Insights не полностью покрывали все нужды. Для поиска ответов был необходим дополнительный набор инструментов мониторинга и после небольшого исследования были выбраны NET event counters в связке с уже применяемым на проекте Application Insights.

В этой статье я хочу финализировать все полученные знания об этом инструменте, о его конфигурации для Azure + Application Insights, а также порассуждать о том где и в каких сценариях этот инструмент применим. Статья может быть интересна всем NET разработчикам как общий обзор данной технологии, короткий гайд по ее конфигурации и обзор списка возможных сценариев ее применения.

Читать далее

Что такое AddScoped и его отличие от AddTransient в .NET и ASP.NET

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

Всего есть 3 типа жизни (ServiceLifetime) экземпляра:

Singleton - одиночка, создается один раз и используется во время использования всего процесса, метод .AddSingleton<T>().

Transient - временный, создается каждый раз при запросе его из провайдера, метод .AddTransient<T>().

Scoped - ограниченный, новый экземпляр создается в определённой области видимости (scope) в интерфейсе IServiceScope. Добавляется методом .AddScoped<T>().

Ссылка на картинку: https://stackoverflow.com/a/64776798

Читать далее

Представляем новый редактор Razor в Visual Studio 2022

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

С выпуском Visual Studio 2022 вы можете использовать новый редактор Razor для локальной разработки ASP.NET Core с использованием MVC, Razor Pages и Blazor. Загрузите Visual Studio 2022 и обязательно обновите его до версии 17.0.2, чтобы получить последние обновления Razor. В статье подробнее о новых фичах и дальнейших планах на Razor.

Читать далее

Время и дата в формах Razor Pages

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

Когда вы работаете с временем и датой в форме Razor Pages, очень важно выбрать элемент управления, который наилучшим образом будет удовлетворять требованиям вашей задачи. До HTML5 разработчики в значительной степени полагались на сторонние библиотеки с элементами выбора времени и даты. На сегодняшний день у них есть множество встроенных в браузеры опций, тем не менее они предпочитают наслаждаться многообразием вспомогательных технологий, доступных для ​​современных браузеров. К ним относятся опции для управления и временем и датой, только временем или только датой, а также для выбора месяца или недели в году.

Читать далее

Изоляция CSS в Razor Pages

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

Изоляция CSS впервые появилась в .NET 5 для компонентов Blazor. Теперь она станет доступной и в Razor Pages (и в представлениях MVC) в .NET 6, который должен быть зарелижен в ноябре этого года. Ниже представлен краткий обзор того, как изоляция CSS работает в Razor Pages и какие проблемы она должна решать.

Читать далее

Ускоряем pow

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

В этой статье я хочу поделиться несколькими нестандартными алгоритмами для быстрого возведения числа в степень, а также продемонстрировать их реализацию и сравнить их быстродействие в C++, C# и Java.

Сравнить точность алгоритмов можно прямо сейчас на этой странице.

В конце будет краткая памятка по тому, где и когда лучше применять какой из методов. При правильном выборе можно добиться увеличения скорости вычислений в 5 раз при погрешности ~1%, а иногда и вовсе без неё.

Ускорь мои степени!