Как стать автором
Обновить
0.4
Рейтинг

ASP *

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

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

Добавляем поддержку Markdown в ASP.NET Core приложение. Часть 1

Блог компании OTUS ASP *C# *
Перевод

Последние несколько лет ознаменовали становление Markdown в качестве общепринятого языка разметки HTML-текста. Он становится доступным во все большем количестве мест и фактически уже стал стандартом для документации, которая публикуется и редактируется в интернете. Если вы работаете с Git и GitHub, то вы уже используете Markdown для форматирования README.md и, вероятно, всей остальной документации, которую вы пишете для своих проектов, связанных с разработкой программного обеспечения. Большая часть документации для разработчиков, которую вы сегодня можете найти в интернете, будь то коммерческая документация от таких компаний, как Microsoft, Google и т. д., или типовые решения для документации наподобие ReadTheDocs или KavaDocs, — создается и поддерживается с помощью Markdown.

Читать далее
Всего голосов 5: ↑4 и ↓1 +3
Просмотры 1.7K
Комментарии 0

Новости

Entity Framework Core и высокая производительность

Высокая производительность *.NET *ASP *

Entity Framework Core является рекомендованным и самым популярным средством взаимодействия с реляционными базами данных на платформе ASP NET Core. Это мощный инструмент который подходит для большинства сценариев, но, как и любой другой инструмент имеет свои ограничения. Долгое время бытовало мнение (и не безосновательно) что Entity Framework не подходит для высоконагруженных систем и в таких сценариях лучше использовать Dapper. Но время идет и Entity Framework развивается, в том числе в плане оптимизации. Помимо улучшения производительности самой платформы .NET, Entity Framework Core для NET 6 имеет ряд настроек и возможностей, призванных значительно улучшить производительность. В этой статье мы рассмотрим Entity Framework Core с точки зрения производительности и сравним его с Dapper используя актуальные версии на момент июля 2022 года. Посмотрим насколько рекомендация "перепишите все на Dapper" актуальна :)

Эта статья будет полезна разработчикам, которые используют Entity Framework Core в ежедневной работе, а также разработчикам высоконагруженных систем для актуализации знаний о возможностях последних версий Entity Framework Core.

Читать далее
Всего голосов 21: ↑21 и ↓0 +21
Просмотры 7.2K
Комментарии 16

Особенности применения LRU кэша в ASP NET Core приложениях

Высокая производительность *.NET *ASP *Алгоритмы *

В современной веб разработке сложно переоценить значение такого инструмента как кэш. Мы сохраняем результаты выполнения длительных, дорогостоящих или часто выполняемых операций в некое хранилище, обратиться к которому будет быстрее и дешевле чем к первоисточнику или дешевле чем повторять операцию. В качестве такого хранилища обычно выступает оперативная память или же оптимизированные для быстрого доступа по ключу базы данных, такие как Redis. Кэш это незаменимый инструмент для уменьшения времени отклика и повышения масштабируемости приложения. Однако он имеет свои ограничения, которые связаны в основном с размером кэша. У нас не хватит оперативной памяти и пространства в Redis чтобы полностью закешировать таблицу базы данных с миллионами записей. Для решения проблемы использования кэша при большом объеме исходных данных и ограниченных ресурсах, мы должны применить некий алгоритм, который позволит нам кешировать только самое необходимое - часто запрашиваемые элементы. В этой статье мы детально рассмотрим применение одного из таких алгоритмов кэширования - LRU в контексте ASP NET Core приложения.

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

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Просмотры 3K
Комментарии 0

На двух стульях: ASP.NET Identity и авторизация по Windows в ASP.NET MVC

Программирование *.NET *ASP *HTML *

Для начала расскажу, что приложение, которое я разрабатывал, долго существовало на небольшом «подстольном» сервере в виде прототипа, которым в работе пользовалось небольшое число сотрудников. По прошествии некоторого времени, руководство приняло решение тиражировать это приложение в пром – с переносом на пром-сервер и организацией доступов к нему сотрудникам всего структурного подразделения.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 2.4K
Комментарии 2

Простые шаги по повышению производительности ASP NET Core приложения

Высокая производительность *.NET *ASP *

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

Статья будет полезна разработчикам и лидерам команд, стремящимся улучшить производительность системы в целом. Также статья будет полезна опытным разработчикам, которые смогут использовать список рекомендаций из данной статьи в качестве отправной точки для создания или дополнения собственного чеклиста по улучшению производительности ASP NET Core приложений.

Читать далее
Всего голосов 25: ↑25 и ↓0 +25
Просмотры 8.1K
Комментарии 5

Dependency Injection и Full state сервер

Блог компании Timeweb Cloud .NET *ASP *C# *


Сразу же сообщу, что в данной публикации не сравниваются Fullstate и Stateless парадигмы построения серверов. Также отсутствует какая-либо агитация в пользу Fullstate. Мы исходим из ситуации, в которой мы приняли решение, что для конкретного проекта сервер ASP.NET должен между запросами не только хранить какие-то статические данные, но и возможно выполнять какую-то полезную работу.
При этом мы, разумеется, хотим использовать всю мощь DI-контейнера .NET!

Читать дальше →
Всего голосов 14: ↑12 и ↓2 +10
Просмотры 3.1K
Комментарии 27

Минимальные API в .NET 6

Блог компании OTUS ASP *C# *
Перевод

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

Читать далее
Всего голосов 19: ↑18 и ↓1 +17
Просмотры 8.9K
Комментарии 11

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

Разработка веб-сайтов *.NET *ASP *C# *
Из песочницы

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

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Просмотры 1.8K
Комментарии 1

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

.NET *ASP *C# *

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

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 3.4K
Комментарии 13

Инверсия зависимости и System.Data.Common.DbDataReader

.NET *ASP *C# *

Если мы не используем EF (такое случается), то нам нужно как-то устроить загрузку объектов из базы данных. Вариант: берём DataSet, делаем ему SomeDataAdapter.fill(...), а из него берём данные для строительства нужных объектов. При этом класс, который умеет заполнять DataSet, не знает, для объектов какого класса он это делает. Абстракция, низкая связанность, всё хорошо.

Однако, мы ждём, пока заполнится DataSet, только после этого можем начать

Читать далее
Всего голосов 1: ↑0 и ↓1 -1
Просмотры 1.4K
Комментарии 6

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

Программирование *.NET *ASP *C# *
Tutorial

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

Читать далее
Всего голосов 16: ↑15 и ↓1 +14
Просмотры 13K
Комментарии 10

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

.NET *ASP *C# *

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

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 6.4K
Комментарии 0

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

Программирование *.NET *ASP *C# *

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

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 4.5K
Комментарии 12

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

.NET *ASP *C# *

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

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

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

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

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

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

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

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 3.1K
Комментарии 5

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

.NET *ASP *C# *
Из песочницы

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

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

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

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 4.3K
Комментарии 14

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

.NET *ASP *C# *
Tutorial

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

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

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

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

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

Читать далее
Всего голосов 13: ↑7 и ↓6 +1
Просмотры 17K
Комментарии 20

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

.NET *ASP *API *C# *
Tutorial

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

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

Читать далее
Всего голосов 10: ↑9 и ↓1 +8
Просмотры 8.1K
Комментарии 12

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

.NET *ASP *C# *
Из песочницы
Tutorial

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

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

Читать далее
Всего голосов 4: ↑2 и ↓2 0
Просмотры 13K
Комментарии 36

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

Блог компании OTUS ASP *
Перевод

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

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

Читать далее
Всего голосов 9: ↑6 и ↓3 +3
Просмотры 7K
Комментарии 5

Вклад авторов