Javascript 谷歌';s的soa架构-为google聚合内容';s的web用户界面

Javascript 谷歌';s的soa架构-为google聚合内容';s的web用户界面,javascript,design-patterns,architecture,soa,Javascript,Design Patterns,Architecture,Soa,登录谷歌后,谷歌主页会链接到多个其他服务(如Gmail、Play、Drive) Q1)是否有一种SOA模式描述了它们松散耦合每个服务的UI的方式,但同时还提供了标准菜单栏、标准外观和跨应用程序的单点登录 问题2)是否有任何文档描述其用于链接UI内容的体系结构 编辑 我看过Firebug,它似乎在菜单栏和应用程序之间存在双向关系。菜单栏有一个指向每个应用程序的链接,但每个应用程序也包括菜单栏 我可以将其与UI联系起来,在UI中应用程序可以对应用程序菜单做出贡献,但每个菜单都位于eclipse应用程

登录谷歌后,谷歌主页会链接到多个其他服务(如Gmail、Play、Drive)

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

问题2)是否有任何文档描述其用于链接UI内容的体系结构

编辑

我看过Firebug,它似乎在菜单栏和应用程序之间存在双向关系。菜单栏有一个指向每个应用程序的链接,但每个应用程序也包括菜单栏

我可以将其与UI联系起来,在UI中应用程序可以对应用程序菜单做出贡献,但每个菜单都位于eclipse应用程序的上下文中,eclipse应用程序聚合了所有单独的UI插件


那么谷歌是如何在用户界面上做到这一点的呢?看起来有一些javascript魔法正在进行,菜单栏被注入到每个应用程序中。

我不知道谷歌的情况,但我在做类似事情的网站上工作过。在一个例子中,它是一家大型房地产机构的网站,在世界各地都有办事处,主页(和其他页面)包括一个转盘,显示特定国家的内容,所有办事处都使用同一CMS的不同实例来管理自己的内容

发生的情况是CMS(.NET-based)使用自定义和用户控件(.ascx)文件来呈现最终的aspx页面。这些ascx文件(用于页眉、页脚和旋转木马)、与这些文件相关的所有样式和javascript(按照我们的约定放在一个称为_CSS和_JS的文件夹中)集中维护,然后复制到所有本地网站

CMS实例(特定于一个国家办事处)将创建自己的页面,但它们都使用中央应用程序提供的这些通用页眉和页脚

最后一点是保持所有这些同步,您需要某种代理或服务将这些公共组件传播到所有服务器和CMS实例,以确保它们都使用相同的控件、样式和javascript(样式和javascript可以集中引用,但自定义用户控件需要位于特定CMS的应用程序域中,至少在.NET中是这样)。我们使用Repliweb执行此类任务,但我对其细节不太熟悉

从架构的角度来看,我将其视为UI的某种插件架构,因此您可以将其与Eclipse架构联系起来。central 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()
    {

    }
}
Google在UI部分使用own:

什么是闭包库?

闭包库是一个广泛的、经过良好测试的、模块化的 跨浏览器JavaScript库。您可以从中提取所需内容 大量可重用的UI小部件和控件,以及来自较低级别的 用于DOM操作、服务器通信、动画和数据的实用程序 结构、单元测试、富文本编辑等

[……]

谁使用闭包库?

搜索、Gmail、地图、文档、网站、书籍、, 阅读器、博客、日历、谷歌+、照片


hawt.io项目有一个有趣的方法:

hawtio是高度模块化的,因此它可以准确地发现JVM中有哪些服务,并动态地更新控制台以向它们提供接口


链接不太清楚您在这里要求什么,请您澄清或缩小范围好吗?您的问题似乎集中在用户界面上,但这真的是您想要的吗?只需运行Firebug并跟踪下载和执行的文件,就可以了解用户界面资源的加载位置。有一个re还发表了几篇论文(由谷歌和其他公司发表)关于他们的单点登录解决方案。我同意David的观点,这些问题是写一本书的好人选,而不是给出一个简明扼要的答案。我已经编辑了这个问题,希望它现在更精确一点?这很好。你知道这个模式叫什么,或者可以叫什么吗?也许是“UI贡献模式”一旦这个模式有一个名字,它就更容易显示来自其他领域的方法,例如:或者我认为它是一个插件模式。从MSDN:插件模式是一种扩展类的行为的模式,它允许扩展到一个抽象类中,然后再插入到一个核心类中。这只是特定上下文中所需的功能。应该可以使用非基于类的语言实现相同的最终结果,因此我不想在讨论中排除这些方法。那么“UI插件模式”呢我认为应该这样做,只是微软的定义太狭隘了。你可以说UI插件来澄清上下文,但最后它仍然是一个插件模式。在GoF的书中,它说使用“插件”无论您的行为是否需要基于运行时环境的不同实现,这似乎符合这里的要求。问题在于前端/ui社区不像基于类的语言那样热衷于定义模式,但最终,同样的概念也适用(与Factory、Singleton和其他模式同样适用于非基于类的语言的javascript)是的,这是有道理的。我将获得另一篇关于stackoverflow的文章,尝试整理不同UI插件实现的目录。谢谢Kabaros。