我有一個需求,我需要在2個域中託管相同的網站。 2之間的唯一區別是次要樣式差異(基本上只是徽標和標題),站點將駐留在何處以及數據庫的連接字符串(db結構將相同)。維護2個類似但不同的網站
我想這大概是與不同的stackexhange網站類似的要求。
什麼是創建和維護的最佳方式?我想避免有兩個完整的單獨解決方案,因爲這將成爲維護噩夢。有可能需要分別對兩個站點進行增強。
我的項目結構大致如下:
- Web項目(asp.net web窗體)
- 數據項目(EF進行數據訪問)
- 服務項目(從數據層返回數據並且處理任何計算)
這是我在想這樣做的方式:
- Web項目中的邏輯將根據訪問的位置顯示不同的樣式 。
- 爲具有不同連接字符串的2個域分別提供服務類。這將意味着服務層中有很多重複的代碼。
- 使用依賴注入可以輕鬆地更改部署時要使用的服務類。
喜歡的東西
ASPX:
<% if(domain) { %>
some html
<% } %>
aspx.cs:
[Inject]
public IService service { get; set; }
IService.cs:
public interface IService
{
string GetClients();
}
Service.cs:
public class DomainAService: IService
{
DbContext db = new DbContext("connectionStringA");
public string GetClients()
{
return db.Clients.ToString();
}
}
public class DomainBService: IService
{
DbContext db = new DbContext("connectionStringB");
public string GetClients()
{
return db.Clients.ToString();
}
}
此架構是否有意義?服務層中的重複邏輯是否有問題? 我不知道堆棧交換站點是如何做到的。
感謝您的回答...是啊,我越去想它不太我認爲有必要,除非有具體有在業務規則嚴重分歧單獨的服務類(即使到那時,可能是簡單的保留一個服務,檢查你所在的領域,就像你的例子)。 ToString只是爲了這個例子。 – woggles 2013-05-02 11:23:20
不客氣,謝謝你的回覆,祝你好運。 – 2013-05-02 12:44:16