開發(fā)的最佳選擇。
相比之下,ruby on rails 框架則是新的。并沒有很多人使用 rails 開發(fā)高通信流量的站點(diǎn),并且?guī)缀醪淮嬖谑裁词褂?rails 多年開發(fā)項(xiàng)目的經(jīng)驗(yàn)。但它仍然是一種高生產(chǎn)力的數(shù)據(jù)庫支持的 web 應(yīng)用程序開發(fā)的框架。最后,盡管我們對 rails 缺乏開發(fā)長期項(xiàng)目的經(jīng)驗(yàn)和并未得到廣泛部署有所顧慮,但那份緊湊的時(shí)間表驅(qū)使我們選擇了 ruby on rails。
作出這個(gè)決定之后,我們發(fā)現(xiàn)招募項(xiàng)目人才非常容易。我們還發(fā)現(xiàn)早期的生產(chǎn)力優(yōu)勢非常顯著 —— 甚至比預(yù)期的還要好。我們確實(shí)遇到了一些早期的穩(wěn)定性問題,因此加強(qiáng)了測試工作的力度。此后穩(wěn)定性得到了極大的改進(jìn)。
原理
每個(gè)框架設(shè)計(jì)者都使用一組假定來構(gòu)造該框架的重寫原理。學(xué)習(xí)遵守該原理的約束可使您愉快地進(jìn)行編程,而挑戰(zhàn)這些約束則會(huì)使您的編程受挫。rails 框架和 java 框架擁有很多不同的原理。
rails 是一種集成框架,需要使用高度利用 ruby 語言的動(dòng)態(tài)本質(zhì)。rails 開發(fā)人員強(qiáng)調(diào)框架的生產(chǎn)力特性而不是工具特性,并且常常將 web 架構(gòu)看得非常簡單,在本系列的前幾篇文章中您已了解到這一點(diǎn)。java 設(shè)計(jì)者通常必須分塊地組合開發(fā)環(huán)境,獨(dú)立地選擇持久性、web 和集成層。他們通常嚴(yán)重地依賴工具來簡化核心任務(wù)。web 架構(gòu)設(shè)計(jì)趨向于較為復(fù)雜。
完全集成
java 框架往往是解決一個(gè)小問題(比如持久性或查看組織),而 rails 則是一個(gè)集成環(huán)境。rails 開發(fā)人員的優(yōu)勢在于不必解決與許多不同框架集成的問題。大多數(shù) hibernate 開發(fā)人員陷入了過早關(guān)閉與 java web 框架之間的連接的陷阱。rails 視圖框架是從頭構(gòu)建的,以便與 activerecord 集成(rails 持久性框架)。當(dāng)您考察用于 web 服務(wù)、配置和插件的 rails 框架時(shí)也會(huì)發(fā)現(xiàn)類似的經(jīng)驗(yàn)。java 編程支持各種不同的框架,對于所有這些框架使用不同的集成策略。
java 開發(fā)人員的優(yōu)勢在于選擇。如果您需要從頭構(gòu)建一個(gè)框架,則可能要考慮使用基于 sql 的解決方案用于數(shù)據(jù)庫集成(如 ibatis 或 java 編程中基于 jdbc 的包裝框架之一)。反過來,如果要使用一種古老的模式進(jìn)行編程,則可能要使用對象關(guān)系映射框架(如 hibernate)。相比之下,如果您使用 rails,則擁有一個(gè)主要選擇:activerecord。這意味著 java 框架提供了更多的選擇,有時(shí)能提供更好的集成開發(fā)項(xiàng)目的解決方案。但是由于我們要開發(fā)一個(gè) green-field 項(xiàng)目,因此選擇算不上是一個(gè)問題。