作为一个实际的例子,让我们考虑Java EAR的部署。通常,我们有几种方法来实现。
这里有一些例子:
在基本的操作系统上通过可用的机制和渠道,用RPM包的方式部署EAR文件。
Java应用服务器上通过可用的机制部署EAR,例如JBoss、WildFly和Glassfish。
粗看上去,通过特定的机制在Java应用服务器上部署EAR文件更好,因为它基于特定的应用服务器。如果你只部署过Java,这可能是个合情合理的想法。然而,因为无论如何也得管理最底层的操作系统,而你也许已经有可以重用的部署方法了。
还有,因为你很可能并不只开发Java,至少还会部署和管理HTML和JavaScript,使用一个通用的部署方法开始变得更有意义。
我经历过的几乎所有企业都有包含许多不同技术的复杂架构,这个经验法则在大多数场景里都很管用。
唯一的例外是当Unix服务器和Windows服务器并存的7昆合环境。在这些案例里,Unix服务器通常使用它们喜欢的包发布方式,而Windows服务器不得不使用自制方案蹒跚而行。
这只是一个观察结果,并不表示我们会姑息这种情形。