Mat*_*ble 25 architecture model-view-controller mvp gwt puremvc
我刚刚为客户启动了一个新的GWT项目,我很想听听人们对各种GWT MVC架构的体验.在最近的一个项目中,我使用了GXT MVC以及自定义消息传递解决方案(基于Appcelerator的MQ).GXT MVC工作正常,但对GWT来说似乎有点过分,并且难以使用浏览器历史记录.我听说过PureMVC和GWTiger,但从未使用它们.我们的定制MQ解决方案工作得很好,但是很难用JUnit测试组件.
另外,我听说Google Wave(GWT应用程序)是使用Model-View-Presenter模式编写的.最近发布了一个示例MVP应用程序,但是看一下代码,它似乎并不直观.
如果您正在构建新的GWT应用程序,您将使用哪种架构?您选择的利弊是什么?
谢谢,
马特
Dhr*_*ruv 17
值得注意的是,谷歌终于写出了使用mvp架构进行设计的教程.它阐明了上面列出的google i/o talk中的许多元素.拿一个厕所:https://developers.google.com/web-toolkit/articles/mvp-architecture
Sak*_*aba 11
我很高兴这个问题被提出来,因为GWT desperatley需要一种类似于rails的结构化应用程序的方式.基于最佳实践的简单方法,适用于所有用例的90%,并且具有超级易测试性.
在过去的几年里,我一直在使用我自己的MVP实现,这是一种非常被动的观点,它将自己奴役到Presenter告诉他要做的事情.
我的解决方案包括以下内容:
视图获取对演示者的引用作为其构造函数参数,因此他们可以使用演示者初始化它们的事件.演示者将处理这些事件并通知其他窗口小部件/视图,或者调用gwt-rpc,成功时将其结果放入模型中.该模型具有典型的"Property [List [String]] names = ...."属性更改侦听器机制,该机制向演示者注册,以便gwt-rpc请求对模型的更新转发到所有视图/小部件感兴趣.
有了这个appraoch,我已经使用EasyMock为我的AsynInterfaces提供了非常简单的可测试性.我还能够轻松地交换视图/小部件的实现,因为我必须重写的是通知演示者某些事件的代码 - 无论底层小部件(按钮,链接等).
我的方法有问题:
我对这些问题的解决方案:
摘要:
我不认为可以使用单个"MVP"方法来处理整个应用程序.一个绝对需要应用程序导航的历史记录,像GXT-MVC这样的事件总线来连接/分离屏幕,以及MVP,以便轻松测试小部件的数据访问.
因此,我提出了一种结合这三个要素的分层方法,因为我认为"一事件 - mvp系统"解决方案不会起作用.导航/屏幕附加/数据访问是三个独立的问题,我将在接下来的几个月内重构我的应用程序(转移到GXT),分别为每个问题使用所有三个事件框架(工作的最佳工具).所有这三个要素都不需要彼此了解.我知道我的解决方案仅适用于GXT项目.
在编写大型GWT应用程序时,我觉得我必须在客户端上重新发明类似Spring-MVC的东西,这真的很糟糕,因为它需要花费大量的时间和脑力来吐出像Spring MVC那样优雅的东西.GWT需要一个应用程序框架,远远超过编译器工作人员如此努力的那些微小的JS优化.
| 归档时间: |
|
| 查看次数: |
12684 次 |
| 最近记录: |