三层应用

Three-tier application

我的项目客户端-服务器-数据库有问题。我在 Java SE(GUI:Swing)中编写了客户端应用程序。 Hibernate 将提供服务器和数据库之间的通信。但是,我不知道如何实现客户端应用程序和服务器应用程序之间的通信,实际上我还没有。

-第一个想法是在Java SE中编写一个服务器应用程序,并使用RMI协议由客户端调用远程服务器方法。
- 第二个想法是在 Java EE 中编写应用程序服务器,使用 EJB + 例如。 JBoss.

问题是,我不知道第二个想法是如何实现的,因为我之前没有接触过这个。此时,我有几个问题:

  1. 哪个想法更合理?
  2. 哪个想法更快?
  3. 在第一个想法的情况下,我读到Web服务器用于动态交付类。如果我要预测所有必要的 类 并将它们放在本地,是否需要使用 Web 服务器?
  4. 多线程(访问服务器+多个客户端同时访问数据库)/安全等方面呢?如果是第二个想法,我必须自己处理这些方面?
  5. 你能给我一个关于第二个想法的客户端和服务器实现的例子吗?如何连接,如何通过客户端传递参数调用远程方法等
  1. Which idea is more reasonable?

这取决于你的拓扑结构。 RMI 是单机拓扑的不错选择,甚至可以跨局域网工作;但它有一些限制,这使得它 poorly suited for the Internet.

在你提出的两个想法中,如果你的客户端分布在互联网上,JavaEE 更合理。还有其他可行的选择,例如 Typesafe Activator,一种支持 Web 服务的轻量级非 JavaEE 应用程序服务器。

  1. Which idea is faster?

RMI 拥有最简单和最紧凑的序列化,所以它总是会稍微快一些。然而,这是一个相对不重要的问题,除非你的应用程序非常多话,即使那样它仍然不可能超过好的设计。

  1. In the case of the first idea, I read that the web server is used to dynamically delivered classes. Do I need to use the web server if I will predict all the necessary classes and I will put them locally?

在这两种情况下,您都需要服务器提供的数据的客户端对象表示,并且在这两种情况下,您都希望使这些数据 类 在服务器和客户端之间保持同步。所以这不是一个特别有用的区分。

  1. What with aspects such as multithreading (access to the server + access to the database by multiple clients at the same time) / security? In the case of the second idea, I have to take care of these aspects yourself?

正确。 JavaEE 为这些问题提供了解决方案,而 RMI 没有。

  1. Could you give me an example a client and a server implementations for the second idea? How to connect, how to call a remote method with parameter transfer by the client, etc.

此请求过于复杂,无法在此处回答。此外,辅导不在 Whosebug 的范围之内。我最多只能建议您聘请 JavaEE 专业人员,或者找一本 JavaEE 书籍并开始学习! :)