
C# *
Объектно-ориентированный язык программирования
Как на самом деле работает Async/Await в C# (Часть 7)

Несколько недель назад в блоге «.NET Blog» появилась статья «Что такое .NET, и почему вы должны выбрать его?». В нем был представлен высокоуровневый обзор платформы, кратко описаны различные компоненты и архитектурные решения, а также обещаны более подробные посты по затронутым темам. Этот пост является первым таким продолжением, в котором подробно рассматривается история создания, архитектурные решения и детали реализации async/await в C# и .NET.
Disclaimer: Я не являюсь профессиональным переводчиком, перевод подготовлен скорее для себя и коллег. Я буду благодарен за любые исправления и помощь в переводе, статья очень интересная давайте сделаем её доступной на русском языке.
Пример интеграции мессенджера с DLP-системой InfoWatch Traffic Monitor через API

В этой статье мы расскажем, как внешние приложения и сервисы могут взаимодействовать с DLP-системой InfoWatch Traffic Monitor (далее ТМ) через API. API-интерфейс в TM разработан уже давно, но в последний год интерес к нему со стороны сторонних разработчиков значительно вырос. Интеграторы и вендоры обычно хотят интегрировать DLP- системы с нуля в ИТ-ландшафт организации, импортозаместить прежние иностранные системы, расширить количество контролируемых DLP-системой каналов и аккумулировать информацию из нескольких систем в одной. Мы анализируем кросс-продуктовые сценарии и видим, что API является наиболее эффективным и современным средством решения подобных задач. Поэтому мы решили рассказать про наш API-интерфейс и продемонстрировать его работу на практических примерах.
Сценариев интеграции довольно много, поэтому мы рассмотрим самую популярную задачу - отправку событий из корпоративного мессенджера в DLP TM на контентный анализ. Для пущей сложности мы взяли самописный мессенджер Stack chat, а еще решили отправлять в DLP не только переписку, но и пересылаемые корпоративные файлы. Не секрет, что корпоративный мессенджер - это основное оперативное средство коммуникации любой динамичной организации. А благодаря своим интеграциям со средствами телефонии, сетевыми каталогами, CRM и корпоративными порталами, он же - канал утечки конфиденциальной информации.
Далее мы расскажем, как сделать плагин, выписать для него лицензию, выбрать или собрать утилиту для отправки в API. Приведем примеры отправки синтетических событий и кода, а также опишем результат.
Бенчмаркая строки и циклы: Replace, Split и Substring

Уважаемые читатели, в этой статье я хочу рассказать о небольших тестах со строками и представить свои выводы. Тесты сделаны на .net 7.
Про строки написано немало, поэтому слишком углубляться в их особенности не буду, лишь напомню, что строки в реальности могут быть изменяемыми с использованием различных ухищрений.
Все тесты сделаны с использованием BenchmarkDotNet, так что каждый может проверить результаты и сделать свои выводы.
Хочется начать с string.Replace, который проверяется разными вариантами, начиная с базового.
ASP.Net Core: реализуем проверку Google reCAPTCHA V2

В этой статье Мудассар Хан (Mudassar Khan) продемонстрирует нам, как реализовать проверку Google reCAPTCHA V2 (версии 2.0) в ASP.Net Core MVC.
Приведенный в этой статье пример демонстрирует, как Google reCAPTCHA V2 проверяет ответы с капчей от пользователей, получаемые из коллбэк-функций в JavaScript.
Книга «ASP.NET Core Security» в правильном переводе команды DotNetRu

