作為一個實際的例子,讓我們考慮Java EAR的部署。通常,我們有幾種方法來實現。
這里有一些例子:
在基本的操作系統上通過可用的機制和渠道,用RPM包的方式部署EAR文件。
Java應用服務器上通過可用的機制部署EAR,例如JBoss、WildFly和Glassfish。
粗看上去,通過特定的機制在Java應用服務器上部署EAR文件更好,因為它基于特定的應用服務器。如果你只部署過Java,這可能是個合情合理的想法。然而,因為無論如何也得管理最底層的操作系統,而你也許已經有可以重用的部署方法了。
還有,因為你很可能并不只開發Java,至少還會部署和管理HTML和JavaScript,使用一個通用的部署方法開始變得更有意義。
我經歷過的幾乎所有企業都有包含許多不同技術的復雜架構,這個經驗法則在大多數場景里都很管用。
唯一的例外是當Unix服務器和Windows服務器并存的7昆合環境。在這些案例里,Unix服務器通常使用它們喜歡的包發布方式,而Windows服務器不得不使用自制方案蹣跚而行。
這只是一個觀察結果,并不表示我們會姑息這種情形。