2014-04-06 211 views
0

我們正在asp.net開發基於SAAS的移動應用程序。基於SAAS的移動應用程序

在我們的業務領域,我們有不同的公司和所有流程。每個公司都有不同的URL,當超級管理員將在前端創建公司,然後解析url以加載每個公司特定的徽標和其他設置。

我們對不同公司的網址管理感到困惑。我們應該如何處理不同的子網站點擊相同的物理位置?並請分享我們在開發基於SaaS的網站時必須遵循的其他指導方針。

回答

3

您即將開發的產品稱爲多租戶應用程序。這個正確的術語會讓你大量的信息。

當涉及到URL管理,有兩種做法:

從技術角度來看,無論是approches非常簡單。

在前一種情況下,有一點需要注意 - 每次添加新租戶時,都必須將新標頭綁定到現有的iis站點。這需要自動iis,無論是手動或自動,但仍然,在iis多個頭可以綁定到同一個網站。獲取當前請求的租戶名稱只是讀取HttpContext.Current.Request.Url的值。

在後一種情況下,創建新實例可能與在[tenant - > connectionstring]映射中創建新條目一樣簡單。獲取當前請求的租戶名稱涉及某種URL映射門面 - 如果網站是使用MVC或WebAPI開發的,則只需向路由條目添加一個附加段。

+0

謝謝:)的Wiktor我們想要去與第一種方法,能否請您分享,我們可以遵循一個全面的教程? – saira

+1

@saira:Google爲「ASP.NET多租戶」尋找大量信息。 –

5

通過URL標識租戶是開發SaaS應用程序的標準。

它也很簡單直接。根據我的經驗,我建議你以下內容

  1. 配置IIS站點以使用根級域(即yourawesomeapp.com)。這使得所有的子域請求都會碰到同一個站點。
  2. 存儲您的租戶網址,例如tenant1.yourawesomeapp.com,tenant2.yourawesomeapp.com等在你的租戶表
  3. 告訴你的租戶使用的URL來訪問應用程序
  4. 寫的HttpModule,在PostAuthenticateRequest事件抓住當前請求的URL,並與TenantURLMapping項驗證它(緩存URL < - >租戶映射應用程序啓動時的字典以提高性能)
    • 如果請求域不在TenantURLMapping中;拒絕訪問
    • 如果請求被認證,請驗證認證的租戶URL/ID與當前的相同,否則拒絕訪問(登錄時租戶url/id可以以加密格式存儲在cookie中)
    • 加載需要的設置並將它們存儲在HttpContext.Items中以在請求的後面部分中使用。
相關問題