三层应用
Three-tier application
我的项目客户端-服务器-数据库有问题。我在 Java SE(GUI:Swing)中编写了客户端应用程序。 Hibernate 将提供服务器和数据库之间的通信。但是,我不知道如何实现客户端应用程序和服务器应用程序之间的通信,实际上我还没有。
-第一个想法是在Java SE中编写一个服务器应用程序,并使用RMI协议由客户端调用远程服务器方法。
- 第二个想法是在 Java EE 中编写应用程序服务器,使用 EJB + 例如。 JBoss.
问题是,我不知道第二个想法是如何实现的,因为我之前没有接触过这个。此时,我有几个问题:
- 哪个想法更合理?
- 哪个想法更快?
- 在第一个想法的情况下,我读到Web服务器用于动态交付类。如果我要预测所有必要的 类 并将它们放在本地,是否需要使用 Web 服务器?
- 多线程(访问服务器+多个客户端同时访问数据库)/安全等方面呢?如果是第二个想法,我必须自己处理这些方面?
- 你能给我一个关于第二个想法的客户端和服务器实现的例子吗?如何连接,如何通过客户端传递参数调用远程方法等
- Which idea is more reasonable?
这取决于你的拓扑结构。 RMI 是单机拓扑的不错选择,甚至可以跨局域网工作;但它有一些限制,这使得它 poorly suited for the Internet.
在你提出的两个想法中,如果你的客户端分布在互联网上,JavaEE 更合理。还有其他可行的选择,例如 Typesafe Activator,一种支持 Web 服务的轻量级非 JavaEE 应用程序服务器。
- Which idea is faster?
RMI 拥有最简单和最紧凑的序列化,所以它总是会稍微快一些。然而,这是一个相对不重要的问题,除非你的应用程序非常多话,即使那样它仍然不可能超过好的设计。
- 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?
在这两种情况下,您都需要服务器提供的数据的客户端对象表示,并且在这两种情况下,您都希望使这些数据 类 在服务器和客户端之间保持同步。所以这不是一个特别有用的区分。
- 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 没有。
- 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 书籍并开始学习! :)
我的项目客户端-服务器-数据库有问题。我在 Java SE(GUI:Swing)中编写了客户端应用程序。 Hibernate 将提供服务器和数据库之间的通信。但是,我不知道如何实现客户端应用程序和服务器应用程序之间的通信,实际上我还没有。
-第一个想法是在Java SE中编写一个服务器应用程序,并使用RMI协议由客户端调用远程服务器方法。
- 第二个想法是在 Java EE 中编写应用程序服务器,使用 EJB + 例如。 JBoss.
问题是,我不知道第二个想法是如何实现的,因为我之前没有接触过这个。此时,我有几个问题:
- 哪个想法更合理?
- 哪个想法更快?
- 在第一个想法的情况下,我读到Web服务器用于动态交付类。如果我要预测所有必要的 类 并将它们放在本地,是否需要使用 Web 服务器?
- 多线程(访问服务器+多个客户端同时访问数据库)/安全等方面呢?如果是第二个想法,我必须自己处理这些方面?
- 你能给我一个关于第二个想法的客户端和服务器实现的例子吗?如何连接,如何通过客户端传递参数调用远程方法等
- Which idea is more reasonable?
这取决于你的拓扑结构。 RMI 是单机拓扑的不错选择,甚至可以跨局域网工作;但它有一些限制,这使得它 poorly suited for the Internet.
在你提出的两个想法中,如果你的客户端分布在互联网上,JavaEE 更合理。还有其他可行的选择,例如 Typesafe Activator,一种支持 Web 服务的轻量级非 JavaEE 应用程序服务器。
- Which idea is faster?
RMI 拥有最简单和最紧凑的序列化,所以它总是会稍微快一些。然而,这是一个相对不重要的问题,除非你的应用程序非常多话,即使那样它仍然不可能超过好的设计。
- 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?
在这两种情况下,您都需要服务器提供的数据的客户端对象表示,并且在这两种情况下,您都希望使这些数据 类 在服务器和客户端之间保持同步。所以这不是一个特别有用的区分。
- 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 没有。
- 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 书籍并开始学习! :)