Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 架构/最佳实践-用于dto和x27的最佳方法/模式;GWT web应用程序中的s_Java_Gwt_Architecture_Dto - Fatal编程技术网

Java 架构/最佳实践-用于dto和x27的最佳方法/模式;GWT web应用程序中的s

Java 架构/最佳实践-用于dto和x27的最佳方法/模式;GWT web应用程序中的s,java,gwt,architecture,dto,Java,Gwt,Architecture,Dto,我认为最好是开始描述我正在做的事情,并在最后总结出一个大问题: 我正在用谷歌的GWT构建一个web应用程序,并封装了一些代码,以便在开发移动客户端时可以重复使用。到目前为止,我有以下项目: app.core-它包含所有数据对象(POJO),如BasketItem、UserAddress等 app.dao-数据访问。它引用了上面的项目,并具有类似ItemDAO的类,这些类负责与项相关的持久化,例如void persistItem(BasketItem项,User User) app.webapp-

我认为最好是开始描述我正在做的事情,并在最后总结出一个大问题:

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

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

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

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

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


你会怎么做?

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


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

自从上大学以来,我就没有解析和读取过HTTP请求。碰巧知道有关于RequestBuilder的好教程吗?对不起,没有。javadocs很好。你真正需要的教程是
AutoBean
,我想这里有一些。我通过
RequestFactory
文档了解到了这一点。出于好奇,我是否能够创建特定于GWT的DTO并扩展app.core DTO并实现IsSerializable?e、 公共类MyDTO扩展app.core.dto.MyDTO实现IsSerializable{}我不确定这是否会满足您的需要-当然,您可以扩展app.core类,但我不知道GWT-RPC是否会生成一种非GWT servlet可读的格式
AutoBean
不需要
IsSerializable
——这是使用它的另一个原因