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

ASP *

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

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

В каких аспектах улучшилась производительность в ASP NET Core 8

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

ASP.NET Core 8 и .NET 8 обогатились многочисленными потрясающими нововведениями, благодаря которым повышается производительность. В этом посте мы подчеркнём некоторые улучшения, сделанные в ASP.NET Core, и покажем, как с их помощью можно нарастить скорость и эффективность работы веб-приложения. Этот пост можно считать продолжением Performance improvements in ASP.NET Core 7, выходившего в прошлом году. Естественно, при его подготовке я также вдохновлялся постом Performance Improvements in .NET 8. Многие из перечисленных улучшений также прямо или косвенно способствуют повышению производительности ASP.NET Core.

Читать далее
Всего голосов 28: ↑27 и ↓1+26
Комментарии5

Новости

Насколько быстр ASP.NET Core?

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

В последние годы команда .NET усиленно рекламирует ASP.NET Core как один из самых быстрых веб-фреймворков на рынке. Источником этих утверждений всегда были бенчмарки TechEmpower Framework Benchmarks.

Скотт Хантер - директор по управлению программами .NET, утверждает, что .NET более чем в 10 раз быстрее, чем Node.js.

Скотт также утверждает, что .NET быстрее, чем Java, Go и даже C++.

Читать далее
Всего голосов 74: ↑73 и ↓1+72
Комментарии31

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

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

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

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

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

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

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

Demo | GitHub

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

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

Читать далее
Всего голосов 41: ↑39 и ↓2+37
Комментарии17

Истории

Ускоряем pow

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

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

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

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

Ускорь мои степени!
Всего голосов 52: ↑52 и ↓0+52
Комментарии40

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

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


Узнать подробности
Всего голосов 39: ↑36 и ↓3+33
Комментарии21

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

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



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

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

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


Читать дальше →
Всего голосов 48: ↑46 и ↓2+44
Комментарии8

Я 20 лет наслаждаюсь разнообразием архитектур и хочу поделиться мыслями

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


Сначала хотел написать комментарий к статье "Я десять лет страдал от ужасных архитектур в C#...", но понял две вещи:

  1. Слишком много мыслей, которыми хочется поделиться.
  2. Для такого объёма формат комментария неудобен ни для написания, ни для прочтения.
  3. Давно читаю Хабр, иногда комментирую, но ни разу не писал статей.
  4. Я не силён в нумерованных списках.

Disclaimer: я не критикую @pnovikov или его задумку в целом. Текст качественный (чувствуется опытный редактор), часть мыслей разделяю. Архитектур много, но это нормально (да, звучит как название корейского фильма). 

Однако давайте по порядку. Сначала моё мнение о том, что влияет на архитектуру, потом про спорные моменты в статье об «исправлении архитектур». Ещё расскажу о том, что у нас хорошо работает — может, пригодится кому-нибудь.
Читать дальше →
Всего голосов 44: ↑43 и ↓1+42
Комментарии60

Я десять лет страдал от ужасных архитектур в C# приложениях — и вот нашел, как их исправить

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


Я второй десяток лет участвую в разработке приложений для бизнеса на .NET и каждый раз вижу одни и те же проблемы — быдлокод и беспорядок. Месиво из сервисов, UoW, DTO-шек, классов-хелперов. В иных местах и прямой доступ в базу данных руками, логика в статических классах, километровые портянки конфигурации IoC.


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


Однако, эволюция — беспощадная штука: моя последняя система показалась мне более-менее близкой к идеалу. Сложность не сильно росла, скорость разработки не падала довольно долго, в систему худо-бедно въезжают новые сотрудники. Эти результаты я взял за основу, улучшил и теперь анонсирую вам свою новую разработку: Reinforced.Tecture.

Читать дальше →
Всего голосов 85: ↑60 и ↓25+35
Комментарии108

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

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

image
Читать дальше →
Всего голосов 47: ↑39 и ↓8+31
Комментарии265

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

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


Читать дальше →
Всего голосов 43: ↑41 и ↓2+39
Комментарии29

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

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

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

Читать дальше →
Всего голосов 35: ↑34 и ↓1+33
Комментарии17

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

Ищем и анализируем ошибки в коде Orchard CMS

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

Picture 6

Эта статья – результат повторной проверки проекта Orchard с помощью статического анализатора PVS-Studio. Orchard это система управления контентом с открытым исходным кодом, которая является частью галереи ASP.NET-проектов некоммерческого фонда Outercurve Foundation. Проверка интересна тем, что проект и анализатор сильно выросли со времени первого анализа. Новые срабатывания и интересные ошибки ждут вас.
Читать дальше →
Всего голосов 40: ↑39 и ↓1+38
Комментарии8

Расцвет и упадок Visual Basic

Время на прочтение7 мин
Количество просмотров77K
Мне нужно сделать признание. До того, как я стал респектабельным разработчиком, работающим с такими современными языками, как C# и Java (и тем бурлящим хаосом, который известен нам под именем JavaScript), я был увлечённым фанатом невероятно популярного и неуклюжего Visual Basic.

Моя влюблённость была искренней. Ещё в детстве я учился программировать на языке BASIC. Но не просто на BASIC. Я начинал с потрясающей среды Microsoft под названием QuickBASIC на древней операционной системе DOS. Я всё ещё помню, как набирал белый текст на её бодром голубом фоне.


