【问题标题】:Architechture/Best Practice - Best method/pattern to use for dto's in GWT web app架构/最佳实践 - 在 GWT Web 应用程序中用于 dto 的最佳方法/模式
【发布时间】:2012-03-08 03:04:40
【问题描述】:

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

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

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

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

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

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

你会怎么做?

【问题讨论】:

    标签: java gwt architecture dto


    【解决方案1】:

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

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

    【讨论】:

    • 我从大学开始就没有解析和阅读过 HTTP 请求。碰巧知道 RequestBuilder 上有什么好的教程吗?
    • 对不起,没有。 javadocs很好。你真正需要的教程是AutoBean,我认为周围有一些。我是通过RequestFactory 文档了解到的。
    • 出于好奇,我能否创建 GWT 特定的 DTO 并扩展 app.core 并实现 IsSerializable?例如公共类 MyDTO 扩展 app.core.dto.MyDTO 实现 IsSerializable {}
    • 我不确定这是否会满足您的要求 - 当然您可以扩展 app.core 类,但我不知道 GWT-RPC 是否会生成非可读的格式GWT 小服务程序。 AutoBean 不需要 IsSerializable - 另一个使用它的理由
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 2013-05-07
    • 2022-01-16
    • 2010-11-26
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多