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

ASP *

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

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

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

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

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

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

Читать далее

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

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

Совсем недавно мне пришлось разбираться с проблемами перформанса одного веб приложения. В процессе определения источника проблем возникали вопросы "сколько в среднем занимает вызов метода класса 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 мин
Количество просмотров11K

Всего есть 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 мин
Количество просмотров7.1K

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

Читать далее

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

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

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

Читать далее

Ускоряем pow

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

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

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

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

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

Blazor WebAssembly: соединительные линии в SVG

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

Demo | GitHub

В статье описан способ реализации соединительных линий между SVG объектами. Соединительные линии автоматически перестраиваются при изменении положения объектов. Попутно рассмотрен метод OnParametersSet.

Читать далее

Использование сертификатов в ASP.NET Core

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

В последнее время использование протокола HTTPS для Web-ресурсов является обязательным требованиям ко всем более-менее большим Web-проектам. Эта технология основана на использовании так называемых сертификатов. Раньше за получение своего сертификата нужно было платить. Но сегодня появление таких сервисов, как Let's Encrypt сделало возможным получение сертификатов бесплатно. Таким образом, цена больше не служит оправданием отказа от использования HTTPS.

В самом простом случае сертификат позволяет установить защищённое соединение между клиентом и сервером. Но это далеко не всё, на что они способны. В частности, недавно я смотрел на Pluralsight курс Microservices Security. И там среди прочих упоминалась такая вещь, как Mutual Transport Layer Security. Она позволяет не только клиенту убедиться в том, что он общается именно с тем сервером, с которым хочет, но и сервер может узнать, что за клиент с ним общается.

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

Читать далее

Blazor WebAssembly: Drag and Drop в SVG

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

Demo | GitHub

В статье описан способ реализации перетаскивания SVG объектов.

Попутно рассмотрены следующие моменты разработки на Blazor:

Шаблонные компоненты. Содержимое шаблонного компонента можно задавать в родительском компоненте.

Передача событий от родительского компонента дочернему (Parent -> Child);

Проблема перезаписи входных параметров компонента внутри самого компонента (Overwritten parameters problem);

Двухсторонний биндинг между родителем и дочерним компонентом. Т.е. входной параметр дочернего компонента может менять и родительский компонент и дочерний;

Как сделать stopPropagation на Blazor.

Читать далее

Blazor WebAssembly: динамическое создание компонентов по JSON описанию

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

В заметке описан способ динамического добавления на страницу компонентов по JSON-описанию с помощью DynamicComponent из ASP.NET Core 6.0 (в настоящее время в статусе Preview).

Динамическое создание компонентов пригодится например при реализации конструктора форм:

• Форма описывается JSON-ом;

• Элементы (или контролы) формы не ограничены предустановленным набором. Контролы можно добавлять, в том числе подгружать из других dll-библиотек.

Читать далее

Распределяем нагрузку в зависимости от URL

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

Имеем ASP.NET web приложение. Проблема в том, что приложение может выполнять как "обычные" запросы так и тяжелые запросы построения отчетов. Все запросы по умолчанию выполняются в одном Application Pool. И в случае обработки запросов на построение отчетов страдает производительность.

Задача: вынести построение отчетов в отдельный Application Pool на отдельный домен. Допустим основной сайт расположен на домене main.domain.xyz. Нам требуется все GET запросы содержащие в URL /Reports/Run обрабатывать на другом домене reports.domain.xyz.

Читать далее

Мониторинг и наблюдаемость в облачных приложениях ASP.NET Core

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

Распределенные приложения сложны и влекут за собой свой собственный караван трудностей с отладкой и исправлением проблем в продакшене. Хотя микросервисная архитектура и дает возможность справляться силами меньшей команды, которая работает автономно и фокусируется на разных областях бизнеса, из-за своего распределенного характера она подкидывает нам новые проблемы. Например, в случае возникновения проблемы во время бизнес-транзакции, запрос необходимо отслеживать от начала и до конца, что может охватывать несколько служб и инфраструктур. Некоторые из трудностей таковы:

Читать далее

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

ASP.NET Core 6 и серверы аутентификации

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

Мы начали поставлять IdentityServer4 в .NET 3.0 как часть нашего шаблона для поддержки выдачи JWT токенов для SPA и Blazor приложений. Через некоторое время после того, как мы выпустили продукт, команда IdentityServer сделала объявление об изменении лицензии для будущих версий IdentityServer на взаимную публичную лицензию (RPL) — лицензию, в которой код по-прежнему является открытым, но если он используется в коммерческих целях, необходимо покупать платную лицензию. Такой подход распространен в мире опенсорсного кода, где получать стабильный доход может быть достаточно трудно, поскольку ваш проект становится вашей работой на полную ставку.

