我对这两个细微差别感到困惑:
EJB本身是中间件,还是EJB部署中使用了中间件?
同样适用于RMI-是RMI本身的中间件还是RMI中使用的中间件?
答案 0 :(得分:0)
EJB是Java EE的一个组件,它是一个中间件。
RMI是另一个,也是Java EE的另一个组件。
您可以看到这些术语过于精确。
答案 1 :(得分:0)
我同意EJP。
正如它所说的,中间件是为分布式应用程序提供服务的软件,它连接内核(如服务器)和用户应用程序。EJB是服务器端的组件体系结构,是Java EE的一部分,它构建在RMI之上。所以它们都是中间件的组成部分。
答案 2 :(得分:0)
定义中间件,如果它位于中间它之间是什么?我同意这个维基百科定义的基本思想:
Middleware是一种为软件提供服务的计算机软件 超出操作系统可用的应用程序。它可以 被描述为“软件胶水”。[1]中间件使其更容易 软件开发人员执行通信和输入/输出,所以他们 可以专注于其应用的具体目的
所以关键的想法是你编写软件并利用比普通操作系统更复杂的东西。我不会说中间件只是进行通信和输入/输出,我稍后会解释。
现在定义EJB。这里有两件事:EJB本身,即您编写的应用程序软件;您编写EJB作为应用程序开发的一部分,因此它不是中间件。但是您编写了Java EE定义的规范,并将EJB部署到Application Server提供的EJB容器中。 EJB容器和应用服务器提供了比操作系统更复杂的东西。因此容器和服务器是中间件。
EJB容器工具包括通信(例如RMI访问和JDBC数据库访问),但也包括安全性和事务等。
答案 3 :(得分:-1)
对我来说,我把中间件比作每个McIlroy的UNIX哲学:"编写做一件事并且做得好的程序。编写程序以协同工作。编写程序来处理文本流,因为这是一个通用接口。"
中间件是关于处理"文本流"。
每个程序都做一件事,做得好。话虽如此,它可以独立工作,但也可以与其他人一起工作。如果一个程序要独立工作,那么在我看来,它是异步的。为此,如果要与其他人合作,您需要中间件。
我认为RPC(RMI)的东西过于紧密耦合,并且是同步的,因此我的中间件定义失败了。我认为EJB试图做的远远超过处理"文本流"。
这个话题显然更多。试试Middleware但这对我来说太复杂了,可能是因为人们试图将中间件定义为允许来自不同供应商的程序相互通信的东西。现在你进入竞争和竞争,"标准"和ISO的东西。