GWT Architecture BestPractices.pdf
### GWT架构最佳实践 #### 引言 GWT(Google Web Toolkit)是谷歌于2006年推出的一款开源工具包,它允许开发者使用Java编写客户端应用,并将其编译成浏览器可执行的JavaScript和HTML代码。随着Web开发技术的发展,GWT逐渐成为构建大型、复杂的Web应用程序的重要手段之一。本篇文档摘自2009年的Google I/O大会,重点讨论了GWT应用程序架构的最佳实践。 #### 关键知识点 **1. 浏览器历史管理的重要性** 文档反复强调了一个关键点:“正确处理浏览器历史,并且尽早处理。”在Web应用中,特别是那些具有多个页面状态的应用程序,正确的浏览器历史管理至关重要。这不仅能够提升用户体验,还能够确保用户能够在不同页面间进行有效的导航。例如,当用户点击后退按钮时,他们期望回到之前的状态或页面,而不是被重定向到某个不相关的页面。因此,在设计和实现GWT应用时,应该将浏览器历史管理作为一项核心任务来对待。 **2. 使用事件总线(Event Bus)来避免“意大利面条式”代码** 文档建议使用事件总线模式来组织和管理GWT应用程序中的事件处理逻辑。通过这种方式,可以有效地减少组件之间的直接耦合,使得代码更易于维护和扩展。在没有事件总线的情况下,组件之间可能会出现大量的相互引用,导致难以追踪的问题和维护困难的情况。而采用事件总线,则可以将事件的发送者与接收者解耦,使得每个组件只需关注自身职责即可。 **3. 依赖注入 (Dependency Injection) + MVP 模式** 文档推荐使用依赖注入(Dependency Injection, DI)结合模型-视图-呈现器(Model/View/Presenter, MVP)模式来构建GWT应用。这种组合不仅可以提高代码的可测试性和可维护性,还能使架构更加清晰。依赖注入可以帮助管理组件间的依赖关系,减少硬编码,而MVP模式则提供了一种将业务逻辑与用户界面分离的方法,使得界面变化不会直接影响到业务逻辑层。 **4. 接纳异步操作** 文档还提到了三个主要的主题之一:接纳异步操作。这一点特别重要,因为现代Web应用往往需要频繁地与服务器进行交互。这意味着几乎所有的数据操作都可能涉及异步调用。文档建议始终假设每个操作都是异步的,这样可以避免未来可能出现的问题。例如,如果一开始就把某些操作当作同步的,那么后期转换为异步时就可能遇到很多挑战。 **5. 始终保持解耦** 持续解耦是另一个重要的原则。文档建议始终保持各个模块之间的解耦,以便于未来的扩展和维护。这意味着尽量减少组件间的直接依赖,而是通过接口和抽象来进行通信。这样做的好处是可以更容易地替换组件或者修改系统的一部分而不影响其他部分。 **6. 力求无状态** 力求无状态是指尽量减少在客户端存储状态信息。这样做可以减少内存消耗并提高性能。文档给出了一个具体的例子,即在Contact类的设计中,不直接返回ContactDetail对象列表,而是返回ContactDetailId列表。这样一来,当需要获取具体的ContactDetail时,可以通过异步调用来实现,从而避免了不必要的内存消耗。 **7. 使用命令模式处理异步操作** 文档还提到了使用命令模式(Command Pattern)来处理异步操作,使得异步操作变得更加容易管理。通过定义一系列的命令接口和具体命令类,可以将异步请求封装起来,使得代码更加整洁并且易于理解。 ### 结论 通过遵循这些最佳实践,可以构建出更加健壮、易于维护和扩展的GWT应用程序。尽管这些原则是在2009年提出的,但它们对于当今的Web开发仍然具有很高的参考价值。
剩余91页未读,继续阅读
- 粉丝: 30
- 资源: 24
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助