Buscando orientación sobre el desarrollo de un sistema de control de versiones especializado

Trabajo en la industria de la architecture y la construcción, pero actualmente paso mucho time haciendo desarrollo de software. Después de mover mis proyectos de software a repositorys de Subversion, me di count de lo mucho que esta industria realmente necesita un sistema similar para documentos de layout y construcción. Solo he estado desarrollando software durante un año y medio, por lo que estoy lejos de estar calificado para asumir un proyecto como este. Pero todavía estoy interesado en intentarlo si nada más para la experiencia de aprendizaje.

Me gustaría desarrollar un sistema de cliente server que se ejecute a través de HTTP similar a SubVersion, pero en lugar de administrar files sin formatting, el sistema almacenará información de layout arquitectónico. Ya existe una especificación de esquema abierto para este tipo de datos llamados Industry Foundation Classes. Sin embargo, actualmente la información en este formatting siempre se almacena en files individuales, codificados como STEP o XML, y se comparten a través de serveres FTP simples.

En cambio, me gustaría desarrollar una forma de almacenar esta información en una database para que los subsets de datos puedan ser fácilmente consultados o actualizados. Además, me gustaría include la funcionalidad de control de versiones similar a la subversión, donde la database central rastrea los cambios a los datos como deltas, que también se pueden ramificar en múltiples opciones.

No quiero simplemente usar SVN, porque me gustaría que el sistema esté al tanto de los datos que contiene. Por ejemplo, un usuario puede querer consultar todas las panetworkinges desde el server. Sin embargo, para que eso funcione, el server deberá comprender que puede contener panetworkinges.

Obviamente, hay una serie de preguntas específicas que podría hacer con respecto a cómo debería hacerlo. Pero primero estoy tratando de entender el outlook general de cómo funcionará cada capa y con qué tecnología.

Hasta ahora solo he estado desarrollando aplicaciones independientes, principalmente en C # .Net. Así que soy nuevo en cualquier tipo de desarrollo de tipo networking / server / cliente. ¿Tendría sentido desarrollar una aplicación como esta como un service web .NET enganchado en una database de SQL Server? ¿Entonces las requestes al server se realizarían a través de SOAP, y los datos se devolverían como XML? SVN hace algo similar pero a través de WebDAV ¿correcto? Vea el diagtwig a continuación.

texto alternativo

No necesariamente me quedo atascado en el entorno Microsoft / C # / .NET, pero parece ser la opción más fácil dado que ya estoy bastante cómodo con él y Visual Studio y .NET WebService crearán automáticamente la funcionalidad SOAP. ¿Hay un Java equivalente a un service web .NET donde pueda enfocarme en el model de objects y no en la interfaz RCP? ¿Habría una ventaja significativa de usar un RCP distinto de SOAP como XML-RCP, JSON o REST?

Realmente me gustaría escuchar cualquier otro comentario de desarrolladores más experimentados sobre cómo abordarían un proyecto como este.

Este es un bocado bastante grande.

Yo recomendaría mirarlo de otra manera; ¿Podrías usar git / svn / hg / etc como un sistema de almacenamiento de contenido neutral, y tener un sistema complementario que escribas que pueda consultarlo por el contenido y realizar operaciones conscientes del contenido en su contra? De esta forma, no tiene que volver a resolver todos los problemas y puede pararse en el trabajo ya hecho y revisado, y las herramientas ya escritas se pueden usar para trabajar con los datos 'en bruto'.