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

Пользователь

Отправить сообщение

Пример микросервисной архитектуры с Saga на MassTransit

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

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

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

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

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

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

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

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

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

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

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

Domain-Driven Design: тактическое проектирование. Часть 2

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


Здравствуйте, уважаемые хабрапользователи! В предыдущей статье мы рассмотрели стратегическое моделирование с помощью подхода DDD. В ней было показано, как выделять концептуальные границы, в рамках которых решаются отдельные задачи предметной области – ограниченные контексты.

Для реализации конкретного ограниченного контекста используется ряд более низкоуровневых тактических шаблонов, которые имеют технический характер, то есть эти шаблоны используются для решения технических задач. Такими шаблонами являются: сущность, объект-значение, службы предметной области, события, модули, агрегаты, фабрики и хранилища. Именно о них пойдет речь в этой статье.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии27

Блеск и нищета модели предметной области

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


Мартин Фаулер в книге «Patterns of Enterprise Application Architecture» описывает «Модель предметной области (Domain Model)» как сложный подход к организации бизнес-логики. Метод заключается в создании классов, соответствующих объектам предметной области из реального мира как с точки зрения структуры данных, так и поведения. При этом технические аспекты, такие как хранение данных, аутентификация и авторизация, управление транзакциями, выносится за пределы слоя бизнес-логики. Паттерн реализуется одним из двух способов:

  1. Богатая (насыщенная) модель — данные и поведение инкапсулируются внутри объектов предметной области.
  2. Анемичная модель — в объектах предметной области инкапсулируются только данные, поведение (методы) выносится в отдельный слой сервисов.

Фаулер и Эванс считают анемичную модель анти-паттерном. Однако многие кодовые базы, с которыми мне доводилось работать, реализованы именно в стиле «анемичной» модели. Под катом расшифровка и видео моего доклада с DotNext 2019 Moscow, посвященного сравнению сильных и слабых сторон обоих подходов и не очевидным деталям реализации модели предметной области в парадигме ООП и в функциональном стиле.
Читать дальше →
Всего голосов 36: ↑34 и ↓2+45
Комментарии46

Краткий справочник по «всем-всем» командам Linux

Уровень сложностиСредний
Время на прочтение80 мин
Количество просмотров178K

Периодически меня на начальном курсе просят дать "список всех-всех команд с кратким описанием что делает"... Ну прям "всех-всех". И ведь если искать в интернете "такие" справочники существуют - либо про "20-30 команд, но самых важных", либо с неточностями и устаревшей информацией. Так что предлагаю вашему вниманию свою версию такого "краткого" справочника (на 300, 515, 612, 716, 842, 1005, 1171 команд) с ссылками на wiki-описание и на cheat.sh-примеры наиболее важных команд.

Справочник по всем-всем командам LINUX
Всего голосов 105: ↑102 и ↓3+120
Комментарии114

Обзор нововведений в C# 12

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров28K

Уже середина осени, а это значит, что новая версия C# на пороге. Самое время узнать, какие изменения настигнут язык совсем скоро. Хоть количество нововведений в этот раз уступает предыдущим релизам, интересных среди них немало.

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

EF Core. Как 1 строчка может добавить x4 к быстродействию запросов к БД?

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров19K

Многие, кто использует EF Core в работе в качестве ORM (Object-Relational Mapping) встречаются с множеством прелестей этого инструмента.

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

Читать далее
Всего голосов 13: ↑6 и ↓7+2
Комментарии35

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

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

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

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

Оптимизация DevOps: Как персональные стенды и Grafana улучшают разработку и мониторинг

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров9.9K

Всем привет, меня зовут Зуев Алексей, и я работаю DevOps-инженером в компании Bimeister! Сегодня я расскажу вам о том, как мы облегчаем жизнь нашим разработчикам и как разработчик может отследить состояние своего микросервиса в namespace Kubernetes. Основная цель этой статьи - описать, как мы пришли к дашборду для персональных стендов разработчиков.

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

Алгоритмы балансировки нагрузки в .NET. Кэширование и Rate Limiting в Ocelot, сравниваем со стандартными средствами .NET

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

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

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

Читать далее
Всего голосов 7: ↑5 и ↓2+3
Комментарии17

Принципы SOLID vs KISS. Как найти баланс?

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров17K

Привет, Хабр! Сегодня я хотел бы поделиться опытом, как писать код так, чтобы системы в проекте были с одной стороны гибкими, а с другой — простыми и компактными.

На самом деле, когда нужно реализовать новую фичу в проекте, необходимо соблюдать баланс между простотой и гибкостью...

Читать далее
Всего голосов 9: ↑4 и ↓5-1
Комментарии40

Синхронизация операций в .NET на примерах

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров12K

Всем привет. Сегодня я расскажу об инструментах, которые существуют в .NET для параллельной работы с какими-то внешними ресурсами и приведу примеры, где и как их можно применить.

При параллельной работе с каким-то ресурсом, нам нужно синхронизировать доступ к нему, чтобы не попасть в состояние годнки или банально не перегрузить его. Для этого в .NET существуют следующие вещи:

Читать далее
Всего голосов 14: ↑10 и ↓4+7
Комментарии26

Dependency Injection контейнеры .NET, допускающие полиморфное поведение

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров14K


Иногда случается так, что при разработке приложения на платформе .NET с внедрением зависимостей и сервисами от контейнера требуется поддержка полиморфного поведения.

Когда, например, у интерфейса есть несколько реализаций, и их нужно грамотно расфасовать по правильным конструкторам так, чтобы всё из коробки работало.

Однако стандартный DI контейнер платформы долгое время не давал этой возможности.

В рамках этой статьи я решил напомнить альтернативы для решения этой задачи на тот случай, если вы ещё не успели переехать на .NET 8 или работаете в каком-нибудь Иннотехе, где в наличии только зеркало NuGet-пакетов, выпущенных до начала 2022 года.
Читать дальше →
Всего голосов 41: ↑38 и ↓3+54
Комментарии147

Чистая архитектура на примере

Уровень сложностиПростой
Время на прочтение27 мин
Количество просмотров51K

Познакомил друга с понятием "Чистая архитектура" и он стал часто спрашивать меня как лучше сделать то или другое. Хотел дать ему к какому-нибудь туториал, но, к удивлению (плохому), не нашел подходящего.

Поэтому выкладываю небольшой обзор:

1.. Что такое чистая архитектура;
2.. Как можно реализовать;
3.. Мои мысли.

Читать далее
Всего голосов 13: ↑11 и ↓2+11
Комментарии23

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность