您是否尝试过将MVC或任何其他UI模式用于GWT客户端代码。您在不同方法中遇到的缺陷/优势是什么?
您是否尝试过将MVC或任何其他UI模式用于GWT客户端代码。您在不同方法中遇到的缺陷/优势是什么?
我认为你需要像任何其他UI框架一样对待GWT,比如Swing,Cocoa等。在MVC(或其他范例)方面,那些在那些框架中有意义的东西在GWT中也是有意义的。我认为有时人们把MVC的东西放得太远了,我喜欢它在Cocoa中的工作方式比大多数框架更多。您创建一个视图,您有一个ViewController控制视图的所有行为,然后您拥有包含所有数据的模型对象。我认为你不需要教你所有的业务逻辑,只需要在合理的地方。
在陷阱方面,您将遇到的主要问题是GWT纯粹是一种前端技术,因此从技术上讲,后端位于某个服务器上。我不认为这与编写客户端服务器swing应用程序有所不同,后者将其数据存储在某个地方的云中。区别在于GWT被编译成javascript,并且具有javascript web应用程序的所有限制,因此会有一些你根本无法在前端做的事情。比方说,例如,您想创建一个PDF并向用户显示,您不能在GWT中执行此操作,您需要调用后端为您执行此操作。另一方面,在Swing应用程序中,您可以使用itext并在客户端执行此操作。
这里讨论了GWT的MVC模式 题,这也与此有深入的联系 博客文章。
我唯一要补充的是,整个客户端代码可以被认为是“MVC”中的“V”,这可能会改变你看待它的方式。将客户端代码视为自己的嵌套MVC组件,它是Java,它是面向对象的,所以它可以像Swing应用程序一样设计。我认为将尽可能多的Controller代码从View中拉出以处理GWT RPC的东西对你有利。模型有时更成问题,因为您可能必须决定是否要在服务器而不是客户端上使用它。或者创建模型代理等。
http://code.google.com/p/gwt-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框架,用于几个(目前未发布的)产品。
免责声明,我参与了这个框架的开发。