我們正在開發一個「中間層」來替換現有的業務邏輯/數據訪問層。我們面臨的一個設計問題是,我們需要設計一個允許多客戶的數據庫和/或中間層作爲我們託管產品的一部分位於同一服務器上的方式。託管環境的數據庫模式和設置在這一點上是相當重要的,因爲它已經在生產中。實際上,在託管環境中的給定數據庫服務器上,每個客戶都有一個使用其唯一客戶ID命名的SQL Server實例。多租戶中間層架構
我們正在試圖決定的是,是否從客戶端應用程序到Web服務,業務邏輯以及每個客戶對數據庫的數據訪問都有單獨的路徑,或者擁有單個共享實例其中數據訪問層負責從正確的SQL Server實例或兩者之間的某處獲取數據。通過一條單一的共享路徑,如果任何一條路由器停止運行,所有訪問它的客戶端都會死在水中。另一方面,對於每個客戶而言,個人的道路還有(看似)更多的維護,除了可能過於複雜?下面是我們正在考慮的兩個選項一個可怕的ASCII藝術圖片:
[Client]--| |--[DB]
[Client]--| |--[DB]
|--> [Web Service] --> [Business Logic] --> [Data Access] ----|
[Client]--| |--[DB]
[Client]--| |--[DB]
或者這樣:
[Client] --> [Web Service] --> [Business Logic] --> [Data Access] --> [DB]
[Client] --> [Web Service] --> [Business Logic] --> [Data Access] --> [DB]
[Client] --> [Web Service] --> [Business Logic] --> [Data Access] --> [DB]
[Client] --> [Web Service] --> [Business Logic] --> [Data Access] --> [DB]
其中哪一個(或什麼-之間選擇)會比較好,爲什麼?
感謝您的回覆。我們實際上最終選擇了第二個,而不是因爲我們需要一大堆我們需要的定製東西,但是因爲它適合我們要做的事情。希望你沒有厭倦等待聽到你的回答。 – Zannjaminderson 2011-03-01 13:52:01