Для программирования в 1988 году QuickBASIC был волшебной штукой. Можно было писать код без громоздких номеров строк, отлавливать синтаксические ошибки в процессе набора и запускать программы прямиком из среды разработки без необходимости возни с командной строкой. Закончив программу, можно было делиться ею со своими друзьями при помощи вот этих ребят:


В наши дни QuickBASIC остался лишь ещё одной диковинкой из далёкого прошлого. Хотя так ли это? Новаторский проект под названием QB64 создал современную реплику QuickBASIC. Он запускается на Windows, MacOS и Linux, и не требует эмулятора. При запуске программы в QB64 среда выполняет хитрый трюк — сначала она транслирует код на BASIC в C++, а затем компилирует его.

Классический VB и эра Visual


QuickBASIC был впечатляющей средой для далёких дней текстовых компьютерных систем. Но всё изменилось, когда Microsoft выпустила Windows и погрузила пользователей PC в графический мир кнопок и кликов. Одновременно с выпуском компанией Microsoft Windows 3.0 (первой версии, которая добилась истинного успеха), был выпущен Visual Basic 1.0.
Читать дальше →
Всего голосов 114: ↑110 и ↓4+106
Комментарии222

Как работает конфигурация в .NET Core

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

Давайте отложим разговоры о DDD и рефлексии на время. Предлагаю поговорить о простом, об организации настроек приложения.


После того как мы с коллегами решили перейти на .NET Core, возник вопрос, как организовать файлы конфигурации, как выполнять трансформации и пр. в новой среде. Во многих примерах встречается следующий код, и многие его успешно используют.


public IConfiguration Configuration { get; set; }
public IHostingEnvironment Environment { get; set; }

public Startup(IConfiguration configuration, IHostingEnvironment environment)
{
   Environment = environment;
   Configuration = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .AddJsonFile($"appsettings.{Environment.EnvironmentName}.json")
            .Build();
}

Но давайте разберемся, как работает конфигурация, и в каких случаях использовать данный подход, а в каких довериться разработчикам .NET Core. Прошу под кат.

Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии24

.NET: Инструменты для работы с многопоточностью и асинхронностью. Часть 1

Время на прочтение18 мин
Количество просмотров67K
Публикую на Хабр оригинал статьи, перевод которой размещен в блоге Codingsight.
Вторая часть доступна здесь

Необходимость делать что-то асинхронно, не дожидаясь результат здесь и сейчас, или разделять большую работу между несколькими выполняющими ее единицами была и до появления компьютеров. С их появлением такая необходимость стала очень ощутимой. Сейчас, в 2019, набирая эту статью на ноутбуке с 8 ядерным процессором Intel Core, на котором параллельно этому работает не одна сотня процессов, а потоков и того больше. Рядом, лежит уже немного потрепанный, купленный пару лет назад телефон, у него на борту 8 ядерный процессор. На тематических ресурсах полно статей и видео, где их авторы восхищаются флагманскими смартфонами этого года куда ставят 16ти-ядерные процессоры. MS Azure предоставляет менее чем за 20$/час виртуальную машину со 128 ядерным процессором и 2 TB RAM. К сожалению невозможно извлечь максимум и обуздать эту мощь не умея управлять взаимодействием потоков.
Читать дальше →
Всего голосов 34: ↑34 и ↓0+34
Комментарии5

Оптимизация сборки мусора в высоконагруженном .NET сервисе

Время на прочтение16 мин
Количество просмотров30K
Ежедневно в сервисе Pyrus работают десятки тысяч сотрудников из нескольких тысяч организаций по всему миру. Отзывчивость сервиса (скорость обработки запросов) мы считаем важным конкурентным преимуществом, так как она напрямую влияет на впечатление пользователей. Ключевой метрикой для нас является «процент медленных запросов». Изучая ее поведение, мы заметили, что раз в минуту на серверах приложений возникают паузы длиной около 1000 мс. В эти промежутки сервер не отвечает и возникает очередь из нескольких десятков запросов. О поиске причин и устранении узких мест, вызванных сборкой мусора в приложении, пойдет речь в этой статье.


Читать дальше →
Всего голосов 54: ↑54 и ↓0+54
Комментарии28

.Net Community Райффайзенбанка приглашает на митап UPD Трансляция

Время на прочтение2 мин
Количество просмотров3.2K
.NET Community Райффайзенбанка приглашает на Meetup, который состоится в московском офисе в Нагатино 23 мая.

Сообщество разработчиков Райффайзенбанка активно проводит митапы, готовит вокркшопы, и делает еще много всего, для того, чтобы сотрудники могли делиться опытом и знаниями друг с другом. В программе события два доклада. Поговорим про DDD в микросервисах и узнаем как коллеги из Ozon реализовали сбор метрик в приложениях ASP.NET Core


Всего голосов 29: ↑27 и ↓2+25
Комментарии6

Интервью с руководителем центра компетенции .NET на DotNext 2018

Время на прочтение6 мин
Количество просмотров6.2K
22 и 23 ноября в Москве прошла очередная конференция DotNext 2018 для любителей .NET. Меня зовут Максим Смирнов, я руковожу центром компетенций .NET в Альфа-Банке и хочу представить вам текстовую версию одного из интервью, взятых в кулуарах DotNext.


Про жизнь и приключения дотнета в нашем банке, про сосуществование с джавой и проблемы внедрения — под катом.

Сколько в Альфе вообще .NET и для чего он нам нужен

Всего голосов 28: ↑28 и ↓0+28
Комментарии13