Двумя вескими причинами, по которым мы решили поставлять IdentityServer, было четко выраженное желание сообщества не конкурировать с уже существующим опенсорсным проектом и глубокое понимание IdentityServer области идентификации. Команда .NET не является экспертом по OAuth и OIDC, поскольку мы сосредоточены на предоставлении строительных блоков для вашего приложения и отправной точке, с которой вы можете добиться успеха. Создание и поддержка сервера аутентификации - это постоянная задача, и у Microsoft уже есть команда и продукт в этой области, Azure Active Directory, который позволяет бесплатно использовать 500 000 объектов. Команда ASP.NET считает, что управляемое облачное решение остается лучшим практическим решением для разработчиков — безопасность управляется, учетные данные не хранятся локально, что сопряжено с риском, а новые фичи, такие как аутентификация без пароля, бесшовно вплетаются в ваш рабочий процесс аутентификации. Однако мы также понимаем, что облачное решение может быть невозможно для некоторых клиентов из-за проблем с нормативными требованиями или суверенитетом данных.

Читать далее

Тест пропускной способности ASP.NET Core 5.0 в Kestrel, IIS, Nginx и Caddy

Время на прочтение4 мин
Количество просмотров12K
Начиная с версии 2.2. ASP.NET Core поддерживает режим внутрипроцессного размещения приложения (InProcess) в IIS, направленный на улучшение производительности кода. Рик Страл написал статью, в которой подробно исследовал эту тему. С тех пор прошло три года, теперь платформа ASP.NET Core добралась до версии 5.0. Как это повлияло на производительность ASP.NET Core-проектов на различных серверах?


Узнать подробности

Опенсорсные инструменты и пакеты для работы с HTTP API

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

Мы продолжаем серию статей о создании HTTP API с помощью .NET 5. В предыдущей статье мы рассмотрели создание обнаруживаемых HTTP API с помощью ASP.NET Core 5 Web API. В этой статье мы рассмотрим пакеты и инструменты для работы с HTTP API с открытым исходным кодом. Ну что ж, приступим!

Читать далее

Сравнение производительности ASP.NET Core-проектов на Linux и Windows в службе приложений Azure. Продолжение

Время на прочтение4 мин
Количество просмотров6K
В моём предыдущем материале речь шла о сравнении производительности ASP.NET Core-приложений, запускаемых в Windows и в среде Linux + Docker, работающих в службе приложений Azure. Эта тема интересна многим — поэтому я решил написать продолжение.



Я снова провёл испытания, используя подход, отличающийся от прежнего лучшей воспроизводимостью, такой, который даёт более надёжные результаты. Теперь я генерирую веб-нагрузку на серверы с помощью облачных инструментов Azure Cloud Agents, применяя Visual Studio и VSTS. И, более того, в то время как ранее я выполнял тесты с использованием HTTP, теперь тестирование проводилось с применением HTTPS.
Читать дальше →

Сравнение производительности ASP.NET Core-проектов на Linux и Windows в службе приложений Azure

Время на прочтение8 мин
Количество просмотров11K
Что быстрее — ASP.NET Core-приложение, развёрнутое в Docker-контейнере на Linux, или такая же программа, но запущенная на Windows-сервере, учитывая то, что всё это работает в службе приложений Azure? Какая из этих конфигураций предлагает более высокий уровень производительности, и о каком «уровне производительности» можно говорить?


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

6 вещей, которые не стоит делать в ASP.NET контроллерах

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

«Ваши .NET контроллеры должны быть тонкими»

Ох уж эта вечно повторяемая банальность, обросшая тоннами недосказанности.

Почему они должны быть тонкими? Какой в этом плюс? Как сделать их тонкими, если они сейчас не такие? Как сохранить их тонкими?

Мне интересно!

Партнерские отношения, каналы распространения и продажи продукта: Курс «Создание программного продукта и управление его

Время на прочтение9 мин
Количество просмотров2K
Привет, Хабр! Сегодня в продолжение темы продакт-менеджмента мы поговорим о выстраивании партнерских отношений, поиске каналов и, конечно, о святая святых любого бизнеса — о продажах. В этом посте вы найдете информацию о работе с дистрибьюторами, выстраивании стратегии продаж, примеры win-loss анализа и многое другое. Так что всех заинтересованных прошу под кат!
Читать дальше →