作為一個(gè)實(shí)際的例子,讓我們考慮Java EAR的部署。通常,我們有幾種方法來(lái)實(shí)現(xiàn)。
這里有一些例子:
在基本的操作系統(tǒng)上通過可用的機(jī)制和渠道,用RPM包的方式部署EAR文件。
Java應(yīng)用服務(wù)器上通過可用的機(jī)制部署EAR,例如JBoss、WildFly和Glassfish。
粗看上去,通過特定的機(jī)制在Java應(yīng)用服務(wù)器上部署EAR文件更好,因?yàn)樗谔囟ǖ膽?yīng)用服務(wù)器。如果你只部署過Java,這可能是個(gè)合情合理的想法。然而,因?yàn)闊o(wú)論如何也得管理最底層的操作系統(tǒng),而你也許已經(jīng)有可以重用的部署方法了。
還有,因?yàn)槟愫芸赡懿⒉恢婚_發(fā)Java,至少還會(huì)部署和管理HTML和JavaScript,使用一個(gè)通用的部署方法開始變得更有意義。
我經(jīng)歷過的幾乎所有企業(yè)都有包含許多不同技術(shù)的復(fù)雜架構(gòu),這個(gè)經(jīng)驗(yàn)法則在大多數(shù)場(chǎng)景里都很管用。
唯一的例外是當(dāng)Unix服務(wù)器和Windows服務(wù)器并存的7昆合環(huán)境。在這些案例里,Unix服務(wù)器通常使用它們喜歡的包發(fā)布方式,而Windows服務(wù)器不得不使用自制方案蹣跚而行。
這只是一個(gè)觀察結(jié)果,并不表示我們會(huì)姑息這種情形。