谷歌的soa架构 - 聚合谷歌的网络用户界面的内容

Chr*_*now 8 javascript architecture soa design-patterns

登录Google后,Google主页会链接到其他多项服务(例如Gmail,Play,Drive).

Q1)是否有SOA模式描述了他们为每个服务松散地耦合UI的方式,但同时还提供了标准菜单栏,标准外观和整个应用程序的单点登录?

Q2)是否有可用的文档描述了用于链接UI内容的架构?

编辑

我已经看过Firebug,看起来菜单栏和应用程序之间存在双向关系.菜单栏有每个应用程序的链接,但每个应用程序也包含菜单栏.

我可以将它与eclipse UI 相关联,其中应用程序可以为应用程序菜单做出贡献,但每个菜单都存在于eclipse应用程序的上下文中,该应用程序聚合了所有单独的UI插件.

那么谷歌如何在他们的UI中做到这一点?看起来有一些javascript魔法正在进行,菜单栏被注入到每个应用程序中.

kab*_*ros 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()
    {

    }
}
Run Code Online (Sandbox Code Playgroud)