經過一年半的開發、2500次commit和30多個版本,Phoenix 1.0終于發布啦!無論你要開發APIs、HTML應用,還是服務于本地設備的網絡應用,Phoenix 1.0都能為你提供強有力的支持。它用Elixir寫成,擁有漂亮的語法、實用的工具和飛快的運行速度。目前已有很多公司在產品中使用 Phoenix的成功案例。
一開始,Phoenix致力于創建可及時交互的網站,目標是做到就像在本地終端上一樣在網站上實時交互。這個目標通過Channels實現了,通過原文提供的90s的視頻你可以了解到它的強大。
Channels給服務器提供了多路復用的連接,來支持交互通信。同時Phoenix抽象了傳輸層,這樣你無需關心用戶連接服務的方式。無論是WebSocket、Long-polling還是自定義的連接,使用channel的代碼都是一樣的。你的代碼只要針對一個抽象的“socket”就行了,Phoenix會做好剩下的工作。即使是在服務器集群中,你的信息也可以自動地廣播到各個節點。Phoenix的JavaScript客戶端也提供了了API,使客戶端/服務器通信變得異常簡單,就像下面這樣:
作為一個Web框架,Phoenix的目標是傳統的Web應用,但是現在所謂的“web”的概念已經不同以往,框架也需要與時俱進。Phoenix不再局限于瀏覽器應用,已經可以連接iPhone、Android等其它智能設備。 Justin Schneck、 Eoin Shanaghy、 David Stump使用objC、Swift、C#和Java寫了Channel客戶端,實現了這個目標。為了展示這個成果,Justin做了一個Demo( 請見原文),展示Apple Watch、iPhone和Web瀏覽器通過本地Phoenix驅動來進行交互。
除了高可交互性,Phoenix還具有易用性,使團隊能夠快速開始,并提高生產效率。但是,軟件不是一項短期的工作。Elixir也致力于長期項目的可維護性。Erlang的運行是為運行多年,盡可能減少關機時間的系統設計的,有了這些特性,你部署的系統就會支持自我修復、hot-code上傳的特性,支持百萬的用戶連接。除此之外,Phoenix還支持:
短期可體驗到的優勢:
通過mix phoenix.new my_app生成項目。
開發中可見實時效果。在任何的模板、view或者asset中做修改可以馬上在瀏覽器中檢查效果。
通過Ecto項目整合了Postgres,MySQL,MSSQL和MongoDB資源。
支持資源產生器,像mix phoenix.gen.html User users name:string age:integer來驅動項目中的輸入輸出。
使用了EEx模板的圖層提前編譯,加快了響應時間,通常是微秒級的時間。
提供實時交互的Channel。
以及更多特性……
長期可體驗到的優勢:
多個Phoenix應用可以運行在同一個系統進程中,也可以通過umbrella應用將大的應用分割成較小的幾個部分,可通過該博文進行深入了解:http://blog.plataformatec.com.br/2015/06/elixir-in-times-of-microservices/。
Erlang的OTP可以實時查看正在運行的程序并診斷問題。
Phoenix手冊可以帶你快速入門。如果之前沒有接觸過Elixir的話,下面是一個銳減的學習資源:
使用Phoenix將會是一段難忘的經歷,讓世界為Elixir和Phoenix震驚吧!
針對現在選擇Elixir還是Go的問題,業界有著廣泛的討論。是選擇Go的高性能,還是Elixir對長期項目的優勢?有人總結了Elixir的優點:
社區:Ruby社區有很多喜歡Elixir的大牛,例如José Valim、Dave Thomas、Bruce Tate、Chris McCord等。
BEAM 和 OTP:Erlang VM和OTP在愛立信已是久經沙場,WhatsApp的百萬并發也使它的可靠性得到了證實。
Hex:像Ruby的Rubygems,Elixir/Erlang的包管理軟件是Hex,這已經成為了庫的官方標準。
Phoenix:Rails讓Ruby火了起來,現在,Phoenix正在將歷史重現。
語法:從Ruby發展而來,它的語法簡單明白,很容易讀懂。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。