Сообщество DotNetRu совместно с издательством ДМК Пресс договорились на доработку и проверку перевода очередной книги. Напомним, что мы уже помогли выпустить три книги: «Управление памятью в .NET для профессионалов» Конрада Кокосы, «ASP.NET Core в действии» Эндрю Лока и «EF Core в действии» Джона Смита. Издатель делает первоначальный перевод, а ребята из сообщества в качестве экспертов корректируют текст, придавая переводу оригинальный и непротиворечивый смысл.
Мы продолжили использовать хорошо зарекомендовавший себя подход — выделили каждую главу в отдельный документ, создали таблицу, в которой фиксировали процесс по каждой главе. С каждой главой независимо работали два-три редактора и предлагали свои правки. После чего отдельный редактор вычитывал главу и применял внесенные поправки к документу. Это позволило распараллелить работу и быть всем участникам максимально независимыми. После того, как перевод был готов, несколько редакторов прочли всю книгу и внесли финальные изменения.
Рады представить вам очередной результат совместных усилий: книга Кристиана Венца «Безопасность ASP.Net Core» в правильном переводе DotNetRu. В продолжении поста — впечатления о процессе перевода от непосредственных участников и промокод на скидку от издательства.
BTCPay Server: топ-10 ошибок в коде финансового приложения для Bitcoin

Наша компания пишет много материалов на тему качества кода. Некоторые проекты, выбранные для аудита кода, не очень близки всем читателям, но все из вас точно пользуются финансовыми приложениями. Может, не конкретно этим, но статья о том, что разработка программ в этой сфере без применения подходов контроля качества несёт потенциальные риски для всех пользователей.
Решение концептуальной проблемы с Unity ECS. Messenger для System
Всем привет! В этой статье я подробно разобрал своё решение проблемы реализации "ивентов" в ориентированном на данные дизайне для Unity ECS. Если вы заинтересованы в Unity DOTS/ECS, то данная статья нацелена именно на вас.
ThreadPool. async/await

А вы никогда не задумывались, что async и await выглядят как-то инородно среди прочего C# кода? Больше нигде не встречается такого странного синтаксиса и таких модификаторов, кроме как в методах, работающих с Task и Task<T>.
А ещё интересно, сколько вообще стоит пользоваться async/await? И когда можно (нужно?) обходиться без них?
Модульная архитектура — анализ зависимостей

Как построить диаграмму зависимостей библиотек и посмотреть какие публичные объекты используются в зависимых библиотеках
Бывает есть большие проекты с большим количеством зависимостей и состоящие из нескольких решений, которые вместе собирались через агента билд-сервера. Но как эти зависимости между собой пересекаются и будут-ли они работать если какие-то функции в решении выключены в связи с невостребованностью бизнеса может оставаться загадкой до момента включения.
Так-же, в случае если Common библиотеки собираются в отдельном решении - может быть полезно узнать - а какие публичные объекты из Common библиотек используются в других проектах или часть из этих публичных объектов уже не используется и их можно спокойно удалять или менять уровень видимости.
Как я адаптировал игру к экранам мобильных устройств

Мне нужно было адаптировать игру к экранам различным мобильных устройств.
В процессе я получше познакомился с UI и как адаптировать его под различные размеры экранов, а так же немного погрузился в постобработку. Что, кстати, само по себе не решает проблем возникающих на некоторых экранах, если UI должен отображаться поверх объекта на сцене.
Я очень долго пробовал, пытался, искал. Мое виденье того, как должна выглядеть сцена постоянно менялось
Как на самом деле работает Async/Await в C# (Часть 6)

Несколько недель назад в блоге «.NET Blog» появилась статья «Что такое .NET, и почему вы должны выбрать его?». В нем был представлен высокоуровневый обзор платформы, кратко описаны различные компоненты и архитектурные решения, а также обещаны более подробные посты по затронутым темам. Этот пост является первым таким продолжением, в котором подробно рассматривается история создания, архитектурные решения и детали реализации async/await в C# и .NET.
Динамические методы в .NET
На сегодняшний день в.NET существует несколько видов кодогенерации: новомодные Source Generators, компилируемые Expression Trees, динамические сборки и динамические методы. Каждый способ имеет свои области применения, плюсы и минусы.
В этой статье я хочу рассказать про динамические методы. Мы разберёмся как создавать их, как работает стековая машина и рассмотрим некоторые базовые операции Common Intermediate Language: работу с константами, математические и битовые операции, а также работу с аргументами методов и локальными переменными.
Сразу хочу сказать, что статья не содержит какого‑то хардкора и написана в большей степени для новичков. Если к теме будет интерес, постараюсь в следующей статье рассмотреть более сложные примеры (эта и так получилась достаточно длинной).
Ближайшие события
Делаем свой генератор CRUD для asp.net mvc (часть 1 — получаем данные)

