2010-08-12 62 views
0

我在建築和建築行業工作,但目前我花了很多時間在軟件開發上。將我的軟件項目轉移到Subversion版本庫後,我意識到這個行業真的需要類似的系統來設計和構建文檔。我只開發了一年半的軟件,所以我沒有資格參加這樣的項目。但是,如果沒有其他的學習經驗,我仍然對嘗試它感興趣。尋找指導開發專門的版本控制系統

我想開發一個運行在類似於SubVersion的HTTP上的服務器客戶端系統,而是管理原始文件,系統將存儲架構設計信息。這種稱爲行業基礎類的數據已經存在一個開放模式規範。然而,目前這種格式的信息總是存儲在單獨的文件中,編碼爲STEP或XML,並通過簡單的FTP服務器共享。

相反,我想開發一種方法將此信息存儲在數據庫中,以便可以輕鬆查詢或更新數據的子集。另外,我希望包含類似於subversion的版本管理功能,其中中央數據庫將數據更改作爲增量進行跟蹤,也可以分成多個選項。

我不想簡單地使用SVN,因爲我希望系統知道它包含的數據。例如,用戶可能希望能夠從服務器查詢所有的牆。然而,爲了實現這一點,服務器需要了解它可能包含牆。

很明顯,我可以問一些關於如何去做這件事的具體問題。但首先我想弄清楚每個圖層的工作方式和技術的全貌。

到目前爲止,我只開發獨立應用程序,主要是在C#.Net中。所以我是任何一種網絡/服務器/客戶端類型開發的新手。將這樣的應用程序開發爲一個連接到SQL Server數據庫的.NET Web服務是否有意義?所以對服務器的請求將通過SOAP完成,然後數據將作爲XML返回? SVN做了類似的事情,但通過WebDAV正確嗎?見下圖。

alt text

我不一定停留在留在微軟/ C#/。NET的環境,但它似乎是因爲我已經用它和Visual Studio和.NET程序很舒服最簡單的選項WebService將自動創建SOAP功能。是否存在與.NET Web服務等效的Java,我可以專注於對象模型而不是RCP接口?使用除SOAP之外的RCP,比如XML-RCP,JSON或REST會有什麼顯着優勢?

我真的很想聽聽更多有經驗的開發人員對他們如何接近這樣的項目的任何反饋。

+1

從維基百科條目引用IFC引用:「項目支持版本控制,其中任何基於IfcRoot的實體都有一個唯一的標識符,並且可能被標記爲添加,修改,刪除或沒有更改,這種功能允許合併多個IFC文件確定性地確保數據完整性而無需人工干預。「 – rwong 2010-08-12 06:52:31

回答

1

這是一個相當大的一口。

我建議以不同的方式來看待它;你可以使用git/svn/hg/etc作爲一個內容中立的存儲系統,並且有一個你可以查詢的補充系統,可以查詢它的內容並對它進行內容感知操作?這樣,您不必重新解決所有問題,並且可以站在已經完成和審覈的工作上,並且已編寫的工具可以用於處理「原始」數據。

+0

是的,我確實意識到這是一個很大的挑戰,我知道我可以使用像SVN這樣的現有系統來進行版本控制,然後創建一個自定義的SVN接口,所以如果用戶想要修改所有的版本69系統會向SVN請求69版本,然後過濾掉牆壁,問題是它並不真正瞭解數據如何改變,用戶可能希望能夠找到什麼對象(牆,門,窗等)在兩個修訂版本之間進行了修改,也許最好在後臺最好使用像SVN這樣的現有系統? – 2010-08-12 04:22:25

+0

在Subversion中添加「pre-commit hooks」,以便每次提交新的更改時, -party IFC工具用於提取此版本中所有實體(牆)的純文本列表以及每個實體(牆)的詳細信息的校驗和。將此文件與爲此版本提交的任何內容一起提交。檢查fo r更改,只需在此文件上運行「svn blame」即可。 – rwong 2010-08-12 06:47:05