您好,登錄后才能下訂單哦!
如何用開發本地tcpip程序的思路開發webapp,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
不可否認的是,webapp已經是與desktop, mobile app并列的主流appmodel之一,但是,web卻是一種典型的Appstack as os,webapp是在native server apps上打出的一個b/s洞,再在這個洞里發展出來的一整個世界(跟移動端APP一樣比如安卓),,比如,它底下的appstack,分別屬于native/desktop的范疇,負責gui的是nginx,db mysql,etc(代表webappstack的是服務端app,客戶端只是“client side html,js resources”,它脫離了服務端,就沒有自身存在的意義。不是一個獨立可用的app)..
Vs nativeapp和nativedev,它從來沒有自己的os,或任何標準的宿主定義。較之native app,它不算是一種有專門運行它的OS供它托管運行的“app”,你要說webapp的host是lamp,很明顯,lnmp中的l并不屬于web,是applicationserver?beanserver?,也不是,它是語言的組件服務器,換言之,只有nginx,mysql這樣的東西屬于web —— 只是說,技術上通過ln+np的組合,能搞出一種web程序。這跟移動開發類似,它們都是linux和一種虛擬機語言雙重托管運行下的app,——— 本來嘛,web開發和移動開發是beyond native層面的,也只須這樣。
在開發上,動態程序的web app是monolith的前后端整合的,叫page app,程序員在后端完成所有的程序開發,Webapp的框架邏輯無非是routing,template,orm,route,mvc這些框架邏輯。代表一種appmodel的,無非就是它的stack框架邏輯。因為它考慮進了瀏覽器是服務端和客戶端一體app。web程序之間不用交互和復用,沒有api機制,也沒有web件,web as service(當然,這些后來也有。。。),只有語言源碼級的復用。
應用上,和后端運維上,也都是整合在web的。用戶在一個web界面上完成所有的事,比如cms后端管理。用戶和內容也是集成在遠程的。沒有線下只有線上。 這也就是說,程序靠后端,內容靠用戶,全民線上分布式,沒有線下分布式,它整個就是monolitch的(而且采用http,js這些具體選型沒有二選,使得webapp是fixed的)。
以上這引起都不是問題。也不是web的問題。就像Web剛開始一出來其實就是分發靜態文檔只是后來有人用它來強行運行webapp而已(而且分布式應用開發本來在工業上的實現就很破碎,歷史上并不存在一個真正的分布式OS,也不存在一個分布式appserver,見《plan9一個真正的分布式OS》) ——— 歷史上,長鏈接,webgl,streaming content,這些,一直都是從各個維度去克服web monolitch page appmodel,使之多元的努力,
只是,只能有線上分布,不能有真正的線下分布,web這個缺點是顯而易見的。有完全適合將web置于線上的現實需要,也就存在與現實的web應用現實相左的需求,比如,存不存在一種線上線下合作分布式的webapp呢?那些在本地可以處理的就讓它在不必在遠程,比如后端管理,使之跳出browser? 就像git的分布式那樣,——— 在前面,我們也不斷講到此類思路,比如用靜態網站思路來開發webapp,用tcpip來開發b/s。
這樣的方案是存在的,網上有wordpress headless cms這樣的項目,這樣努力的結果就是重新將web置于規范級,將webapp重設計,它僅需要是一個http協議,也不必是一個b/s app,web只需是一個gui,而不應成為full appstack的全部。這樣就分離了線上線下。線上線下分別開發,這二者通過api鏈接。
重新分離的好處多多,最明顯的就是,開發上:
1)Web的服務端可以真正作為headless backend,變身as service服務。有api機制和復用。客服分離開發,用c/s方式和類nativedev方式開發,客服不再拘泥彼此的技術規范和語言技術選型。
2)簡化了服務端開發和選型,顯示邏輯分離,服務端web框架再不用mvc這樣的東西及其它同時考慮處理客戶端routing等的邏輯,Lnmp中也不再需要php了。可以在服務端用任何一種語言來實現。也可以有gitstack這種多選擇的選型結構。或僅是其它采采用了http的其它非lnmp的xxxstack,所以,webapp的后端可以是任何東西。
3)將客戶端開發獨立成線下,不再將webapp視為一個monolith的appmodel,類c/s web,可以用任何語言實現將html視為編輯器中的asserts,不僅是瀏覽器了。,可以是其它獨立的客戶端app,
4)變“瘦服務端開發”“強客戶端開發”,比如Wordpress,插件可以在客端做,不用開源了。或者反之,那種復雜的線上交互網站,也是可以的(可是,那還有其它方法來解決不是?比如將動態部分也弄成一個headless “chat”,headless “comment”,headless “xxx”??)。
應用上:
1)cms可以發展為headless cms在本地管理,擁有真正獨立的客戶端app,可以fully Turn into functional in-browser application.
2)如果是展示型網站如cms,遠端web程序也只需是個存儲空間。比如阿里云OSS這種。這樣,一個靜態空間就可以解決cms托管的問題,而且更專業。
還有更多。。
其實,上面幾點就“treating b/s webapp as c/s webapp in nativedev manner”一個意思。
看完上述內容,你們掌握如何用開發本地tcpip程序的思路開發webapp的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。