Internships
Register
Copyright © 2000—2025 JetBrains s.r.o.

Верификация проектов .NET на соответствие соглашениям CQRS

Description

ReSharper - плагин для повышения продуктивности разработки на .NET в Visual Studio, включающий в себя средства статического анализа для поиска ошибок и проблем в исходном коде.

Rider - новая кроссплатформенная IDE для .NET, которая использует ReSharper в качестве бэкенда.

Архитектурный паттерн CQRS (Command query responsibility segregation) предполагает разделение методов на методы-команды, которые могут изменять данные, и методы-запросы, которые могут читать данные. Таким образом обеспечивается разделение ответственности между моделями чтения данных и изменения данных (вплоть до физического разделения базы данных на быструю базу данных для чтения и отдельную базу данных для хранения сырых данных, и реализации паттерна Event Sourcing).

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

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

Для этого нужно будет:

  • изучить популярные cqrs-фреймворки;
  • предложить систему аннотаций для разделения методов на commands и query;
  • реализовать кросспроцедурный анализ для определения того, что query не запускают команды и наоборот;
  • реализовать анализы для контроля выполнения соглашений по именованию.

Не стесняйтесь задавать вопросы:

  • в telegram: @retran
  • на e-mail: andrew.vasilyev@jetbrains.com
  • в twitter: @retran

Requirements

Для работы над проектом понадобятся:

  • C#;
  • алгоритмы и структуры данных.

А еще желание разобраться как устроены и работают:

  • архитектура современных энтерпрайз приложений;
  • статический анализ, синтаксические деревья, кросспроцедурные анализы.

Admission

Разработчики: Лето 2021

Mentor

Alexander Petrovsky, Alexander Ulitin, Andrew Vasilyev

Mentor's location

Remote

Product/Team

ReSharper

Tags

.NET
C#