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

Поддержка протокола Shared Memory для подключения Rider к Microsoft SQL Server

Description

Rider - IDE от JetBrains для разработки под платформу .NET. Он состоит из двух частей:

  • IntelliJ IDEA (frontend), написанная на Java\Kotlin
  • R# (backend) написанный на C#

Эти части соединяются по специальному протоколу и работают как единое приложение.

Для хранения данных в программах на .NET часто выбирают базу данных MS SQL Server. При этом задача IDE состоит в том, чтобы уметь устанавливать соединение с пользовательской базой данных, показывать и позволять редактировать схемы и таблицы, предлагать автодополнение в SQL коде и синхронизировать базу данных с проектами для хранение в системе контроля версий.

Для решения этой задачи в Rider сейчас подключена часть часть другого продукта JetBrains — DataGrip. DataGrip умеет устанавливать соединение с различными СУБД, в том числе с MS SQL, однако у используемого драйвера есть проблема: он не поддерживает shared memory protocol (популярный механизм подключения к MS SQL в .NET). Для доступа по другим протоколам пользователям приходится настраивать их серверное окружение, что неудобно, и не всегда возможно.

DataGrip написан на Java, и поэтому может использовать только драйверы СУБД, написанные на Java. А драйвера, поддерживающего shared memory protocol, на Java до сих пор не написали. Но существует такой драйвер, написанный на C#.

Поэтому для решения проблемы мы хотим реализовать свой адаптер для работы с БД на Kotlin, который не будет подключаться к неё напрямую, а будет вместо этого общаться с C#-бэкендом, который уже (с помощью готового драйвера) будет общаться с СУБД по протоколу Shared Memory.

В рамках задачи вам предстоит:

  • Разобраться и написать свой DataGrip адаптер на Kotlin-е. Адаптер не будет соединяться с базой данных напрямую, вместо этого он будет передавать все команды от IDE в наш протокол.
  • На стороне R# нужно реализовать фасад, который будет принимать команды из протокола, и через .NET библиотеку отдавать в базу данных.
  • Возможно, придется расширить используемую для общения с БД библиотеку, если в ней будут отсутствовать необходимые IDE функции.

В качестве бонуса после реализации такого механизма можно будет подключаться к любым базам данным, к которым написаны адаптеры на .NET, но не написаны на JVM. Например, к MS Access или MS Excel.

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

Вопросы по проекту можно присылать в телеграм @xtmq1

Requirements

Обязательные

  • Знание языка программирования C# и базовые представления об устройстве платформы .NET
  • Знакомство с языком SQL и базовые представления об устройстве баз данных
    Умение читать технические тексты на английском языке

Будет плюсом

  • Знакомство с платформой JVM и языками программирования Java и Kotlin
  • Опыт работы в JetBrains IDE: IDEA, Rider, DataGrip или любой другой
  • Опыт работы в MS Visual Studio, MS SQL Management Studio
  • Опыт работы с MS SQL Server или другой реляционной СУБД
  • Представление об алгоритмах и структурах данных
  • Представление об архитектуре распределенных систем

Admission

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

Mentor

Evgeniy Stepanov

Mentor's location

Remote

Product/Team

Rider

Tags

.NET
C#
Kotlin
SQL