對於 Notadd 咱們原本指望它實現更多...
儘管咱們也嘗試作了不少努力,可是因爲 PHP 自己的侷限,以及考慮到開發環境配置的複雜程度,最終使用了折中方案。
接下來,咱們談談整個技術選型歷程,也供從此相關開發者作借鑑和參考:php
原由node
咱們指望 Notadd 不只能應用到 web 領域,在嵌入式開發領域也能有所應用,同時可以使用經常使用的 websocket 協議。laravel
Swoolegit
swoole 是咱們考慮的首選方案,但從擴展性來講,難以符合咱們模塊化的要求,對 HTTPS 和 HTTP2 支持不夠完善,同時,安裝上也難倒一些 phper。在 ARM 板的安裝過於複雜。固然也有好的一點,2.0 的自動異步對併發量有很多提高。github
workermanweb
主要問題還在於 workerman 對 HTTP2 等協議支持不夠完善,同時 phpsocket.io 只支持服務端模式運行,MQTT 協議也沒有相應的實現,並且以 ThinkPHP 開發者居多,成本較高。spring
AmPHPtypescript
amphp 有着最全的協議支持,同時有各類非阻塞拓展,能夠說是最符合要求的,可是異步須要對 laravel 作很大的改動。express
ReactPHPnpm
ReactPHP 實現上足夠優雅,但問題也足夠多,而且 PHP-cli 自己報錯機制不完善,給調試帶來了很大困難。
PHP-PM
按照官方說明,幾乎不須要大的修改,就能將 PHP 的併發量提高 10 倍。可是在測試過程當中,沒法正常運行 Laravel ,因此也只能放棄~
1.0 還將是 PHP 版本,而且也會有後續的更新,但會取消一些過於激進的更新,目前來講,Notadd 的門檻已經足夠高。
在上線應用商店後,也將會提供 1.0 ( PHP ) 的安裝包。包括以前一些比較激進的改動,也會根據開發者投票進行取捨。
固然,商城等模塊依然會提供。
Notadd 2.0 將基於 Nodejs 開發,同時也提供一些 1.0 沒法提供的功能和特性。
爲何是 nodeJS?
爲何是 nest.js ?
不管是 express ThinkJS KOA EGG 都沒法單一知足於中大型項目的開發,目錄結構也會極其複雜,而借鑑 spring 思想的 nest.js 來講無疑是最適合的,而且方便 Laravel 開發者過渡。nest 默認使用 typescript ~
爲何不直接用 Go 或者 JAVA?
說究竟是開發成本緣由,而且這些語言在 IO 密集型優點並不明顯,只有 10-20% 差別,可是在開發效率上就差了不少,並且對於企業,招人也是問題。