登录Google后,Google主页会链接到其他多项服务(例如Gmail,Play,Drive)。
Q1)是否有SOA模式描述了他们为每个服务松散地耦合UI的方式,但同时还提供了标准菜单栏,标准外观和单个登录应用程序?
Q2)是否有可用的文档描述了用于链接UI内容的架构?
修改
我已经看过Firebug,看起来菜单栏和应用程序之间存在双向关系。菜单栏有每个应用程序的链接,但每个应用程序也包含菜单栏。
我可以将它与eclipse UI相关联,其中应用程序可以为应用程序菜单做出贡献,但每个菜单都存在于eclipse应用程序的上下文中,该应用程序聚合了所有单独的UI插件。
那么Google如何在用户界面中执行此操作?看起来有一些javascript魔法正在进行,菜单栏被注入每个应用程序。
答案 0 :(得分:3)
Google使用自己的Closure Library作为UI部分:
什么是Closure库?
Closure Library是一个广泛的,经过良好测试的模块化版本 跨浏览器的JavaScript库。你可以提供你需要的东西 大量可重用的UI小部件和控件,以及较低级别的小部件和控件 用于DOM操作,服务器通信,动画,数据的实用程序 结构,单元测试,富文本编辑等。
[...]
谁使用Closure Library?
搜索,Gmail,地图,文档,网站,图书, 读者,Blogger,日历,Google +,照片
答案 1 :(得分:3)
答案 2 :(得分:1)
我无法讲述谷歌,但我曾经在做类似事情的网站上工作过。在一个示例中,它是一个大型房地产代理商的网站,在世界各地设有办事处,主页(和其他页面)包括显示特定于该国家/地区的内容的轮播,所有办公室使用相同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()
{
}
}