為您解碼網(wǎng)站建設(shè)的點(diǎn)點(diǎn)滴滴
發(fā)表日期:2016-03 文章編輯:小燈 瀏覽次數(shù):2182
一個(gè)光鮮漂亮的App背后是一整套邏輯和業(yè)務(wù),你看到的每樣?xùn)|西都是需要有支撐和相應(yīng)的代價(jià)。
以下內(nèi)容適用于那些有內(nèi)容的App,包括而不限于文字、圖片、商品等等。如果只是一個(gè)手電筒或者簡單的計(jì)算器等工具類App,那么就能簡化很多,但是下文的第四條還是需要的。
網(wǎng)址,是一個(gè)資源,比如文字、網(wǎng)頁、圖片、音頻、視頻在互聯(lián)網(wǎng)上的唯一坐標(biāo)。而網(wǎng)址的基礎(chǔ)就是域名。比如 的域名是jianshu.com
,他的首頁是http://www.jianshu.com
,他的首頁左邊的圖片的網(wǎng)址是http://upload.jianshu.io/daily_images/images/k3MvkAixRp4dqmmPexG2.jpg
。這里jianshu.io
是 申請(qǐng)的另一個(gè)域名。使用不同的域名有特定的優(yōu)缺點(diǎn),這個(gè)以后再聊。
域名的基本組成是一串英文數(shù)字+一個(gè)頂級(jí)域后綴(其實(shí)支持中文,但不主流,略過)。頂級(jí)域包括.com
,.net
,.org
等等。另外是各個(gè)國家自己的頂級(jí)域,比如.cn
,.jp
,.uk
等,除了這些大家都知道的國家之外,一些縮寫很好玩的國家域也漸漸流行。比如餓了么的域名.me
,其實(shí)是黑山共和國的。因?yàn)楹陀⑽牡奈移磳懸粯樱缓芏嗳俗鳛閭€(gè)人域名注冊。
域名是全球唯一的,由各個(gè)域名代理商負(fù)責(zé)對(duì)外注冊。比如國內(nèi)的萬網(wǎng)(已被阿里云收購),國外的GoDaddy等。在這些網(wǎng)站上可以查詢一個(gè)域名是否已被注冊,如果沒有,可以購買。各個(gè)注冊商、各個(gè)頂級(jí)域名、域名的長短都關(guān)系著一個(gè)域名的價(jià)格。從幾元錢到幾百元不等。按一年計(jì)算,需要到期續(xù)費(fèi)。域名注冊的時(shí)候需要填寫各種資料,其中電話和管理員郵箱最好不要亂填,因?yàn)殛P(guān)系到域名的所屬。這些資料默認(rèn)是公開的,可以使用whois工具查看域名注冊資料。所以如果怕泄露的話可以專門注冊一個(gè)郵箱。也可以付錢申請(qǐng)資料保密。
域名注冊商一般會(huì)有個(gè)管理員后臺(tái),可以在上面設(shè)置域名對(duì)應(yīng)的IP地址。IP地址是服務(wù)器在互聯(lián)網(wǎng)上的唯一標(biāo)識(shí)。DNS就是讓申請(qǐng)的域名與服務(wù)器IP對(duì)應(yīng)起來的協(xié)議。比如www.jianshu.com
對(duì)應(yīng)的IP是120.132.92.21
。雖然域名注冊商一般都有DNS提供,但一般不會(huì)很好。可以根據(jù)說明,在后臺(tái)把域名解析權(quán)設(shè)置到外部的DNS服務(wù)器。推薦國內(nèi)的DNSPod(已被騰訊收購)服務(wù)商,好用而免費(fèi)。也可以收費(fèi)享受更好的服務(wù)。
如果你的網(wǎng)站放在國內(nèi),那么備案是必需的。國內(nèi)網(wǎng)站底部都寫著備案信息。比如 的滬ICP備11018329號(hào)-5
,其中折線以前的部分屬于實(shí)體備案,即 所屬自然人或法人的信息,后面的5表示該實(shí)體下的第5個(gè)備案域名。
備案可以去工信部網(wǎng)站上自行申請(qǐng),或者讓網(wǎng)站提供商代備案。備案需要提供身份資料和網(wǎng)站信息資料,包括管理員本人去備案處拍照。
目前智能手機(jī)主流平臺(tái)為Android、iOS和Windows Mobile。其中iOS和Windows Mobile是不允許用戶自行安裝App的,必須從手機(jī)應(yīng)用市場下載。而Android默認(rèn)情況下也需要從市場下載,只是可以關(guān)閉這個(gè)選項(xiàng)而已。也就是說,如果你的App需要交給用戶,那么就需要注冊對(duì)應(yīng)的市場賬號(hào)。
蘋果開發(fā)者賬號(hào)分為三種:個(gè)人賬號(hào)、企業(yè)賬號(hào)、企業(yè)InHouse賬號(hào)。其中個(gè)人賬號(hào)和企業(yè)賬號(hào)均可以發(fā)布App到App Store,區(qū)別在企業(yè)賬號(hào)允許多個(gè)人協(xié)作加入開發(fā)組,擁有發(fā)布權(quán)限。這兩個(gè)賬號(hào)每年費(fèi)用99美元,在蘋果開發(fā)者網(wǎng)站上注冊購買續(xù)費(fèi)。企業(yè)InHouse賬號(hào)不允許發(fā)布App Store應(yīng)用,只允許發(fā)布ipa格式的應(yīng)用,可直接下載安裝在iPhone/iPad中,用于企業(yè)內(nèi)部使用。費(fèi)用是299美元一年。這個(gè)賬號(hào)的本意是給企業(yè)內(nèi)部分發(fā)App使用,但是這個(gè)特征給了中國某些企業(yè)一個(gè)漏洞。比如可直接安裝App的xx助手等等,這些App一般是手機(jī)助手使用企業(yè)證書重新打包的結(jié)果,不穩(wěn)定也不保證安全。當(dāng)企業(yè)證書過期后,App就無法啟動(dòng),閃退。
Windows Mobile賬號(hào)在微軟開發(fā)者網(wǎng)站上購買,流程與蘋果類似。允許發(fā)布Windows Mobile應(yīng)用。
最特別的是Android。默認(rèn)Google內(nèi)置的是Google Play市場,發(fā)布應(yīng)用也需要去Google開發(fā)者賬號(hào)注冊。但是因?yàn)閲鴥?nèi)行貨手機(jī)是刪除Play市場的,而且Android可以自由下載安裝應(yīng)用,所以這個(gè)賬號(hào)非必需。不過如果你需要國際化的話,還是需要發(fā)布一個(gè)版本去Play的。國內(nèi)大公司的應(yīng)用,比如微信等都是有Play版本。
有了ICP備案之后,網(wǎng)站有了準(zhǔn)生證。但是其他業(yè)務(wù)許可也需要申請(qǐng),比如你要開論壇需要特別申請(qǐng),需要提供視頻需要視聽服務(wù)許可證等等。甚至如果你在網(wǎng)站上賣食物的話,還需要食品對(duì)應(yīng)的許可。
一個(gè)網(wǎng)站需要運(yùn)行在服務(wù)器中。所以這個(gè)問題是考慮了域名之后第二個(gè)要考慮的問題。你的服務(wù)器放哪里?
在幾年前,這個(gè)問題只有2個(gè)答案:服務(wù)器托管和虛擬主機(jī)。現(xiàn)在有了第三個(gè)答案:云計(jì)算平臺(tái)。
虛擬主機(jī)在若干年前很流行,即在服務(wù)器中劃出一部分硬盤給你,然后給你一個(gè)FTP賬號(hào),你可以上傳內(nèi)容。功能最少、性能最差,但是最便宜。是個(gè)人站點(diǎn)的選擇。在購買前,需要詳細(xì)了解虛擬主機(jī)提供商支持什么功能,是否滿足你的應(yīng)用。
服務(wù)器托管是以前中大型網(wǎng)站的不二選擇。即自行購買機(jī)架式服務(wù)器,然后付費(fèi)托管到專屬的IDC機(jī)房中。由機(jī)房服務(wù)電源、網(wǎng)絡(luò)等基礎(chǔ)設(shè)施,然后自行管理服務(wù)器。
云計(jì)算是近幾年興起的一種服務(wù)器模式。即由大型網(wǎng)絡(luò)提供商提供一個(gè)完整的計(jì)算環(huán)境,而不需要開發(fā)者考慮機(jī)房運(yùn)維。國內(nèi)主流的包括阿里云、新浪SAE、ucloud等。
下圖是阿里云中購買虛擬機(jī)的頁面。自行選擇各種配置,然后系統(tǒng)會(huì)給你一個(gè)隔離的服務(wù)器環(huán)境。而你不需要關(guān)心你的數(shù)據(jù)在哪個(gè)物理服務(wù)器上。
一般來說有內(nèi)容的App都有注冊和登錄的流程。近幾年的趨勢是注冊流程極簡化。但是出于某些原因,一般需要驗(yàn)證手機(jī)號(hào),或者直接就是以手機(jī)號(hào)登錄。那么你需要填一個(gè)坑:手機(jī)驗(yàn)證碼。
手機(jī)驗(yàn)證碼即服務(wù)器隨機(jī)生成4-8位的數(shù)字,然后發(fā)給用戶手機(jī)上,以驗(yàn)證用戶的身份。通過程序自動(dòng)發(fā)手機(jī)短信需要通過一個(gè)叫短信網(wǎng)關(guān)的設(shè)備。這個(gè)設(shè)備或接口由運(yùn)營商。需要注意的點(diǎn)有這么幾個(gè):
App的內(nèi)容不可能保存在手機(jī)上,所有信息都是在服務(wù)器上的。包括用戶名、密碼、圖片、文章、多媒體文件。圖片和文件一般是直接存在磁盤中,而其他信息都需要數(shù)據(jù)庫。因?yàn)閿?shù)據(jù)庫會(huì)占用服務(wù)器所有資源,為保證性能,需要專門的服務(wù)器來運(yùn)行。數(shù)據(jù)庫可以使用服務(wù)器托管也可以使用云數(shù)據(jù)庫。下圖為阿里云的購買界面:
價(jià)格與數(shù)據(jù)庫類型、內(nèi)存、容量、是否使用固態(tài)硬盤有關(guān),配置越高越貴。如果使用微軟SQL Server,還需要軟件授權(quán)費(fèi)用。MySQL和PostgreSQL為免費(fèi)軟件。
如果用過新聞軟件或者微信,那么對(duì)消息通知應(yīng)該不會(huì)陌生。當(dāng)你沒在使用手機(jī),但是App有新消息時(shí),App會(huì)彈出提示框提示,同時(shí)圖標(biāo)右上角出現(xiàn)紅色的數(shù)字提示。這個(gè)功能看上去很簡單,但是其實(shí)是一個(gè)很大的話題。
【Android部分】:
Android程序一般來說在手機(jī)上會(huì)啟動(dòng)一個(gè)叫Service的程序,和服務(wù)器保持網(wǎng)絡(luò)連接。定時(shí)咨詢服務(wù)器:我有新消息么?如果有,那么則彈窗或者啟動(dòng)App。問題是手機(jī)上如果每個(gè)App都開Service的話,手機(jī)耗電量和網(wǎng)絡(luò)流量將大幅增加。這個(gè)問題無解,Google提供的類似iOS的統(tǒng)一消息機(jī)制國內(nèi)行貨手機(jī)基本都不支持。所以只能這樣了。如果有Android手機(jī)的話,可以在設(shè)置中查看運(yùn)行中的應(yīng)用,你會(huì)看到基本上每個(gè)App都有對(duì)應(yīng)的服務(wù)在運(yùn)行。
了解完常識(shí)之后,來看Service怎么搞。考慮到Android眾多的品牌和系統(tǒng)版本,其實(shí)如何在手機(jī)后臺(tái)折騰一個(gè)穩(wěn)定運(yùn)行,而又能及時(shí)接收消息的程序并不簡單。因此各大廠商都提供了現(xiàn)成的開發(fā)包。比如百度推送、騰訊信鴿推送、極光推送等。原理是由開發(fā)包負(fù)責(zé)后臺(tái)程序,以及和服務(wù)器的網(wǎng)絡(luò)通訊。需要推送時(shí),通知對(duì)應(yīng)的百度、騰訊等服務(wù)器,然后開發(fā)包通知App。以上提到的幾個(gè)開發(fā)包都有很多人使用,請(qǐng)自行選擇。
【iOS部分】:
iOS系統(tǒng)不允許App在后臺(tái)運(yùn)行。如果按了Home鍵,那么App會(huì)進(jìn)入后臺(tái),最多3分鐘后,就進(jìn)入冰凍狀態(tài),和退出沒什么兩樣。后期iOS開了幾個(gè)口子,允許特殊用途的App能夠被后臺(tái)喚醒。包括音樂播放和地理位置追蹤。
那么問題來了,如何在有新消息時(shí)啟動(dòng)App。答案是APNS,Apple Push Notification Service。蘋果為了iPhone的性能,在手機(jī)后臺(tái)啟動(dòng)了一個(gè)類似于聊天軟件的程序,和蘋果服務(wù)器始終保持網(wǎng)絡(luò)連接。當(dāng)需要通知的時(shí)候,通知蘋果服務(wù)器,由蘋果統(tǒng)一下發(fā)消息到iPhone上。
【總結(jié)】
好了,注意到兩個(gè)系統(tǒng)的推送流程中都提到通知服務(wù)器了么,也就是說,你需要在服務(wù)器上有個(gè)程序發(fā)送消息到推送服務(wù)器中。包括Apple,Google,百度,騰訊等第三方推送源。
以下內(nèi)容并不是每個(gè)App都需要,但是成功的App或者網(wǎng)站基本上都配備了。
SSL證書用于網(wǎng)絡(luò)通訊加密和域名/服務(wù)器身份驗(yàn)證。使用SSL證書之后,你的應(yīng)用域名將從http改成https。例如百度目前同時(shí)支持http://www.baidu.com
和https://www.baidu.com
。第二個(gè)網(wǎng)址打開時(shí),瀏覽器會(huì)提醒本次瀏覽行為是收到加密保護(hù)的。使用SSL證書的優(yōu)點(diǎn):
當(dāng)然,反過來,SSL證書也有缺點(diǎn):
SSL證書需要向證書簽發(fā)機(jī)構(gòu)購買。不推薦國內(nèi)半官方的CNNIC機(jī)構(gòu),因?yàn)镃hrome和Firefox已經(jīng)拉黑該機(jī)構(gòu)證書。推薦向GeoTrust,VeriSign等機(jī)構(gòu)購買,幾百美元一年。國內(nèi)的WoSign有免費(fèi)SSL證書簽發(fā),可臨時(shí)測試使用。
讀圖時(shí)代,漂亮的圖片是App和網(wǎng)站重要的組成部分,有時(shí)候是唯一的部分(Instagram)。而圖片的文件大小遠(yuǎn)大于文字。一張普通大小的風(fēng)景圖就有幾百KB,因此圖片的流量會(huì)占用大量的服務(wù)器帶寬。而帶寬是服務(wù)器使用中最大的一筆開銷,遠(yuǎn)大于電費(fèi)。因此有了專門的圖片服務(wù)器來處理大量的圖片。專業(yè)的人做專業(yè)的事情,云時(shí)代有專門的圖片服務(wù)提供商。比如七牛。按照流量和容量計(jì)費(fèi)。
想要賣東西的真正核心來了。賣東西一般有這么幾個(gè)選項(xiàng):
一般來說在線支付最方便。而市場占有率最大的就是支付寶、微信支付和銀聯(lián)支付。這三個(gè)支付都需要以企業(yè)名義申請(qǐng)商家賬號(hào),然后根據(jù)技術(shù)文檔接入支付接口到App或網(wǎng)站中。用戶付款成功后通知商家發(fā)貨。幾個(gè)商家的接入都有詳細(xì)的文檔和客服,這里說一下幾個(gè)商家的區(qū)別。
【支付寶】
網(wǎng)頁支付、客戶端支付、手機(jī)網(wǎng)頁支付、直接到款、擔(dān)保付款等等,支付寶擁有最多的產(chǎn)品類型。需要一個(gè)個(gè)審核通過,根據(jù)自己需要選擇吧。但是有個(gè)問題是支付寶網(wǎng)頁在微信中是被屏蔽的,所以用共享商品頁面到微信中時(shí),用戶在微信中支付流程是無法完成的。
【微信】
在微信中使用最順暢,但是申請(qǐng)商家賬號(hào)略糾結(jié)。申請(qǐng)時(shí)需要預(yù)先選擇營業(yè)范圍,這個(gè)范圍是不能更改的。也就是說你既要賣手機(jī),又要賣水果,就需要申請(qǐng)2個(gè)商家號(hào)。因?yàn)檫@兩個(gè)營業(yè)范圍不同。
【銀聯(lián)支付】
銀聯(lián)支付的手機(jī)版網(wǎng)頁沒有被微信屏蔽,所以通用性最高。但是問題在于銀聯(lián)賬號(hào)普及型極低,支付時(shí)只能臨時(shí)輸入銀行卡號(hào)等信息支付,略麻煩。另外銀聯(lián)穩(wěn)定性不如前2家,有支付成功,但是沒有通知商家的丟單現(xiàn)象。需要及時(shí)做好對(duì)賬和補(bǔ)單操作。
微信開放平臺(tái)提供以下功能,所以看自己需要接入。
最后冰山坐鎮(zhèn)
當(dāng)你看到冰山的時(shí)候,你的底下是10倍以上的坑需要填