架构/最佳实践 - 在 GWT Web 应用程序中用于 DTO 的最佳方法/模式



我认为最好开始描述我正在做的事情,并在最后把它放在一起,回答一个大问题:

我正在用谷歌的GWT构建一个网络应用程序,并封装某些代码,以便在开发移动客户端时重用。到目前为止,我有以下项目:

app.core-它有所有的数据对象(POJO),如BasketItem、UserAddress等

app.dao-数据访问。这引用了上面的项目,并具有类似ItemDAO的类,该类负责与项目相关的持久化,例如void persistItem(BasketItem项目,用户用户)

app.webapp-GWT网络应用程序。这包括了以上两个类别。我在客户端/服务器和服务器之间使用GWT-RPC方法调用DAO来保存/检索/任何数据app.server-一个RESTful服务器应用程序,它也使用DAO,DAO将提供一个基于REST的接口,用于对移动/其他客户端执行相同的数据操作

问题:如果GWT实现了GWTs IsSerializable,那么GWT最擅长在客户端/服务器之间传递数据对象(事实上,当我使用Serializable时,我会遇到问题)。但是,我不想将与GWT相关的jar添加到app.core项目中,也不希望app.dao等依赖于IsSerializable。如何在整个应用程序中最好地封装dto,同时仍然使用IsSerializable,因为它在GWT中工作得最好。我应该继续扩展app.webapp中的核心对象并实现IsSerializable吗?

你会怎么做?

我决定将GWT完全排除在服务器代码之外。你提到了原因,实际上——你说的是实现GWT-RPC接口,然后实现做同样事情的REST接口。我决定只做一个REST接口,避开GWT-RPC和RequestFactory,使用POJ DTO。GWT的AutoBeanRequestBuilder在Json和Java之间的移动做得非常好。我认为,避免客户端和服务器之间的直接连接(除了通过POJO DTO)要简单得多,也更干净。当我想调整操作的一个小方面或添加缓存或其他东西,以便能够直接进入并执行时,这也很好

另外,我的API的外部文档基本上只是来自我的内部访问器方法的javadoc!

相关内容

最新更新