2009-08-31 61 views
0

我正在寫一個非常簡單的ASP.NET MVC的Web應用程序:一對夫婦只CRUD頁面,某些文件夾,在這裏客戶可以瀏覽文件,只有3或4個角色。該網站將用於B2B場景中,每個客戶都有自己的「網站」。通過單一代碼庫支持多個網站的方法有哪些?

在這一點上,只有將改變網站,從客戶端到客戶端的東西是內容(即文件和他們將看到的數據行)。如果是這種情況,那麼在所有客戶中管理角色的最佳方式是什麼?我正在尋找最簡單的解決方案,因爲這是一個概念證明,我現在不想投入大量時間。

如果它不只是改變了內容?也許有些客戶需要一些自定義靜態頁面。在這一點上,我唯一的選擇是複製整個網站嗎?我對此持懷疑態度,因爲如果我得到很多客戶,它將很難維持。

我會很感激任何幫助......我只是不想拍自己的腳;我確信有人以前做過這個。

回答

0

我不知道這完全回答你的問題,但只要保持自定義「靜態」的頁面,我發現自己實現一個客戶端的MVC網站上的系統,客戶端可以創建自己的管理控制面板「的頁面」每個頁面都有一個由「標題」和HTML內容字段(使用WYISWYG編輯器填充)組成的「PageContent」實體集合。在創建頁面後,MVC應用程序將http://yoursite.com/Page/Page-Url-Specified-By-The-User映射到該頁面並在其中呈現其內容。很明顯,這些頁面是動態的,但是就客戶端而言,他們已經創建了一個全新的自定義頁面,只需很少的努力即可。

+0

好主意。然而,我現在最關心的是角色管理。 – 2009-08-31 16:12:22

1

我在IIS中創建虛擬目錄爲每一個客戶,都指向回在我的ASP.NET代碼所在的同一文件夾中。

這讓我支持幾十個幾乎相同的「網站」,每個都有自己的數據庫,該數據庫在形式上基本相同,只是在不同的數據。

所以,我的網站的網址是這樣的:

http://mysite.com/clientacme/ 
http://mysite.com/clientbill/ 
http://mysite.com/clientcharlie/ 

有兩個關鍵執行細節我制定了這一點:

  1. 我用的是虛擬目錄的文件夾名稱確定DSN我代碼讀取。這是通過創建一個簡單的靜態方法來實現的,該方法將文件夾名稱注入到DSN字符串模板中。如果您想要使用相同的數據庫來存儲每個人的數據,則可以將該文件夾名稱用作查詢中的默認過濾器。

  2. 我在每個數據庫(key,value)的簡單「設置」表中存儲每個網站(頁眉和頁腳,選項,鏈接到自定義報告等)的設置,而不是在web.config中(這是共享的)。這使我可以隨着時間的推移擴展代碼庫,以便爲每個客戶端定製體驗,而不需要分叉代碼。

對於用戶身份驗證,我使用基本身份驗證,並將用戶名,密碼和角色保存在每個數據庫的表中。

重要的是,如果你使用不同的SQL Server數據庫爲每個客戶端的內容,你需要腳本到數據庫中的表,索引等任何更改,並在同一時間在所有數據庫應用它們(後當然測試)。這樣做的一個簡單方法是維護一個包含數據庫名稱表和頂部大「SQL」單元格的Excel工作表。在每個數據庫名稱旁邊,創建一個公式爲「USE databasename;」然後連接頂部的SQL代碼。

+0

雖然我喜歡這個想法,但我認爲不得不維護多個數據庫實際上比維護多個站點更困難。然而,這絕對值得考慮。 – 2009-08-31 15:51:20

+0

如果你確實需要(我這樣做),你只需要維護多個數據庫。使用單個數據庫也可以實現同樣的功能,只需使用列來標識特定行數據與哪個站點相關聯,然後根據文件夾過濾視圖。 – richardtallent 2009-08-31 16:20:32

相關問題