2012-03-30 73 views
0

我甚至不知道這是否可能,但我想我會問。可能爲多個網站的子域使用一個代碼庫?

我正在創建一個小的CRUD應用程序,但我有多個網站。每個網站都會使用CRUD。該應用程序將具有通用的CRUD方法和樣式,但每個單獨的網站將應用不同的表單。我想避免創建多個僅在特定內容中變化的CRUD應用程序(只是不同的形式)。

我想有這樣的事情:

mycrud.website1.com 
mycrud.website2.com 
mycrud.website3.com 

我可以爲每個單獨的站點沒有問題的一個子域。但將所有子域指向一個MVC應用程序目錄是否可行?如果有可能對我如何限制網站1的用戶看到網站2或網站3的內容有任何建議?那些「角色」可以照顧(認證用戶後)嗎?

謝謝。

回答

0

首先 - 容易的部分是有一個網站的所有三個領域。您只需使用DNS條目就可以做到這一點。沒問題。所有三個域應指向相同的IP。

就內容而言,您可以通過多種方式來實現。我認爲你對角色的想法非常穩固。如果有必要的話,它也讓給定的用戶看到來自site1和site2的內容的可能性。

如果您不想強制用戶進行身份驗證,您應該查看其他選項。您可以將您的CRUD邏輯和數據訪問邏輯封裝到單獨的庫中,並在IIS中的三個不同站點上使用它們。您可以擁有一個網站並根據請求網址顯示內容。可能還有很多其他選項。

+0

感謝您的提示。我正在挖掘最後一段,因爲它碰到了我正在考慮的事情:有一些lite-CRUD我想要做,但是在考慮我別無選擇,只能將它放在主CRUD中並要求進行身份驗證。你有沒有建議/鏈接如何完成不強迫用戶根據請求URL驗證/顯示內容? – REMESQ 2012-03-30 13:27:39

+0

該URL將在請求對象下的控制器中可用。這是MVC框架的一部分。我會建議設置一個基本控制器來嗅探URL並設置一個名爲CurrentSite的屬性(或類似的東西)。然後,您可以將您的控制器更改爲從您的基本控制器繼承。 (你的基礎控制器應該繼承自Controller)。然後,您的控制器將可以訪問這些屬性,並可以基於這些屬性顯示內容。 – Trent 2012-03-30 13:54:39

+0

這篇文章包含了一個設置基本控制器的例子(儘管他正在爲此進行國際化)。 http://afana.me/post/aspnet-mvc-internationalization.aspx – Trent 2012-03-30 13:57:23

1

有很多網站都這樣做,而不僅僅是MVC。一些內容農場將* .mydomain.com指向一個IP,並在IIS中有一個通配符映射。

從那裏,你的應用程序應該查看URL來確定它應該做什麼。一些CMS系統以這種方式運行,使用域作爲決定要加載哪些頁面的關鍵。

我已經構建了一個專用SAS應用程序(軟件即服務),允許我們將所有客戶端託管在一個應用程序中。某些客戶端可以對頁面或功能進行自定義。我們可以通過爲每個客戶端創建自定義插件來處理這些插件,以便在需要時覆蓋控制器或視圖。

所有的客戶端共享一個共同的代碼庫,除了每個客戶端自定義主題/模板他們是相同的。只有當客戶有我們自定義一個功能,我們需要建立他們的插件DLL。現在,這是先進的東西,所以它需要對代碼庫進行大量修改,但最終如果它是您的應用程序需要它是100%可能的。

相關問題