I work in the architecture and construction industry, but currently spend a lot of my time doing software development. After moving my software projects into Subversion repositories I've realized how much this industry really needs a similar system for design and construction documents. I've only been developing software for a year and half, so I'm far from qualified to take on a project like this. But I'm still interested in attempting it if nothing else for the learning experience.
I'd like to develop a server client system that runs over HTTP similar to SubVersion, but rather then managing raw files the system would store architectural design information. An open schema specification already exists for this type of data called Industry Foundation Classes. Yet currently information in this format is always stored in individual files, encoded as STEP or XML, and shared over simple FTP servers.
Instead I'd like to develop a way to store this information in a database so that subsets of the data can be easily queried or updated. In addition, I'd like to include versioning functionality similar to subversion where the central database tracks changes to the data as deltas, which can also be branched into multiple options.
I don't want to simply use SVN, because I'd like the system to be aware of the data it contains. For example a user may want to be able to query all the walls from the server. Yet, in order for that to work the server will need to understand that it may contain walls.
Obviously there are a number of specific questions I could ask regarding how I should go about this. But first I'm trying to figure out the big picture of how each layer will work and with what technology.
So far I've only been developing stand alone applications, primarily in C#.Net. So I'm new to any kind of network/server/client type development. Would it make sense to develop an application like this as a .NET Web service hooked into a SQL Server database? So requests to the server would be made through SOAP, and the data would then be returned as XML? SVN does something similar but through WebDAV correct? See the diagram below.
I'm not necessarily stuck on staying in the Microsoft/C#/.NET environment but it seems like the easiest option given that I'm already pretty comfortable with it and Visual Studio and a .NET WebService will automatically create the SOAP functionality. Is there a Java equivalent to a .NET Web service where I can focus on the object model and not the RCP interface? Would there be a significant advantage of using a RCP other then SOAP such as XML-RCP, JSON, or REST?
I'd really like to hear any other feedback from more experienced developers on how they would approach a project like this.