我不能說谷歌,但我曾在網站上做過類似的事情。在一個例子中,這是一個在全球設有辦事處的大型房地產機構的網站,主頁(和其他網頁)包括一個顯示國家特定內容的傳送帶,所有辦事處都使用同一個CMS的不同實例管理自己的內容。
發生什麼事是CMS(基於.NET)使用自定義和用戶控件(.ascx)文件來呈現最終的aspx頁面。這些ascx文件(用於頁眉,頁腳和旋轉木馬),與這些文件相關的所有樣式和JavaScript(放置在無法操作的文件夾中,按照我們的慣例稱爲_CSS和_JS)集中維護,然後複製到所有本地網站。
特定於一個國家/地區辦公室的CMS實例將創建自己的頁面,但它們都使用中央應用程序提供的這些常用頁眉和頁腳。
圖片的最後一部分是保持所有這些同步,您需要某種代理或服務來將這些常用組件傳播到所有服務器和CMS實例,以確保它們全部使用相同的控件,樣式和javascript(樣式和javascript可以被集中引用,但是自定義用戶控件需要在特定的CMS的應用程序域中生存,至少對於.NET而言)。我們使用Repliweb來完成這些任務,但我對它的細節並不是很熟悉。
從架構的角度來看,我認爲它是UI的某種插件架構,因此您將它與Eclipse架構相關聯是正確的。中央CMS是一種抽象類型,提供了特定站點實例必須遵守並實施的接口。
abstract class GoogleSite
{
Control Header { get; set; }
Control Footer { get; set; }
public string Title { get { return "Default title"; } }
public abstract void ProvideContents();
}
class Gmail: GoogleSite
{
//still using same header and footer but Title is different
override public string Title { get { return "Gmail"; } }
public override void ProvideContents()
{
}
}
class GPlus: CentralCMS
{
//Another CMS not overriding the title but Providing different contents
public override void ProvideContents()
{
}
}
而不是你在這裏問什麼很清楚,可以請你澄清或縮小它?你的問題似乎集中在用戶界面上,但這真的是你想要的嗎?只要運行Firebug並跟蹤下載和執行的文件,就會發現很多關於用戶界面資源從哪裏加載的信息。 Google和其他人也發表了幾篇關於他們的單點登錄解決方案的論文。 – 2012-10-15 23:39:41
我同意戴維的觀點,這些問題是編寫一本書的好人選,而不是給出一個令人滿意的答案。 – 2012-10-16 06:26:58
我編輯了這個問題,希望現在有點更精確? – 2012-10-16 06:30:33