捕捉行業(yè)最新動(dòng)態(tài)
Latest Information
發(fā)布時(shí)間:2022-04-29 09:21:28 作者:愛(ài)尚網(wǎng)絡(luò)科技 來(lái)源:網(wǎng)絡(luò)
Web 應(yīng)用(管理系統(tǒng),網(wǎng)站,小程序等)
現(xiàn)在流行的說(shuō)法叫前后端分離。也就是前端使用html、vue或react等框架調(diào)用后臺(tái)服務(wù)。如網(wǎng)站、管理系統(tǒng)和小程序等,目前技術(shù)也比較成熟也是目前較流行的開發(fā)模式。編寫Web服務(wù),需要 HTTP 和 HTTPS 的服務(wù)體系,那么在這種情況下,使用 nginx、Apache 作為靜態(tài)頁(yè)面路由,Java、Tomcat、Python、Ruby 等腳本語(yǔ)言就有了用武之地。因?yàn)轫?yè)面需要使用 JSON 交互。
所以,編寫 Web 服務(wù),我們可以選擇 Java、Python、Ruby。但是如果公司財(cái)力物力有限,再考慮到招人成本的問(wèn)題,次選也可以是 Java 語(yǔ)言,一是寫 Java 的人夠多,二是 Java 成熟的類庫(kù)夠多,因此,一旦出問(wèn)題,有解決經(jīng)驗(yàn)的人也比較多。
Socket 服務(wù)
傳統(tǒng) TCP/IP 和 UDP 服務(wù),或者近期的 WebSocket 等,都需要響應(yīng)和并發(fā)操作,在這種情況下,系統(tǒng)編程語(yǔ)言和網(wǎng)絡(luò)編程語(yǔ)言就可以派上用場(chǎng)了。
如果公司的項(xiàng)目需要快,并且財(cái)力也允許,那么選擇 C、C++、Go、Erlang 等編程語(yǔ)言未嘗不是一種選擇。當(dāng)然 Java 也能很好地提供服務(wù),但是從業(yè)務(wù)上來(lái)講,既然選擇了 Socket 服務(wù)模式,那么就是對(duì)并發(fā)量有一些的要求,所以選擇上述這些語(yǔ)言會(huì)合適。
混合模式
這類業(yè)務(wù),既有 HTTP/HTTPS 的服務(wù),也有 Socket 服務(wù),那么如何平衡兩者之間的語(yǔ)言成本?如何平衡程序員之間的問(wèn)題呢?
如果要做一款短期內(nèi)要上線的產(chǎn)品,我建議選擇成熟的、有大量解決方案的,開發(fā)人員不短缺的語(yǔ)言,比如 Java;或者能快的做出原型的語(yǔ)言,比如服務(wù)器專有語(yǔ)言 Go。如果是長(zhǎng)期發(fā)展的產(chǎn)品,并不那么著急成型,那么選擇穩(wěn)定成熟的,人員素質(zhì)高的語(yǔ)言,比如 Python、Java 等。要先要選擇網(wǎng)上有眾多解決方案的語(yǔ)言,其次是找成熟的語(yǔ)言,比如 Python、Java、Ruby。如果針對(duì)某種別的產(chǎn)品,比如并發(fā)要求高的,那么只有選擇系統(tǒng)語(yǔ)言或者專門的語(yǔ)言,比如 Go、C++ 等。
看到這里,你是不是覺(jué)得 Java 語(yǔ)言是一種藥,或者是銀彈?錯(cuò)了,這個(gè)世界上沒(méi)有銀彈。Java 雖然有其優(yōu)勢(shì),但是其被人說(shuō)的地方,也是有不少的。一點(diǎn)莫過(guò)于速度。就算有 JIT 編譯,總體速度仍然比不上 C/C++,但是事實(shí)上這些因素綜合考慮并不算大的弊端,因?yàn)橛布Y源上來(lái)后,速度這些問(wèn)題已經(jīng)可以“得過(guò)且過(guò)”了。
那么從語(yǔ)言本身來(lái)看,如果說(shuō) C/C++ 語(yǔ)言本身的弊端是因?yàn)橄到y(tǒng)平臺(tái)導(dǎo)致的,那么 Java 語(yǔ)言的弊端就是因?yàn)槔^承自 C++,卻沒(méi)有做改革而導(dǎo)致的。
我隨便舉一個(gè)例子,比如說(shuō) switch case 判斷語(yǔ)句,硬生生地從 C/C++ 處直接繼承了下來(lái),因?yàn)?C/C++ 只允許使用 int、enum(其實(shí)是 int)、char(為 int)作為判斷類型,而 Java 也是直接將這套規(guī)范繼承了下來(lái)。
那如果選擇了 Python 或者 Ruby 等腳本語(yǔ)言進(jìn)行開發(fā),卻需要大量高并發(fā)的操作該怎么辦呢?我們可以選擇多進(jìn)程(不是多線程)編程的方式進(jìn)行開發(fā),代碼盡量簡(jiǎn)潔,一個(gè)進(jìn)程兼顧一個(gè)任務(wù),進(jìn)程之間的通信方式要盡量簡(jiǎn)潔,比如可以使用自定義的隊(duì)列等方式。
想快點(diǎn)研發(fā)完畢呢,建議大家就是Java+H5去研發(fā),唐山小程序開發(fā)、唐山APP開發(fā)啊,這些封裝都挺快的,價(jià)格相對(duì)是比較低的;想讓軟件穩(wěn)定性高一點(diǎn)呢?建議大家就是JAVA+VUE/H5去研發(fā),小程序開發(fā)、APP開發(fā)啊,這些封裝都挺快的,而且JAVA的并發(fā)能力確實(shí)比PHP強(qiáng),哪怕后期發(fā)展壯大,也一樣可以維持住,價(jià)格適中;要是對(duì)流暢度啊、手機(jī)適配啊要求度比較高的話,這才會(huì)建議原生開發(fā)的,因?yàn)樵_發(fā)的價(jià)格基本可以說(shuō)是混合開發(fā)的3倍!一般都會(huì)建議去做混合,因?yàn)榇蠹也蝗菀祝苁蓚€(gè)錢去做推廣,萬(wàn)一就火了呢?還有平臺(tái)選擇我建議去找研發(fā)團(tuán)隊(duì),畢竟是第三方管理團(tuán)隊(duì),相對(duì)管理也比較嚴(yán)格些,而且如果對(duì)研發(fā)人員不滿意可以找進(jìn)行換設(shè)計(jì)和研發(fā)人員。當(dāng)然也可以選擇實(shí)力的軟件開發(fā)公司,相對(duì)費(fèi)用也會(huì)高一些。