3

我目前正处于(非常)小型数据库应用程序的研究阶段。

这是一个本地慈善机构,它只有 3 或 4 台将运行系统的客户端机器 - 但是为了将一些无关逻辑从客户端移开,我倾向于使用三层架构(有数据是在适当的时候不断通读和更新,客户不需要知道)

即客户端<->服务器逻辑<->数据库

虽然我能够胜任 Java 本身和一些框架/库,但我并不特别熟悉哪些框架可以帮助我。显然我将使用 JDBC 作为数据库的一半,但客户端和服务器之间的通信是目前的绊脚石 - 例如,我真的不想去靠近原始套接字的任何地方(矫枉过正,或者至少是另一个解决方案必须存在)

我已经询问了一些我知道的开发人员对使用哪些 API 的看法,虽然他们非常有帮助,但我仍然不太确定该去哪里。到目前为止,我已经听说过 RESTful 的东西、SOAP、COBRA 和一大堆其他技术。SOAP 是引起我注意的主要问题(因为有一些很好的例子可以将它与普通应用程序一起使用,而不仅仅是在网络上),但我仍然不确定该去哪里——它似乎并不特别适合一般应用程序像这样的目的应用程序(EJB 也出现了,但我听到很多针对它的仇恨 - 这是应得的吗?)

感觉好像为了找到“工作的最佳工具”,我实际上需要完整地学习每一个工具以“获得”它们(这显然是不切实际的)

任何人都可以指导我如何选择这样的 API(当我以前没有使用过它们时)或者给我一些常见的信息,或者这真的只是一个试验大量它们以查看哪些适合的案例最好的?

或者也许我完全错过了标记并且有一个针对这种确切情况而没有明显缺点的框架?

非常感谢您的帮助。

编辑:

完全忘记提及它实际上做了什么:它并不是非常复杂——慈善机构运行一个运输计划,所以它保存了司机、客户、司机里程记录等的详细信息,以供查看和编辑。唯一真正复杂的是驱动器,因为可以将驱动程序分配给可以预见的“永远”持续的重复(持续)驱动器。但是正在进行的驱动器的每个实例都必须是唯一的,因为它们可以单独取消或编辑

我选择 3 层的主要原因是因为作为一个慈善机构(有许多不太“精明”的老年志愿计算机用户),我很可能会经常更新 UI 以消除错误和不“对新手用户来说非常清楚。所以我的计划是首先让服务器和数据库之间的后端绝对“防弹”,然后将我所有的注意力集中在 UI 上,这样我就可以继续开发和迭代它而不用担心后端(也是因为我将远程开发它的一部分,将更新集中在客户端稍微简单一些)

所有这些属性都可能大喊“做一个基于 Web 的系统”——这里的障碍是,它们与已经运行的一些应用程序进行了各种棘手的集成,我不相信我可以(正确地)完成网络应用程序。

4

2 回答 2

2

对于服务器本身,您需要某种 JavaEE 服务器。

这里的常见实现是GlassFish(参考实现)和Apache Tomcat ……假设您不需要比 Servlet 容器更高级的东西。如果您只是使用网络服务,您可能不会。

对于客户端,我假设您将拥有一个 GUI 应用程序,可能使用 Swing 或 SWF。您还可以选择制作一个 Web 应用程序,因为您已经需要一个 Web 服务器。

对于客户端到服务器的通信,您可以使用JAX-WS(SOAP Web 服务)或JAX-RS(RESTful 服务)实现。

JAX-WS 实现包括 Sun 的Metro(作为Java 6 SE的一部分提供)或Apache CXF

JAX-RS 实现包括JerseyApache CXF

至于数据库层,JDBC 不是您唯一的选择。Java 还具有Java Persistence API(JPA,当前版本为 2.0)。

JPA 通常用于 J2EE 应用程序(特别是 Web 应用程序)以简化数据库层。常见的实现是EclipseLink JPA(过时的 Oracle TopLink)和HibernateAnnotations

所有这些都基于组成 JavaEE 的各种标准:Servlet 2.5、JAX-WS 2.0、JAX-RS 1.1 和 JPA 2.0。

于 2010-06-29T19:56:52.350 回答
1

EJB 也出现了,但我听到很多针对它的仇恨——这是应得的吗?

EJB 规范的第 1 版和第 2 版是当之无愧的。但是 EJB v3 代表了一个巨大的简化,使它们使用起来非常愉快。我实际上可以凭良心推荐使用实体 bean 而不是手动 JDBC。

至于通信协议,在最新的 EJB 3.1 规范中将 EJB 公开为 REST 或 SOAP 服务非常简单——只需添加一些注释即可!

于 2010-06-29T19:32:25.180 回答