4

所以我有一个客户需要为各种事情(Solr 和 web 服务)运行 tomcat,在与他和项目的另一位程序员会面后,我有点困惑。另一个程序员到处乱讲流行语,说“我们需要为 tomcat 提供中间件”。对此,我的客户要求我为 tomcat 寻找中间件,这让我感到困惑,因为我认为编写 web 服务将特定于手头的项目,因此“中间件”将由我们开发。如果是这样,为什么不直接说“Web 服务”呢?

我的问题是:是否有用于 tomcat 的开源 servlet 或插件使其成为中间件(可能来自 apache 的站点?)或者我应该为 tomcat 编写自己的中间件是否有意义?或者...... tomcat被认为是中间件吗?当谈到 Java 和 tomcat 时,我完全是 n00b,但我对 C# 有很多经验,所以我试图弄清楚这与 C# 有什么关系。我以前从未使用过“中间件”这个词,而且我很确定“webservice”几乎是一回事。

有任何想法吗?

4

5 回答 5

9

所有这些答案都太冗长了。是的,Tomcat 是中间件。它位于客户端浏览器上的 HTML/Javascript 层和服务器上的数据库层之间。它不像 J2EE 服务器那样功能齐全,但就普遍接受的流行语而言,它仍然是“中间件”。

于 2009-07-31T15:34:36.063 回答
4

术语中间件通常用于描述旨在将两个不同系统连接在一起的软件。

如果您在另一个应用程序之上编写 Web 服务,并且第三个应用程序将与 Web 服务通信。那么是的,您正在编写中间件。

如果您通常在 .NET 环境中工作并且某些系统在 Tomcat 上。然后很可能其他程序员声称要将 .NET 应用程序连接到 Tomcat 上的 Java 应用程序,必须编写一些中间件。(他可能是对的。)

于 2009-07-31T15:24:25.050 回答
1

中间件实际上只是位于两个系统中间的软件。它的作用类似于一个系统通过 HTTP 处理 XML,另一个系统使用 COBOL。中间件可以做两个系统之间的转换。

J2EE 领域的许多“中间件”只是构建在 J2EE 容器之上的软件。不幸的是,tomcat 不是一个成熟的 J2EE 容器,它只是实现了 Servlet 规范。因此,不支持其他 J2EE 工具,如 JMS、EJB、SMTP 等,这限制了它连接到其他系统的自有能力。

但是,如果您使用的是现代系统,则可以在 Tomcat 上运行许多软件,这允许您使用基于 SOAP 的 Web 服务连接到其他系统。在这种情况下,您实际上并不需要单独的中间件系统。

总而言之,确定您现在需要连接哪些系统,在不久的将来需要连接哪些系统,并保持简单 (KISS)。不要只是盲目地相信那些声称他们的中间件会煮咖啡并将其每天交付给 CEO 的供应商,如果这是他们需要说的进行销售的话。

关于“网络服务”,网络服务实际上意味着您可以从网络调用的任何服务。因此,这再次取决于您的受众,如果您与熟悉基于 SOAP 的 Web 服务的外部供应商进行交流,那么您有很多选择。但是,如果您的听众想通过针对您的推特帐户发送推文来调用您的服务,那么它也是一项网络服务。

于 2009-07-31T15:32:57.173 回答
0

您可以合理地在任何具有独立客户端和后端的东西上贴上“中间件”标签。对我而言,问题不在于您如何称呼它,而在于“它”是否是适合这种情况的架构/技术。

于 2009-07-31T17:17:09.977 回答
0

我认为显而易见的回答是,“Tomcat 的中间件做什么?”

如果这个人的答案是“站在数据库和浏览器之间”,那么正确的答案是“Tomcat 是中间件”。

如果答案是“站在我们的安全服务器和 Tomcat 之间”,那么答案可能是“好的,我们必须检查我们内部是否已经有这样的软件,或者我们是否需要获取或构建它。”

在现实生活中,当这种事情出现时,我经常得到的答案更像是,“因为我在杂志上读到 Web 中间件是最新的尖端技术,所以我们应该使用它”或“嗯,因为,像,我在哪里听说你总是需要中间件或金属件或类似的东西”,那么正确的答案是,“当你确定了问题后,我们可以讨论解决方案。我们不要决定解决方案,然后搜索一个问题它可能会解决。”

于 2009-07-31T17:23:25.767 回答