2010-07-07 59 views
2

免責聲明,我是我公司的技術支持和系統管理員,而不是開發人員。我並不追求具體細節,只是一個想法,如果我想獲得成功或不可能。將多個電子商務軟件實例重構爲單個代碼庫

我們託管了我們內部傳統的ASP傳統電子商務軟件應用程序的數百個實例,並且由於客戶和我們自己的無數定製,版本管理是噩夢,自定義代碼無法管理,我們放棄了發佈新的功能和大量部署錯誤修復,因爲無法跟蹤哪些用戶需要哪些修補程序。

Parellel這個問題我做了管理腳本來更好地自動化這個。

但是我真正想做的是使用miniumum可能的努力,將應用程序代碼(不是數據庫)移植到單個代碼庫中。我有的問題:

  • ASP可以相對有效地處理連接到不同的數據庫,具體取決於被調用的主機頭?我計劃對例程進行一些基本擴展,獲取主機頭 在metadb中查找db憑證,相應地設置應用程序連接字符串邏輯。

  • 應用程序爲了緩存目的從數據庫中向Web服務器寫入一些文件,我想通過將其寫入類似/masterapp/customer1/specificfile.htm的文件來處理此行爲,然後更改引用to /specificfile.htm中的代碼更像/ masterapp/店名 /specificfile.htm。顯然,寫入specificfile.htm的例程會相應地寫入新的位置。這看起來合理嗎?

  • 其他網絡服務器的特定內容,如圖像和csv文件我需要繼續工作,沒有URL的理想變化,ASP可以使用邏輯重定向請求/images/example.jpg到/ masterapp/店名 /images/example.jpg或/ 店名 /images/example.jpg取決於主機標題?或者可以通過isapirewrite完成? (我們已經使用)

我認爲這些是最大的挑戰。我不需要一個完整的項目計劃來說明如何實現這些東西,我只想知道它是否可行。如果答案是肯定的,由於節省了支持時間,我應該可以將我的老闆出售給開發人員,我們的內部開發人員可能會希望對此進行管理。

回答

0

應該是可能的,我已經取得了類似的成果,從一開始就以這種方式開發的代碼。當你對此進行改進時,這將變得更加困難,但這與你的實際問題是分開的。

要回答你的實際點:

  • 想必你的數據庫連接字符串已處於應用變量或設置文件?如果是這樣,您只需在global.asa Session_OnStart中讀取主機頭並選擇適當的DB字符串即可。這可能是硬編碼,或者你可能有一個「控制」數據庫存儲網站,他們的數據庫字符串文件路徑等,並將細節拉入會話對象。

  • 這與上面的,從數據庫中拉你的緩存存儲位置,或者爲每個站點有一個「目錄名友好」的基本名稱,所以你可以有"/masterapp/" & Session("strSiteBaseName") & "/cache/somefile.htm"

  • 如果你在IIS7然後你可以使用URL重寫模塊來處理這個問題,如果你在IIS6上有第三方工具,你可以爲你做URL重寫。我已經這樣做了,因此可以擔保它的工作。如果你想變得非常聰明,你可以讓你的主應用程序爲你創建重寫文件,並「觸摸」web.config以將它們加載到IIS中。

一個「gotcha」,你將擁有主機頭記得處理www和no-www記錄!

您提到了每個站點的自定義代碼,我沒有在生產環境中完成此任務,而是在應用程序之外進行測試,並且可以在已經聲明之後重寫函數。你不能包含變量名,但你可以加載一個文本文件並執行它,所以有一種方法可以自定義函數,或更改特定於你的整個應用程序的單個實例的核心函數。