技术开发 频道

eBay的表示层架构与Eclipse

    【IT168技术分析】
    eBay权威人士Michael Galpin在IBM开发者网站上发表了一篇包含两部分的文章,讲述了eBay广泛使用Eclipse插件和代码生成器以改善开发者体验和代码质量。

第一篇文章讲述了eBay从之前基于Perl的表示层架构迁移到现在的Java版本——即我们熟知的V4——的进化过程: 

 “V4架构采取的方式是利用后端强类型的Java对象来表示前端使用的任何东西。你的页面使用图片吗?那么就有一个针对该图片的Java对象。如果你想删除该图片,其复杂程度和删除任何其他Java类一样。对于超链接、CSS及JavaScript来说同样如此。V4没有使用servlets或者JSPs来创建HTML。相反,实际的HTML DOM是以Java语言表示的,因此你可以在服务器端把CSS和JavaScript捆绑在一起。

其中最困难的地方——内容——怎么样呢?V4的内容系统是独特且强大的。它使用它自己的基于XML的语言来创建内容契约。单词契约的选择是有意图的。契约定义了创建变化的内容单元所需要的数据。例如,一个特定的单元在英语中可能需要一个整数和一个字符串(如“Raymond has 4 cars”),但是在另一门语言中却需要两个整数和一个字符串。对于性别和基数来说更是如此。契约用XML来定义这些内容。接下来由一个特定的应用/页面/组件所支持的每种语言分别去实现契约。当然,它必须要转化为Java中的强类型对象,这样当使用时就会提供所有的动态数据(就像上面提到的“Raymond”和“4”)。因为万物皆是强类型的Java对象,所以它们就要遵循编译的规则。如果应用开发者没有在其Java代码中提供那两个参数,那么代码就无法通过编译。

这篇文章继续讲述了eBay是如何实现构成应用的不同语言的Java表示。JavaScript作为原生代码并且由Java代理,一开始会使用CSS文件,但是随后就被Java的class文件替换掉了,该class文件在运行时会产生出CSS,内容契约XML也被转化为Java,凡此种种。这种eBay模式的核心点在于使用Eclipse代码生成器以进行这些繁琐的转换。eBay已经开发出了一个Eclipse插件以将每种源文件(JavaScript、CSS、XML)转化为其相应的Java表示,并且还提供一个自定义编辑器来处理气特有的XML格式。这篇文章以一个示例结束:针对V4组件运行一个eBay实例,并在Eclipse中直接打开该组件。

第二篇文章讲述了eBay如何联合使用XML文件格式和另一个私有插件以管理其项目依赖。XML文件插件使得Eclipse产生必要的项目和classpath文件,根据其XML契约,第二个插件提供了XML编辑器。

eBay不但开发自己的Eclipse插件,他们还使用很多第三方插件。不得不提的两个插件是进行源代码控制的Rational ClearCase插件以及静态代码分析工具FindBugs,eBay使用FindBugs来部分验收其所有源代码。

这其中一个重要方面就是Eclipse平台的开源本性。既然源码是开放的,对于eBay来说将其私有的插件集成到IDE里面就是非常直接的了。

查看英文原文:eBay's Presentation Architecture and Eclipse
0
相关文章