可以激励程序员在分布式Java应用程序中使用Java JMS(Java消息服务)API而不是java.net包的UDP套接字API,或者使用UDP套接字API代替JMS API的原因是什么?如果可能,请举例说明。
答案 0 :(得分:10)
UDP和JMS在许多方面都有所不同,从根本上说,因为JMS通常依赖于TCP固有的功能(请参阅此comparison of UDP and TCP以了解两种基本协议的差异)。
基本上UDP适用于不需要任何可靠性,排序,拥塞控制或网络之间路由的应用程序(因为许多消费级和商用级路由器不转发UDP数据包)。 JMS提供了UDP及其他所有缺少的功能(如事务,发布/订阅和排队,持久订阅等)。
UDP可能适合在局域网内传输大量数据,而不需要绝对质量;对于需要在广域网主机之间进行可靠消息传递的应用程序,JMS会更好。此外,JMS模糊了套接字,服务器,绑定等的细节,并提供了更适合企业集成的高级API。