gpt4 book ai didi

gwt - 为什么 GWTRPC *服务接口(interface)类进入 ".client"包而不是 ".shared"?

转载 作者:行者123 更新时间:2023-12-05 01:25:56 25 4
gpt4 key购买 nike

查看 GWT 示例应用程序和 RPC tutorial使用以下包约定:

./client/GreetingService.java
./client/GreetingServiceAsync.java
./server/GreetingServiceImpl.java

虽然 GWT 文档在最佳实践方面非常稀疏,哪些组件在运行时的位置包含在内,但清晰的直觉是:

  • 客户端 - 由 GWT 编译器编译成 JavaScript
  • server - javac编译成字节码
  • shared - 由 GWT 编译器编译成 JavaScript 由 javac 编译成字节码

这会让人相信 client 中的代码应该在 javac 的编译时源路径中。然而,由于 GreetingServiceImpl 实现了 GreetingService,显然 client 中的代码在编译期间需要位于源路径中,并在部署时包含在运行时类路径中。

鉴于此,为什么 GreetingService 接口(interface)不进入 shared

如果您尝试将其放入sharedGWT Eclipse Plugin提示“缺少异步接口(interface)”...

最佳答案

让我们试着说清楚:

  • clientshared 包之间没有技术 差异,只是约定俗成。两者都在您的模块中声明为源包(.gwt.xml 文件)
  • clientshared 包都被编译成 javascriptbytecode
  • 服务器端,整个客户端部分的字节码通常是可用的,尽管其中大部分未使用
  • 因此,有些人干脆去掉shared包,把所有东西都放在client包里。这是一个品味问题。
  • 正如 Thomas 所说,Service 接口(interface)必须可供您的客户端代码使用。所以它必须在 client 包或 shared 包中。但是 ServiceAsync 接口(interface)必须与 Service 接口(interface)在同一个包中。 ServiceAsync 当然不是被认为在 clientserver 之间共享的东西。所以ServiceASync接口(interface)应该在client包中。
  • 因此,Service 接口(interface)放在client 包中。
  • 在您的案例中,GWT Eclipse 插件 提示是因为在Service 接口(interface)包中找不到ServiceASync 接口(interface)。
  • 对于通过 RPC 发送的类,您仍然可以使用 shared 包。

这是否回答了您的问题?

关于gwt - 为什么 GWTRPC *服务接口(interface)类进入 ".client"包而不是 ".shared"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7216742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com