对于 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% 差别,可是在开发效率上就差了不少,并且对于企业,招人也是问题。