rmi vs servlets vs sockets

2022-09-03 04:03:13

套接字编程,rmi和Servlets之间的区别是什么。什么时候用什么?


答案 1

套接字 API 是 Java 应用程序与网络交互的低级(传输级)抽象,并通过扩展与远程客户端和服务进行交互。套接字和相关 API 支持可靠的字节流和不可靠的消息传递服务。它们通常用于TCP / IP和UDP / IP,尽管可以支持其他网络协议栈(至少在理论上)。

RMI 是一个框架和协议系列,用于在 Java 应用程序之间实现应用程序级网络。它将网络交互建模为对位于其他应用程序中的对象进行的 Java 方法调用。此模型需要一种机制(通常是名称服务器),该机制允许一个应用程序“发布”对象,以便另一个应用程序可以引用它们。这(以及默认情况下通常阻止 RMI 端口的事实)意味着在设置基于 RMI 的应用程序时需要花费大量的配置工作。

Servlets是API的集合,主要用于实现HTTP通信的服务器端;即用于在Java中构建Web服务器。它们(或者更准确地说是运行它们的Web容器)负责处理HTTP协议的细节,因此程序员(理论上)只需要处理“应用程序”问题。

在实践中,Servlet 开发人员和/或部署者必须处理其他事情,例如将 URL 映射到 servlet 到对象、安全性和身份验证。此外,Servlets只处理HTTP交互的服务器端...客户端必须由不同的 API 处理。(你也可以争辩说,Servlet本身做得还不够,正如建立在Servlet之上的Web应用程序框架的激增所证明的那样。

简言之:

  • 套接字用于低级网络通信
  • RMI 适用于高级 Java 到 Java 分布式计算
  • Servlet 用于实现网站和 Web 服务

答案 2
  1. 套接字 -- 几个直接与 TCP/IP 接口的简单调用。非常简单,但您需要实现自己的缓冲区处理并处理自己不完整的响应和超时。未提供身份验证或安全性。

  2. rmi - 处理上述所有内容,<个人意见>这是污染java标准的最糟糕的API之一</个人意见>,程序相当简单,处理基本的网络错误,身份验证和安全问题。难以配置和部署。

  3. Servlets - 可爱的简单API,为您处理的所有网络问题,通过插件进行身份验证。没有部署问题,配置简单。


推荐