Недавно проходил очередное собеседование, попросили написать CRUD для данных из 5 таблиц с максимальной глубиной связей 3 (таблица 1->таблица 2->таблица 3).
В принципе, это по количеству работы аналог какого-нибудь форума (users, files, themes, groups, messages). Сделайте нам пожалуйста phphbb :). И слышать "Ой, а ваше решение плохо поддерживается" в ответ на труд более двух дней не хотелось.
Встроенный в VisualStudio генератор CRUD по EntityFramework тоже оказался почти бессилен.
Плюс, довольно известный генератор CRUD EasyData(ссылка) не поддерживает валидацию данных через атрибуты (по крайней мере на стороне сервера).
.NET 7 против российской криптографии
Разрабатывая один проект на свежем .NET 7 столкнулся с необходимостью подписывать данные с использованием отечественных криптоалгоритмов. Ранее, в .NET Framework хорошая поддержка работы с со сторонними криптопровайдерами, реализующими семейство алгоритмов ГОСТ (CryptoPro CSP, ViPNet CSP и пр.), шла "из коробки". К сожалению, в новые версии фреймворка часть ранее работающего функционала по работе с CMS-сообщениями не попала, и пришлось восполнять пробел надёжными дедовскими методами, т. е. с помощью старого доброго WinAPI.
Вам нужен медиатор

Этой весной в чатах и сообществах dotnet (не забываем #DropTheDot) обострились анти-медиаторные настроения. Поначалу меня это забавляло, потом удивляло: люди подхватывают лозунги, не пытаясь разобраться в вопросе. Квинтэссенцией обострения стал доклад Андрея Парамонова "MediatR не нужен”, шокирующий своей категоричностью аргументов. В докладе были зерна истины, но они к концу так и не проросли.
Желание прорастить эти зерна и мой крайне положительный опыт использования медиатора в проектах разного размера смотивировали меня написать данную статью. Статья основана на личном опыте и наполнена эмоциями, за это заранее извиняюсь ? Она будет интересна скорее людям, которые уже знакомы с медиатором, встречались с ним в теории или на практике.
Урок на Unity. Интерактивное взаимодействие игрока с окружающими предметами в 3D с помощью меток

Урок на Unity. Интерактивное взаимодействие игрока с окружающими предметами в 3D с помощью меток.
Взаимодействие с окружением без коллайдеров и лучей, на простой математике.
Бонус урока. Делаем простое пианино!
Наверно всем знаком такой элемент в игре, как всплывающая иконка рядом с игровым объектом, позволяющая с ним интерактивно взаимодействовать.
Топ-10 докладов на С# конференциях 2019-2022 года

Небольшая подборка интересных докладов с конференций для C# и .NET разработчиков за последние несколько лет.
yield return

А вы никогда не задумывались, что yield return выглядит как-то инородно среди прочего C# кода? Больше нигде не встречается такого странного синтаксиса и такой инструкции, кроме как внутри методов, возвращающих перечисление.
А ещё интересно, сколько же на самом деле стоит перечислять элементы с помощью yield return? И можно ли лучше?
Enterprise проекты: что нужно знать разработчику?

Поговорим о том, что такое enterprise разработка, какие у enterprise проектов могут быть нюансы, и какие навыки нужно обрести для успешной работы в разрезе .NET стека.
Вклад авторов
sidristij 1681.2SergVasiliev 1163.0olegchir 1001.8n0mo 667.0sahsAGU 656.0marshinov 654.6tguev 652.6kekekeks 623.4Andrey2008 590.0
