Implementando la funcionalidad de control de versiones

¿Hay algún enfoque recomendado para implementar la funcionalidad de control de versiones accesible para los usuarios finales de una aplicación comercial?

El objective es crear un sistema de control de versiones robusto para una aplicación donde los usuarios modifiquen objects comerciales (en lugar de text).

No estoy buscando recomendaciones sobre el software de control de versiones para desarrolladores (por ejemplo, SVN, Git, etc.), sino más bien bibliotecas o mejores prácticas para exponer el control de versiones a los usuarios finales.

Idealmente, me gustaría permitir la edición concurrente con el locking de escritura, un sistema de deshacer-rehacer (o confirmaciones y revocaciones locales), etc.

¿Alguien ha intentado algo como esto? ¿Hay alguna biblioteca (.NET) que pueda ayudar con esto?

Eche un vistazo a CSLA , es un marco de objects comerciales que tiene soporte N-level Undo-Redo.

También analizaría CQRS, que puede ayudarlo a mantener todos los estados por los que pasó un object comercial.

No conozco ninguna biblioteca preparada, pero echar un vistazo al patrón de command puede ser útil. Aquí hay un punto de partida.