java - rmi 与 servlet 与套接字

标签 java sockets servlets rmi

套接字编程、rmi 和 Servlets 有什么区别。什么时候使用什么?

最佳答案

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

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

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

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

简而言之:

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

关于java - rmi 与 servlet 与套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5798473/

相关文章:

c - errno 97 aka EAFNOSUPPORT aka 协议(protocol)不支持的地址族的可能原因

java - 为什么 Apache POI XSSF 无法写入 servlet 响应输出流?

java - 在 Servlet 中以字符串形式获取文件内容

java - Spring Security配置的默认过滤器链是什么?

java - Java中Matlab的audioread()或waveread()

node.js - Azure 上使用 NodeJS 的 Websocket

servlets - 在 CQ5 中访问 Sling Servlet

Java文本字符串: Want Only One Word In Bold

java - 向 Java 添加标题和文本字段

sockets - Opc-UA 通信协议(protocol),客户端如何理解可用的服务器节点?