Здравствуйте, Дмитрий Писаренко, Вы писали:
ДП>Здравствуйте!
ДП>Мне нужно сделать механизм хранения версий инстанций класса SomeClass.
...
ДП>Этот механизм должено позволять записывать версии таким образом, что
ДП>в базе данных (или на диске) хранятся только отличия между 2 версиями.
ДП>Вопрос: Существуют для этого готовые библиотеки, которые можно использовать
ДП>в коммерческих проектах?
Ответ: Может быть стоит посмотреть в объектных хранилищах типа db4o или
Matisse. Ну или прикрутить поддержку SVN (
Svn.NET) для хранения сериализованых объектов в локальном репозитории.
Ну вобщем, удачи в поисках
Здравствуйте!
Мне нужно сделать механизм хранения версий инстанций класса SomeClass.
public class SomeClass
{
// Свойства класса (public)
public string Description {get; set;}
// Свойств может быть сколько угодно
...
// Дополнительные данные
public List<Row> Rows {get; set;}
}
public class Row
{
public string X {get; set};
public string Y {get; set};
...
public int InternalRevision {get;set;}
public int OfficialRevision {get;set;}
}
Этот механизм должено позволять записывать версии таким образом, что
в базе данных (или на диске) хранятся только отличия между 2 версиями.
Вопрос: Существуют для этого готовые библиотеки, которые можно использовать
в коммерческих проектах?
Заранее благодарен
Дмитрий
Здравствуйте, Gremlin2, Вы писали:
G>Здравствуйте, Дмитрий Писаренко, Вы писали:
ДП>>Здравствуйте!
ДП>>Мне нужно сделать механизм хранения версий инстанций класса SomeClass.
G>...
ДП>>Этот механизм должено позволять записывать версии таким образом, что
ДП>>в базе данных (или на диске) хранятся только отличия между 2 версиями.
ДП>>Вопрос: Существуют для этого готовые библиотеки, которые можно использовать
ДП>>в коммерческих проектах?
G>Ответ: Может быть стоит посмотреть в объектных хранилищах типа db4o или Matisse. Ну или прикрутить поддержку SVN (Svn.NET) для хранения сериализованых объектов в локальном репозитории.
Я не хотел бы сериализировать объекты, т. е. я хочу хранить изменения в базе данных в виде записей — что когда изменилось.
То есть, в базе данных должен хранится
1) первая версия объекта и
2) несколько записей изменений.
* * *
Желательно, чтобы этот механизм универсальным, т. е. его можно было
применять к любым классам.
В связи с этим у меня есть 2 идеи:
1) Сделать несколько абстрактных классов/интерфейсов, которые описывают общую
логику версионирования. Когда надо сделать механизм версионирования реальных
данных, надо дописывать методы.
2) Сделать генератор кода, который будет делать исходный код классов для
версионирования, а также юнит-тестов автоматически.
Вопросы к присутствующим:
1) Есть ли другие принципиальные возможности реализовать
универсальный механизм версионирования?
2) Какая из предложенных альтернатив кажется Вам лучшей?
Заранее благодарен
Дмитрий