socket编程,rmi和Servlets之间有什么区别.什么时候用?
Socket API是Java应用程序与网络交互的低级(传输级)抽象,并通过远程客户端和服务进行扩展.套接字和相关API支持可靠的字节流和不可靠的消息传递服务.它们通常用于TCP/IP和UDP/IP,但其他网络协议栈可以(至少在理论上)得到支持.
RMI是用于在Java应用程序之间实现应用程序级网络的框架和协议系列.它将网络交互建模为对生活在其他应用程序中的对象进行的Java方法调用.此模型需要一种机制(通常是名称服务器),允许一个应用程序"发布"对象,以便另一个应用程序可以引用它们.这(以及RMI端口通常默认被阻止的事实)意味着在设置基于RMI的应用程序时需要进行大量的配置工作.
Servlet是API的集合,主要用于实现HTTP通信的服务器端; 即用于在Java中构建Web服务器.它们(或者更确切地说是它们运行的Web容器)负责处理HTTP协议的细节,因此程序员(理论上)只需要处理"应用程序"问题.
实际上,servlet开发人员和/或部署人员必须处理其他事情,例如将URL映射到servlet到对象,安全性和身份验证.此外,Servlet只处理HTTP交互的服务器端......客户端必须由不同的API处理.(您也可以认为Servlet本身做得不够,可以通过构建在Servlet之上的Web应用程序框架的扩散来证明.)
简单来说:
套接字用于低级网络通信
RMI适用于高级Java-to-Java分布式计算
Servlet用于实现网站和Web服务
套接字 - 很少直接与TCP/IP接口的简单调用.非常简单,但你要掌握自己的缓冲区处理,并处理自己不完整的响应和超时.未提供身份验证或安全性.
rmi - 处理上述所有内容,<个人意见>它是污染java标准 personal opinion>的最糟糕的API之一,编程相当简单,处理基本的网络错误,身份验证和安全问题.难以配置和部署.
Servlets - 可爱的简单API,为您处理所有网络问题,通过插件进行安全性和身份验证.没有部署问题,配置简单.