2013-02-15 146 views
0

我有一個現有的MVC應用程序,將在不久的將來由另一個用戶組使用。現有的和新的用戶組/程序都將具有獨立的數據。我只是想在表中添加標誌來區分這兩個用戶組/程序,並在訪問應用程序以提取相應數據時進行一些路由。內部網上的多租戶或多實例應用程序

現在談到代碼自定義,例如,一個組/程序希望在第一個組不想要的頁面上有額外的字段,或者應用程序的流程在兩個用戶組之間是分開的。

如果上述兩種情況會頻繁發生,我應該做一個新的Web和數據庫實例,而不是爲每個程序/用戶組定製代碼。這樣,我的兩個客戶/用戶組都可以靈活地爲應用程序添加不同的邏輯/字段。

我只看到非多租戶方法是開發人員花時間維護兩個獨立的應用程序。我害怕添加連續邏輯來爲每個不同的用戶組/程序定製相同的代碼庫。基礎設施成本不是問題。我也不希望這個應用程序在任何時候被超過2個用戶組/程序使用。那麼你們認爲我應該採取什麼樣的應對措施?爲什麼?感謝所有提前

P.S用戶arent任何忍者誰將嘗試破解該網站查看其他租戶數據。他們是企業用戶。 Theyd寧願不使用這個應用程序,而是使用它的一部分,所以他們必須使用它。

回答

3

這是值得看看微軟的多租戶article

我也在努力設計一個mvc應用程序,其中每個客戶端可以有不同的字段和自定義的屏幕。

我得出的結論是,使用具有多租戶支持的IOC容器可能會使整個事情變得更容易。

Autofac內置multi-tenancy support

就每個視圖中的客戶端邏輯而言,我認爲如果你走下IOC路徑,你可以爲每個租戶設置一個控制器,在這種情況下,硬編碼這種客戶端特定的邏輯不一定非常糟糕將它硬編碼到一個共享控制器。實質上,我相信在編寫針對某個特定租戶的組件時,您可以將其轉變爲寫作,就好像該租戶是唯一使用該系統的用戶一樣。

其他解決方案,我已經降落在自定義視圖是使用RazorGenerator方法已編譯的看法的變化,我必須編譯成一個單獨的組件,每個租戶意見,並創造了自己的視圖引擎(基於this),其中根據路由參數中的值,我可以換出我查找視圖的程序集。

當然,我仍在探索這種方法,並沒有完全沖洗它,以找出它可能不足的地方。

+0

您的IOC容器聽起來很明智。我目前的用戶羣接近150個用戶,並且在新的用戶組中增加了另外100個用戶。有了這個應用程序,即使我有另外兩三個新程序/用戶組,並根據他們的需要,我仍然可以在一個源項目下擁有所有東西。如果需要,使用不同的控制器,我甚至可以使用單獨的表格。我將進一步調查,看看實現有多容易。謝謝哥們! – 2013-02-15 06:45:34

2

如果2位用戶的需求差異超過屏幕/功能的10%,那麼最好有2個數據庫和應用程序。如果預計小於10%,則只需編寫單獨的操作(可能在操作名稱中使用不同的前綴或後綴),以獲取功能不同的位置。

+0

我明白了,謝謝你! – 2013-02-15 06:08:17

+0

不客氣! – 2013-02-15 09:34:35