Найти тему
Монолит против микросервисов: разбор архитектурных решений и выбор оптимального подхода для вашего проекта
В современном мире разработки веб-приложений выбор архитектуры становится критически важным для успеха проекта. Одни проекты начинают с монолита, а затем вынуждены переходить на микросервисную архитектуру из-за роста масштабов и усложнения бизнес-логики. Другие же сразу выбирают распределённую систему, чтобы обеспечить гибкость и масштабируемость. В этом посте мы разберём, в чем состоят ключевые различия между монолитом и микросервисами, каковы преимущества и недостатки каждого подхода, а также какие компромиссы и проблемы возникают при миграции...
1 месяц назад
Вредные советы для начинающих разработчиков C#
Если вы вдруг решили стать великим разработчиком C#, вот вам список вредных советов. Следуя им, вы гарантированно обеспечите своему коду головную боль, а себе – славу главного разрушителя продуктивности! Зачем вам эти скучные буквы? Вместо них пишите один огромный класс, который будет и базу данных обновлять, и PDF-документы генерировать, и еще отправлять письма . Чем больше ответственности у одного класса, тем лучше – ведь так его можно гордо назвать "МегаГлобальныйКласс". Зачем вам внедрение зависимостей? Создавайте все экземпляры классов внутри методов...
3 месяца назад
SOLID: Понимание Принципа Инверсии Зависимостей (DIP)
Мы подошли к последнему принципу из набора SOLID — Принципу Инверсии Зависимостей (Dependency Inversion Principle, DIP). Этот принцип является ключевым для создания гибких и легко расширяемых систем, позволяя уменьшить зависимость высокоуровневых модулей от деталей реализации. Определение DIP: Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба типа должны зависеть от абстракций. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций. Проще говоря, это...
3 месяца назад
SOLID: Понимание Принципа Разделения Интерфейса (ISP)
Продолжая наше путешествие по принципам SOLID, мы подошли к четвертому принципу — Принципу Разделения Интерфейса (Interface Segregation Principle, ISP). Этот принцип помогает разработчикам создавать более гибкие и поддерживаемые системы, особенно когда дело касается работы с интерфейсами и абстракциями. Определение ISP: Клиенты не должны зависеть от интерфейсов, которые они не используют. Проще говоря, интерфейсы должны быть разделены на более специфичные, чтобы клиенты зависели только от тех методов, которые им действительно нужны...
3 месяца назад
SOLID: Понимание Принципа Подстановки Барбары Лисков (LSP)
Продолжая наше знакомство с принципами SOLID, теперь мы рассмотрим третий принцип — Принцип Подстановки Барбары Лисков (Liskov Substitution Principle, LSP). Этот принцип играет ключевую роль в построении надежных и гибких объектно-ориентированных систем. Определение LSP: Объекты в программе должны быть заменяемы экземплярами их подтипов без нарушения корректности работы программы. Проще говоря, если у вас есть класс Base, и класс Derived наследуется от Base, то вы должны иметь возможность использовать Derived вместо Base без каких-либо проблем...
3 месяца назад
SOLID: Понимание Принципа Открытости/Закрытости (OCP)
Если вы интересуетесь разработкой программного обеспечения, вы, вероятно, слышали о принципах SOLID. Это пять основополагающих принципов объектно-ориентированного программирования, которые помогают создавать гибкие, масштабируемые и поддерживаемые системы. Сегодня мы рассмотрим второй принцип — Принцип Открытости/Закрытости (Open/Closed Principle, OCP). Определение OCP: Программные сущности (классы, модули, функции и т.д.) должны быть открыты для расширения, но закрыты для изменения. Это означает, что вы должны иметь возможность расширять поведение системы, не изменяя существующий код...
3 месяца назад
SOLID: Понимание Принципа Единственной Ответственности (SRP)
Если вы когда-нибудь сталкивались с разработкой программного обеспечения, возможно, вы слышали термин "SOLID". Это набор из пяти принципов, которые помогают разработчикам создавать более гибкие, масштабируемые и поддерживаемые системы. Сегодня мы погрузимся в первый из этих принципов — Принцип Единственной Ответственности (Single Responsibility Principle, SRP). Определение SRP: У класса должна быть только одна причина для изменения. Это означает, что каждый класс или модуль в вашей программе должен отвечать за одну и только одну часть функциональности...
3 месяца назад
Шаблоны успеха: как паттерны проектирования делают ваш код лучше
В мире разработки программного обеспечения понятие "паттерны проектирования" занимает особое место. Это проверенные временем решения общих проблем, с которыми сталкиваются разработчики при создании приложений. Будучи архитектором на .NET с 15-летним стажем, я неоднократно убеждался в важности знания и правильного применения этих паттернов для создания масштабируемого, поддерживаемого и эффективного кода. В процессе развития программирования стало очевидно, что многие проблемы повторяются из проекта в проект...
3 месяца назад
Паттерн Null Object в C#: Когда отсутствие объекта — это решение
Null Object Pattern (паттерн «Нулевой объект») — это поведенческий шаблон проектирования, который предоставляет объект со стандартным нейтральным поведением вместо null. Вместо того чтобы возвращать null и заставлять клиентский код проверять на наличие значения, используется специальный объект, который не выполняет никаких действий или выполняет действия по умолчанию. В объектно-ориентированном программировании часто возникает ситуация, когда методы или функции могут возвращать null вместо объекта...
3 месяца назад
Microservices: Как работает связка API Gateway, Service Discovery и микросервисы: подробный разбор
В современном микросервисном архитектурном стиле взаимодействие между клиентами и сервисами организуется с помощью нескольких ключевых компонентов: API Gateway, Service Discovery и сами микросервисы. Рассмотрим полный жизненный цикл запроса, описывая, как эти компоненты взаимодействуют между собой. API Gateway (например, Ocelot) является критически важным компонентом в микросервисной архитектуре. Он выступает в роли единой точки входа для всех клиентских запросов к системе микросервисов...
5 месяцев назад
Clean Code: Искусство создания чистых методов (Часть 2)
Одним из ключевых аспектов чистого кода является написание "правильных" методов. Правильно спроектированные методы делают код более читабельным, поддерживаемым и простым для тестирования. Для себя я выделил 9 основных принципов написания качественных методов. 1. Понятные Имена Используйте осмысленные и самодокументирующиеся имена методов, которые отражают их назначение. Плохо: public void DoStuff() { // Логика метода } Хорошо: public void CalculateMonthlyRevenue() { // Логика расчета ежемесячного дохода } 2...
5 месяцев назад