怎么建設小程序的后臺比較好?|零基礎探索指南
一、寫在前面
我比(bi)較喜歡做微(wei)信生(sheng)態(tai)的(de)解決方案(an),給企業(ye)或(huo)個人提供一(yi)些(xie)技術方案(an)和應用形態(tai)選型(xing)的(de)咨詢(xun)。最近跟一(yi)些(xie)朋友聊天,他們在各自的(de)工作(zuo)(zuo)崗位(wei)中,隨著工作(zuo)(zuo)熟悉就會自然(ran)而然(ran)有很多能提升工作(zuo)(zuo)效率的(de)點子(zi)。
有些人喜歡用文檔、問卷、表單等SAAS應用捏合一個自己的效率集,一般能滿足很多場景;但還有一些(xie)場景(jing)可能沒(mei)有合適(shi)的(de)SAAS應用,于是就(jiu)想搞(gao)個小程序(xu),然后來問我怎么做比較合適(shi)。
“小程(cheng)(cheng)序一(yi)定程(cheng)(cheng)度上降(jiang)低了開發者搭(da)建應用的(de)(de)門檻,做一(yi)個(ge)(ge)小程(cheng)(cheng)序相比其他的(de)(de)產品形態效(xiao)率更高,落地更快。”,這個(ge)(ge)觀念在這幾年的(de)(de)發展(zhan)中(zhong)越來(lai)越深入,有很(hen)多不是軟(ruan)件行業的(de)(de)朋友都(dou)能提出小程(cheng)(cheng)序這種想法。
通過簡單的代碼,做一(yi)個(ge)滿足自(zi)身小場景的小程(cheng)序,并不是很(hen)難(nan)。有一(yi)定的數理基礎,配合社區的入門教程(cheng)很(hen)容易(yi)上手(shou)(shou)。上手(shou)(shou)門檻(jian)已經降低(di)到(dao)中小學(xue)生(sheng)都能(neng)觸(chu)及(ji)到(dao)的程(cheng)度了,微(wei)信還針對(dui)的搞了個(ge)少(shao)年(nian)挑戰賽(sai)。
完整的閉環一個應用,單純用小程(cheng)序(xu)做個前(qian)臺還是(shi)不夠(gou)的,很多情況下我(wo)們需要有后臺做管理支撐。
比如一(yi)個(ge)登(deng)記小程序,除了(le)小程序能(neng)夠(gou)提供登(deng)記信息填寫外(wai),還需要(yao)一(yi)個(ge)后臺(tai)能(neng)夠(gou)承載管理(li)人(ren)員做狀態扭轉或者其他的后備工作。
一(yi)般這種(zhong)(zhong)情況下有(you)幾種(zhong)(zhong)解決(jue)思路:
1. 在(zai)小(xiao)程序中編寫管理(li)頁面,通過用戶(hu)openid來指(zhi)定僅管理(li)員可(ke)見。
2. 通過接口對接企業(ye)微信或者其(qi)他SAAS平臺(tai)的webhook能力來(lai)組(zu)合管理。
3. 搭(da)建(jian)一個(ge)可操作的(de)管(guan)理后臺,有(you)細粒度的(de)權限管(guan)控。
接(jie)下來我主要(yao)分(fen)析一(yi)下這幾種(zhong)方式的實現和利(li)弊(bi),你可以(yi)根據(ju)自身(shen)的需要(yao)有針(zhen)對的選型。
二、后臺方案對比
1. 在小(xiao)程序中(zhong)編寫管理頁面,通過用戶openid來指定僅(jin)管理員可見。
○管理者的身份(fen)需要設計機(ji)制(zhi)去確(que)認(手(shou)機(ji)號關聯or訪問記錄)
○管理頁和內容占用(yong)小程序(xu)包資源,影響普(pu)通(tong)用(yong)戶的使用(yong)體(ti)驗
○正常(chang)用戶訪問也會判斷管理員邏(luo)輯,浪(lang)費數據庫讀資源(硬(ying)編碼(ma)則維護難度增大)
○管理接口與業務接口有混用(yong)的風險(xian)
這種實現是大(da)部分初入者首(shou)選的,因為(wei)微信(xin)(xin)用(yong)(yong)(yong)戶體系比較完備,可(ke)以通過(guo)openid來(lai)確定一個微信(xin)(xin)用(yong)(yong)(yong)戶。在用(yong)(yong)(yong)戶打開小(xiao)程序(xu)時,服務端(duan)判斷(duan)用(yong)(yong)(yong)戶身(shen)份是否是管理員,如果是的話返(fan)回一些(xie)信(xin)(xin)息(xi)給小(xiao)程序(xu),小(xiao)程序(xu)對(dui)應的展示(shi)相(xiang)關管理頁面內容或入口(kou)。
劣(lie)勢(shi)也是非常明顯的,由于(yu)管理邏輯與業務邏輯都集中在(zai)小程序通信,會(hui)在(zai)身份判斷(duan),業務處理上有更多的無效(xiao)的數據庫(ku)讀請求(qiu),浪費資源。
2. 通過(guo)接口(kou)對接企業微信或者其他SAAS平(ping)臺(tai)的webhook能力來組合管(guan)理(li)。
○可(ke)讀性比較差,無法可(ke)視化,但(dan)可(ke)通過其他(ta)工(gong)具加以改善。
○由接口的(de)參數驅(qu)動,權(quan)限校驗(yan)為(wei)明碼(ma),容易泄露。
○應對管(guan)理(li)場景有限(xian),無法應用(yong)到(dao)復(fu)雜(za)的管(guan)理(li)操(cao)作(如上(shang)傳圖像或批量(liang)處理(li))
這(zhe)種方案一般(ban)用于非常簡單(dan)的(de)管理場景(jing)中,比如就只針對一個(ge)事(shi)項做狀態(tai)扭轉(zhuan),發起一個(ge)批處理的(de)任(ren)務,發送通知等(deng)。完(wan)全由(you)接口來(lai)驅(qu)動完(wan)成。但權限(xian)管控只能通過參(can)數(shu)來(lai)明碼輸入(ru),或者通過結合saas工(gong)具,來(lai)利用其調用時(shi)的(de)header信息來(lai)做權限(xian)判(pan)斷。
3. 搭建一個可操作的管(guan)理后臺,有細(xi)粒度的權限管(guan)控。
○搭建難度可能遠遠超過小程序(xu)前臺(tai),需要考慮投入是否(fou)值得。
○根據(ju)所需可能(neng)要對接不同(tong)的用(yong)戶登(deng)錄體系(xi),比如用(yong)戶名(ming)密碼+微信登(deng)錄+郵件登(deng)錄。
這是一個標準的(de)方案,業務后臺(tai)頁面的(de)構成和功能(neng)設(she)計需要根據自己的(de)業務場景來(lai)單獨設(she)計,其用(yong)戶群體為(wei)業務管(guan)理者(zhe)。在功能(neng)實現上既可以有數(shu)據庫的(de)增刪改(gai)查,也可以有外部(bu)平(ping)臺(tai)的(de)調(diao)用(yong)(比如微(wei)信支付分賬,發起退款(kuan),發送郵(you)件通知等)。作為(wei)開發者(zhe)在搭建后臺(tai)時,遇(yu)到的(de)實現點和難(nan)度可能(neng)都是高(gao)門檻(jian)的(de),所以需要一定(ding)的(de)技術(shu)積累,并充分理解用(yong)戶群體(業務管(guan)理員)的(de)工作流程。
三、微信在后臺方面做了什么?
為了讓開發者在做個小程序這方面的門檻降低,從設備端到用戶體系,從單機存儲到聯網同步。微信團隊圍繞小程序開發的各個(ge)環節提供了很多產品和服務形態(tai),其核心目標就是讓開發者做小程序的門檻變(bian)得(de)更低。
比如微信云(yun)服務(wu),Donut開發(fa)平臺(tai)(tai),通過提(ti)供(gong)云(yun)端資源和平臺(tai)(tai)能(neng)力,在一(yi)些方面多做一(yi)些,讓開發(fa)者少做一(yi)些。
在業(ye)務后臺(tai)這(zhe)個方面(mian),實現上脫離小(xiao)程序(xu)本(ben)體,但是(shi)從(cong)業(ye)務經(jing)營者角度來看,又是(shi)小(xiao)程序(xu)業(ye)務不可或缺的一(yi)環。所以微(wei)信針對業(ye)務后臺(tai)這(zhe)方面(mian)也提供了解決(jue)方案:
云后(hou)(hou)臺(tai)是微信最近上線的(de)一個能力,主要面向小程(cheng)序或公眾號H5場(chang)(chang)景(jing)的(de)業務開(kai)發(fa)者,沉淀常見(jian)的(de)后(hou)(hou)臺(tai)管(guan)理(li)場(chang)(chang)景(jing);通過提供豐富應用(yong)模板、開(kai)放數(shu)據接口、靈(ling)活管(guan)理(li)權限等功能,降低(di)開(kai)發(fa)者搭建后(hou)(hou)臺(tai)的(de)成本,提升(sheng)開(kai)發(fa)效率。
通俗來解釋的話主要就有3個亮點(dian):
1. 豐富(fu)的(de)模板應用和靈活的(de)搭建驅(qu)動。
2. 可以自由定義(yi)的數(shu)據(ju)接口和外部平臺連接
3. 提供靈活的用戶權限管理,細粒度控(kong)制
其中我(wo)覺(jue)得對初學者友(you)好的一點(dian)是,如果你只開發了一個單(dan)機小程序,還沒有做(zuo)云(yun)(yun)端(duan)接(jie)入。云(yun)(yun)后(hou)(hou)臺(tai)(tai)由于(yu)有中心化數據源(yuan),也(ye)就(jiu)意味著你不需(xu)要自己搭建后(hou)(hou)端(duan)服務了,直接(jie)使用云(yun)(yun)后(hou)(hou)臺(tai)(tai)暴露出來(lai)的接(jie)口調用就(jiu)好。
有關于(yu)云后臺(tai)的具體使用細節的動態體驗,我會在(zai)后面單獨(du)開一(yi)篇文章,發布后會更(geng)新到(dao)這里(li),如果感(gan)興趣可以關注下。
四、總結
如果(guo)你(ni)目前(qian)正在為業(ye)務(wu)后(hou)臺(tai)(tai)的(de)搭建煩惱,或者有(you)計劃升級你(ni)的(de)后(hou)臺(tai)(tai)形式,不妨可以(yi)花點時間(jian)體驗(yan)一下,具體請參(can)見云(yun)后(hou)臺(tai)(tai)文檔。