网络模式和非网络模式之间的差异

时间:2014-03-31 15:47:08

标签: java sockets rmi terminology

我在理解在java中处理客户端服务器应用程序时使用的网络模式和非网络模式术语之间的区别时遇到了困难。

我知道如何开发简单的客户端服务器应用程序。例如,我可以创建客户端应用程序和服务器应用程序。这些应用程序可以通过套接字连接并发送和接收数据。然而,当人们谈论在独立模式下运行服务器和客户端时,我感到困惑,其中客户端和服务器都使用相同的JVM实例,而不涉及环回网络。我已经在java derby数据库中看到过这种情况。

所以我的主要问题是如何使用套接字进行通信并将其转换为使用所谓的"独立模式"客户端和服务器作为一个应用程序运行?我将非常感谢任何指出正确材料的评论。

1 个答案:

答案 0 :(得分:1)

在所谓的网络模式中,您必须连接到远程服务器,如您所描述的,通常通过套接字,因此您的客户端要求服务器执行某项任务,服务器执行任务并响应客户端

在这种模式下,习惯上客户端和服务器将是不同的节点,即不同的机器,独立运行。

但是,如果您想在同一台机器上运行客户端和服务器,该怎么办?即使在同一个虚拟机中?通过套接字让服务器做某事是否有意义?

这就像使用Skype与坐在你身边的朋友聊天,只是让他去吃午饭。

因此,理想情况下,在这些情况下,您应该能够以非网络模式运行应用程序。也就是说,您不是通过套接字,而是直接访问您的服务器对象并要求它为您做一些事情。由于您的服务器对象与客户端位于同一个虚拟机中。

显然,为了能够做到这一点,您需要一个良好的设计,通过接口公开您的服务器功能,并且您的应用程序使用此接口与服务器进行交互。在网络模式下运行时,使用此服务器接口的实现,该接口使用套接字(或RMI或您为网络通信执行的任何操作)。当您处于非网络模式时,您将获得服务器对象本身的实现。

相关问题