您是否尝试过对 GWT 客户端代码使用 MVC 或任何其他 UI 模式。您在不同方法中遇到的陷阱/优点是什么?

有帮助吗?

解决方案

我认为你需要像任何其他UI框架一样对待GWT,比如Swing,Cocoa等。在MVC(或其他范例)方面,那些在那些框架中有意义的东西在GWT中也是有意义的。我认为有时人们把MVC的东西放得太远了,我喜欢它在Cocoa中的工作方式比大多数框架更多。您创建一个视图,您有一个ViewController控制视图的所有行为,然后您拥有包含所有数据的模型对象。我不认为你需要对你的所有业务逻辑在哪里说教,它只需要在合理的地方。

就陷阱而言,您将遇到的主要问题是GWT纯粹是一种前端技术,因此从技术上讲,后端位于某个服务器上。我不认为这与编写客户端服务器swing应用程序有什么不同,它将数据存储在某个地方的云中。不同之处在于GWT被编译成javascript,并且具有javascript web应用程序的所有限制,因此会有一些你根本无法在前端做的事情。比如说你想要创建一个PDF并向用户显示,你不能在GWT中这样做,你需要调用后端来为你做。另一方面,在Swing应用程序中,您可以使用itext并在客户端执行此操作。

其他提示

问题<讨论了GWT的MVC模式/ a>,其中也有一个深入的链接博文

我唯一要补充的是,客户端代码的整体可以被认为是“V”。在“MVC”中,这可能会改变你对它的看法。将客户端代码视为自己的嵌套MVC组件,它是Java,它是面向对象的,所以它可以像Swing应用程序一样设计。我认为将尽可能多的Controller代码从View中拉出以处理GWT RPC的东西对你有利。模型有时会出现问题,因为您可能需要在服务器而不是客户端上决定是否需要它。或者创建模型代理等。

http://code.google.com/p/gwt-mvc/ 可以帮助你。

优点是:

  • 易于读取的控制器
  • 历史 代币管理
  • 控制器可以使用 JMock 进行测试(但不能使用 GwtTestCase)
  • 分层MVC
  • 简单的继承即可开始对视图、控制器和模型进行编码。

您是否尝试过GWTruts( http://sourceforge.net/projects/gwtruts/ ) ? 它也是一个开源的GWT MVC框架,它将GWT中的View和Controller分开

当GWT应用程序超越最小的项目时,使用某种MVC / MVP类型模式非常重要,否则您只是无法控制正在发生的事情。

除了已经提到的内容之外,还有我在这里看到的GXT的MVC实现: http://www.bristol-gtug.org/?p=45

去年Google IO上的这次演讲让很多人不再考虑GWT上的MVC / MVP: http://code.google.com/events/io/2009/sessions/GoogleWebToolkitBestPractices.html

我最近注意到GWT文档中现在还有一个关于MVP架构的教程,这是一个好的开始: http://code.google.com/webtoolkit/doc/latest/tutorial/mvp-architecture.html

您可以看一下 JetPad-Mappers,这是一个由 JetBrains 开发的简约 MVC 框架,并在多个(当前未发布)产品中使用。

免责声明,我参与了这个框架的开发。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top