三层应用

时间:2015-01-23 23:28:27

标签: java swing java-ee jboss ejb

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

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

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

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

1 个答案:

答案 0 :(得分:1)

  
      
  1. 哪种想法更合理?
  2.   

这取决于您的拓扑。 RMI是单机拓扑的不错选择,甚至可以跨LAN运行良好;但它有限制使它成为poorly suited for the Internet

在您提出的两个想法中,如果您的客户是通过Internet分发的,那么JavaEE更合理。还有其他可行的选择,例如Typesafe Activator,一个支持Web服务的轻量级非JavaEE应用程序服务器。

  
      
  1. 哪个想法更快?
  2.   

RMI具有最简单和最紧凑的序列化,因此它总是会稍微快一些。然而,这是一个相对不重要的问题,除非你的应用程序非常喋喋不休,即便如此,它仍然不可能超过好的设计。

  
      
  1. 在第一个想法的情况下,我读到Web服务器已经习惯了   动态交付的课程。如果我,我是否需要使用Web服务器?   会预测所有必要的课程,我会把它们放在本地吗?
  2.   

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

  
      
  1. 多线程(访问服务器+等)等方面   多个客户端同时访问数据库)/   安全?在第二个想法的情况下,我必须照顾这些   方面你自己?
  2.   

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

  
      
  1. 你能给我一个客户端和服务器实现的例子   第二个想法?如何连接,如何调用远程方法   客户等参数转移
  2.   

这个请求太过于涉及到答案。此外,辅导不在StackOverflow的范围内。我能做的最好的事情是建议您聘请JavaEE专业人士,或者找一本JavaEE书籍并开始学习! :)