Google IO 2009:GWT应用架构最佳实践

需积分: 3 4 下载量 46 浏览量 更新于2024-07-31 收藏 1.32MB PDF 举报
"GWT Architecture Best Practices.pdf 是2009年Google IO大会上关于Google Web Toolkit (GWT) 应用程序架构最佳实践的文档,重点关注客户端架构,并分享了新AdWords用户界面开发中的经验教训。文档的核心观点强调了正确处理浏览器历史、使用事件总线避免代码混乱以及依赖注入与模型-视图-呈现器(MVP)模式的优势。" 在GWT应用架构中,有三个主要的主题或最佳实践: 1. 拥抱异步性(Embrace Asynchrony): GWT应用程序常常需要进行远程过程调用(RPCs),这些调用通常是异步的。因此,设计时应假设所有操作都可能需要异步处理。这意味着组件不应阻塞等待服务器响应,而是采用回调或者Promise/Future等机制来处理结果。这有助于保持用户界面的响应性和流畅性。 2. 始终解耦(Always Be Decoupling): 为了提高代码的可维护性和可测试性,应用应尽可能地减少组件间的耦合。通过使用接口而不是具体的实现,可以更容易地替换或扩展功能。此外,模块化设计和独立的组件服务也有助于解耦。 3. 努力实现无状态(Strive to Achieve Statelessness): 尽量使服务器端保持无状态,这意味着服务器不保存特定会话的任何信息。这样可以提高可伸缩性,因为服务器可以更轻松地处理更多的并发请求。客户端应负责存储必要的状态信息,同时利用HTTP协议的无状态特性。 文档中还特别提到了两个关键点: - 正确处理浏览器历史(Get Browser History Right, and Get It Right Early): 浏览器历史管理是GWT应用中的重要一环,它允许用户通过前进和后退按钮导航。尽早设计并正确实现这一功能可以确保用户友好的导航体验,避免之后的重构困难。 - 使用事件总线(Use an Event Bus to Fight Spaghetti): 事件总线模式可以帮助组织和简化组件之间的通信。通过发布和订阅事件,可以避免直接引用和硬编码依赖,从而降低代码复杂度,提高可维护性。 - 依赖注入(Dependency Injection, DI)加上MVP模式(Dependency Injection plus Model/View/Presenter for the Win!): 依赖注入框架如Guice可以帮助管理对象的生命周期和依赖关系,而MVP模式则提供了一个结构化的架构,将视图、模型和处理用户交互的presenter分离开来,有利于代码的清晰性和测试。 新AdWords UI的开发经验教训强调了这三个主题的重要性,这些经验同样适用于其他复杂的GWT项目。遵循这些最佳实践,开发者可以构建出高效、可扩展且易于维护的GWT应用程序。