2015-05-21 50 views
2

我們公司正在尋求從遺留系統更改爲重建C#中的所有內容。多年來,我們從原始數據庫改爲擁有Oracle後端。現在我們有一個3層的開發,測試和生產環境。 (我們正處於培訓的開始階段,所以這可能是一個愚蠢的問題,但試圖確保我們從一開始就遵循最佳做法)。如何通過C#動態選擇並連接到Oracle

我們的大部分程序都是像Windows Forms應用程序構建的,而不是Web根據。在每個應用程序開始時,開發人員會選擇是否需要開發,測試或生產。某些用戶可以獲得測試或生產選項。所以實質上它們可以在同一個位置運行完全相同的應用程序,其中一個會話指向Test,另一個指向Production。每個應用程序會話都會一直保持與Oracle的連接,直到應用程序關閉。 (我們正在計劃在適當的時候採用更好的方法來連接和斷開連接,但總是開放會話,我們過去沒有選擇)

因爲我們正在學習C#,所以我們有連接到數據庫的測試,有工作。這裏的另一位開發人員正在研究設置* .config文件,這些文件在打開並回答問題時會被覆蓋。但我一直在試圖找出其他人如何處理這種情況,你可以多次打開同一個exe文件,並與你選擇的任何數據庫進行對比。我的假設是,你可以使用不同的* .config分別具有相同的* .exe文件夾。但不知道這是否是真正實現這一目標的最優雅的方式。

我們知道,我們將不得不應對很多思維方式的變化,而不是「這是它過去如何工作......」只是想確保我們從正確的方法開始。

回答

0

我們有三個測試數據庫在三臺oracle服務器上運行。每個數據庫都鏈接到我們的後端辦公室的不同測試版本以及面向Web GUI的前端客戶端和衆多其他腳本。爲了處理這個問題,我們設置了八個不同的文件系統,每個文件系統一個,並且寫了一個簡單的腳本,將文件系統映射到用戶pc上,並在本地複製後臺exes。因此,用戶只需點擊他們想要的任何數據庫,驅動器就會被映射,並將exes複製下來。生產是完全分開的。

說實話,這個系統很簡單,但它工作得很好。將新代碼部署到中央存儲庫,並要求用戶重新映射其驅動器以拾取新的.exes。如果有人需要重新測試舊版本,他們可以在本地刪除exes,而不是每個人都更改整個數據庫。

這可能是值得創建緊急補丁測試的另一個測試實例,它是生產的確切副本,還有第四個實例用於新版本在生產之前進行迴歸測試,因爲測試環境可能會很快失去同步,從而使迴歸變得痛苦。

0

這可能是一個懶惰的解決方案,但我在我們的環境中具有相同的情況,並且我們通過三個獨立的啓動項目(一個用於生產,測試和開發)來解決問題。這些項目非常輕量級,只需設置一個環境屬性啓動啓動窗體,而這兩者都在「真實」項目中。

作爲額外的好處,這確實簡化了我們的點擊一次部署,因爲我們可以獨立管理構建。

到目前爲止,我還沒有遇到這種方法的任何缺點,儘管可能有人會告訴我有更好的方法。如果我聽到了,我就會全神貫注。

從本質上說,雖然,我建議是不是有可以連接到任何的三種環境中的一個應用,你有相同的應用程序的三個不同的部署。

有一個單獨的應用程序,可以連接到多個數據庫實例真的不應該是一個大問題 - 如果這是你真正想要什麼......只是有一個具有用戶從列表中選擇一個啓動對話批准的環境,建立連接並在整個解決方案中使用連接。

在一個不相關的事,看看開發藝術的dotConnect。如果您爲一家公司(可以爲其付費)並且正在使用Winforms,那麼可以爲您節省一些針對ODP.net的部署難題。託管的ODP.net是一種改進,但它還不支持Oracle的一些更強大的功能,如批量插入/更新。

0

隨着我們越來越深入到c#中,我們討論並討論了各種連接字符串作爲設置等。隨着我們對錶格適配器和實體的瞭解越來越多,它越來越複雜,以確保在整個整個應用。最後,我發現這個網站和示例http://thecodemonk.com/2010/07/29/global-application-settings-override-now-with-examples/(它有一個c#和vb示例)

因此,我使用上面的示例與彈出式組合對話框來選擇使用桌面應用程序時適當的環境。到目前爲止,它似乎正是我所需要的。

感謝所有的反饋!