Pull to refresh

Ортогональная персистенция, Sieben Geisslein

Статья содержит перевод нескольких текстов о продукте под названием Sieben Geisslein, который, по словам автора, предоставляет возможность разработчику использовать все преимущества ОП.

Для затравки, 20-минутный скринкаст от автора. Остальное — под хабракатом.

7G Screencast from Niklas Mehner on Vimeo.

Новые направления в программировании


Задумывались ли вы о том, что бы вы сделали если бы вы могли приступить к программированию и реализации среды выполнения приложений (AEE) с нуля? Разобраться во всем, и закончить разработку сегодня же?

Действительно ли грамматики — подходящий базис для языков программирования? Почему мы до сих пор работаем с файлами? С разделением объектов и связей (O\R)? Почему обновление приложения всегда выливается в такую нервотрепку? Действительно ли нынешние инструменты работают лучшим образом?

Почему мы говорим всем использовать MVC, но в случае с языками программирования, мы все еще используем наши «модели» (описанные с помощью текста) для описания вида? Должны ли мы вместо этого использовать более подходящую модель (например, АСД)?

Большинство IDE уже делают это в фоновом режиме, но все они до сих пор несут бремя фактически редактирования текстовых файлов, а текстовой файл и модель должны быть синхронизированы, но это сложно и ведет к ошибкам. Почему добавление утверждений (statements) отображается на всем? Они нужны вам для хорошо определенной компиляции, но вы не хотите на самом деле их видеть. Вы можете расширить АСД новыми выражениями для поддержки DSL, и не должны заботиться об определении синтаксиса и работе с существующими языками программирования.

В общем, я начал думать обо всем этом некоторое время назад, в 2002 году, и решил попробовать найти свое собственное решение этих проблем. Результат я назвал «SiebenGeisslein».

Одна из основных фич — ортогональная персистенция: это значит, что каждый объект существует «вечно». Каждая операция выполняется в транзакции. В GUI каждое событие отслеживается в собственной транзакции, в веб-серсисе каждый вызов будет иметь свою собственную транзакцию. Если транзакция не удается, все откатывается. Так приложение всегда восстанавливается в стабильное состояние.

А теперь следующий вопрос: как реализовать поддержку эволюции классов? Что произойдет, если добавить новые поля, переименовывать поля, переименовать класс, изменить тип поля? IDE Feder отслеживает все изменения в классах и автоматически создает код миграции для этих изменений. Он также позволяет специфицировать миграции выражений для полей. Более поздние версии также будут поддерживать создание модульных тестов для проверки миграции между версиями.

Исходные коды не основаны на файлах (например, в противном случае отличить операцию «переименовать поле» от удаления и последующего добавления поля будет невозможно). Редактор работает непосредственно на модели исходного кода. Это позволяет легко интегрировать запросы и поддерживает сохранение типов расположения данных приложения с таким же успехом.

Вместо того чтобы полагаться на СУБД, SiebenGeisslein имеет свои табличные структуры. Они по-прежнему очень простые, но я считаю, что гораздо легче решать объектно-реляционные проблемы согласования, если у вас уже есть постоянные объекты, так как в этом случае вам нужно лишь включить те свойства объекта в реляционной модели, которые вам интересны и просто игнорировать свойства, которые не подходят модели.

Результат моих изысканий — SiebenGeisslein, open-source платформа для разработки приложений с применением ОП. В SiebenGeisslein можно разрабатывать ортогонально персистентные, многопользовательские приложения, доступные из любой точки мира, использующие веб-модель; и приложения «горячего развертывания» (это относится и к применению клиентов).

SiebenGeisslein еще далека от завершения, но я только что выпустил новую версию альфа v0.75.

О SiebenGeisslein (оф. описание)



Sieben Geisslein является платформой для реализации ортогонально персистентных приложений или сервисов.

Для Вас, как разработчика, что означает, что вы больше не должны заботиться о сохранении данных. Нет ORM, нет СУБД, только объекты. Изменяйте их как вам нравится, и после перезапуска приложения, они будут на месте.

Sieben Geisslein также не использует контрольных точек, как PJama, но полностью поддерживает транзакции. Когда нужно обработать большой объем транзакций (как в GUI приложениях, где каждое событие обрабатывается в отдельной транзакции), используются "оптимистичные транзакции".

Она также включает значительно улучшенную поддержку эволюции классов. Проблемой во многих существующих подходах к эволюции классов (или в мире СУБД: таблиц) является то, что большая часть информации об изменениях теряется в процессе развития. Должны быть написаны скрипты миграции, и многие усилия направляются на поддержание существующих данных и кода, использующегося для синхронизации. Обновление приложения до новой версии может стать серьезным препятствием.

Sieben Geisslein решает этим проблемы, запоминая всю информацию о рефракторинге в процессе разработки. Переименование поля обрабатываются так же прозрачно, как и простое изменение типа.

Конечно, некоторые изменения все же требуют письменной миграции кода (например, разделение имя поля «имя» на «имя» и «фамилия»). Это поддерживается в Feder, и вся логика миграции входит в генерируемое приложение. Не нужны скрипты для установки, но все обновления всё равно обрабатываются прозрачно.

Другая область, которая почти полностью игнорируется остальными средами разработки, — данные. Sieben Geisslein позволяет определить данные в IDE (Feder). Это позволяет привязывать эти данные к коду приложения таким образом, что эта связка (данные-код) может быть проверена во время компиляции.

Особенно в разработке GUI отсутствие поддержки создания данных в существующих средах разработки привело разработчиков к упорному созданию GUI, как сгенерированного исходного кода. Feder сохраняет структуру GUI как есть, без необходимости конвертировать её в исходный код и обратно.

Предоставляя решение этих проблем, существующих в области разработки ПО, я надеюсь, что Sieben Geisslein поможет повышению производительности труда разработчиков и снимет утомительные и приводящие к ошибкам задачи.

От переводчика


На сайте автора сего чуда информации совсем немного. Последнее обновление датировано 2007-ым годом. Полезные ссылки:

Материалы


Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.