W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
人類一思考,上帝就偷笑了。 -- 《下一個倒下的會不會是華為》
能使用框架來進(jìn)行項目開發(fā),和知道為何使用此框架進(jìn)行項目開發(fā)明顯不同。
對框架的選擇,名義上是架構(gòu)師的職責(zé),但對于充滿好奇心和有著更強(qiáng)求知欲的開發(fā)人員來說,同樣應(yīng)該給予關(guān)注。
之所以選擇一個框架進(jìn)行項目開發(fā),明顯可以減少很多不必要的重復(fù)編碼,但更深層次,則是可以減少開發(fā)周期、統(tǒng)一開發(fā)規(guī)范、降低項目風(fēng)險,不致于項目失控。
所以,在決定使用PhalApi框架前,對于此框架是否適用于即將啟動的項目進(jìn)行一番思索,是大有裨益的。通過 推定框架 ,有助于避免因采用不當(dāng)?shù)目蚣芏鴮椖吭斐刹槐匾淖枇Α?
此框架特別適用于現(xiàn)在各種 移動App項目的后臺接口開發(fā),以及服務(wù)器間的后臺接口開發(fā),同時具有應(yīng)對 海量數(shù)據(jù) 的能力。并且還可以掛靠多個項目,也可以很好地支持多個終端、開放不同的入口。
同時提供了可以很好應(yīng)對海量數(shù)據(jù)的解決方案:如沒有提供圖片上傳的代碼或工具而希望開發(fā)人員將圖片上傳到CDN,支持大數(shù)據(jù)的存儲,以及后臺計劃任務(wù)。
基于此,我們采用了主流設(shè)計,即將框架設(shè)計成使用HTTP協(xié)議并JSON格式返回結(jié)果的接口請求,因為這能為大眾熟悉并潛意識接受。通過規(guī)范的接口調(diào)用和返回,有利于客戶端和后臺開發(fā)人員的關(guān)系融洽。
雖然框架和工程實踐間沒有必然的聯(lián)系,但這其中有一些微妙的關(guān)系。
一種代碼編寫的方式會形成一種開發(fā)的風(fēng)格;一種開發(fā)風(fēng)格會奠定一個團(tuán)隊的合作氛圍;一個團(tuán)隊的合作氛圍會決定項目交付的質(zhì)量。
而PhalApi所提倡和希望做到的正是通過讓后臺接口開發(fā)更簡單以讓后臺開發(fā)人員心情更愉悅,從而為客戶端提供高質(zhì)量穩(wěn)定的接口以支撐更多優(yōu)質(zhì)App的開發(fā)。并且,結(jié)合重構(gòu)、測試驅(qū)動開發(fā)和持續(xù)集成等,可以讓你的項目如虎添翼,在快速交付的同時,體驗編碼開發(fā)的樂趣。
架構(gòu)約束程序。
約束有時會讓開發(fā)者處處受阻。但好的約束能夠統(tǒng)一規(guī)范而不致于項目代碼凌亂不堪,也不會輕易地允許低級開發(fā)新手犯下一些本可避免的BUG。正如,我們都討厭等待紅綠燈,但我們必須肯定它對交通和生命安全保障的作用。
正如前面說到的,我們關(guān)注在海量數(shù)據(jù)下為移動App提供穩(wěn)定的接口,我們提倡敏捷開發(fā)下的快速交付。所以我們?nèi)サ襞c接口開發(fā)無關(guān)的功能,沒有提供視圖渲染和模板解析的操作。
但只是這樣而已嗎?
不!我們還關(guān)注對復(fù)雜領(lǐng)域業(yè)務(wù)的應(yīng)對和解決方案。
如果我們PhalApi框架所關(guān)注的,也是你們項目所關(guān)注的,那么我們有理由相信PhalApi能為你的項目帶來很多友好的約束和貼心的幫助。
很多框架都要強(qiáng)調(diào)其能提供的性能,然后PHP本身就是動態(tài)的腳本語言,要想提高項目的運(yùn)行速度,就是要進(jìn)行減法,即減少不必要的PHP代碼。但是前面強(qiáng)調(diào)性能的框架則做了與其承諾矛盾的做法:為框架增添了很多項目可能不需要用到的功能。明顯地就是一系列既定的執(zhí)行流程和偵聽事件、回調(diào)、調(diào)度等等。
而這些,勢必會對性能有所影響,特別當(dāng)應(yīng)用項目不需要這些特性卻又不能定制簡化時,框架所謂的強(qiáng)悍功能會適得其反。
對于這一塊,我們則提供了極大的空間。因為,入口的文件,由你指定。除了一些必要的加載外,很多都可以支持自定義和定制化。
而且我們也使用autobench進(jìn)行了壓力測試和通過xhprof進(jìn)行了性能剖析,證明PhalApi框架在性能上確實如我們預(yù)料的那樣 -- 快!
不可否認(rèn),PhalApi還是太年輕了。
PhalApi正式開源于2015年1月,但是我們在努力完善中并致力于有助于快速開發(fā)的后臺接口。我們“減少不必要的創(chuàng)新”,我們堅持恒星一般的接口并很好地支持框架升級, 我們盡量提供優(yōu)秀的文檔和及時的溝通幫助。
更為重要的是,這是一個不只為框架而框架的PhalApi框架。
如果在開發(fā)過程中對所遇到的問題而框架不能很好解決和支持時,可以考慮改寫框架,將某一目標(biāo)或?qū)傩蕴嵘良軜?gòu),其他團(tuán)隊成員則無須再編寫重復(fù)代碼去重復(fù)實現(xiàn)。因為,你會發(fā)現(xiàn),在PhalApi下,你可以輕松做到這一點(diǎn): 小步快跑下的浮現(xiàn)式設(shè)計 。
在Nginx下,你可以快速部署此框架。
以下是為初學(xué)者參考的Nginx配置:
server {
listen 80;
server_name demo.phalapi.com;
root /home/apps/projects/demo.phalapi.com/Public;
charset utf-8;
access_log logs/demo.phalapi.com.access.log;
error_log logs/demo.phalapi.com.error.log;
location / {
index index.html index.htm index.php;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
除此之前,我們已經(jīng)對框架的結(jié)構(gòu)目錄進(jìn)行了很好地劃分。包括配置文件、日志文件、框架代碼、多個項目掛靠、不同的入口開放以及多App的支持等等。
在結(jié)合Phing進(jìn)行一鍵發(fā)布時,你會發(fā)現(xiàn),項目的部署發(fā)布同樣方便快捷。
這塊學(xué)習(xí)成本是不可避免的,畢竟PhalApi是一個新的框架,很多開發(fā)同學(xué)之前都沒有接觸過。
但我們盡量站在后臺開發(fā)同學(xué)的角度,用心地設(shè)計每一個接口,編寫每一行代碼。在源代碼里面傾注了必要的注釋和使用示例,并同步提供了詳細(xì)的文檔說明和實戰(zhàn)代碼,以便快速入門上手。
更為重要的是,我們都是盡可能按照主流慣例來設(shè)計接口規(guī)范,以便各位同學(xué)可以快速上手,就仿佛這個框架是出自你的設(shè)計一樣。
我們致力于提供可以快速開發(fā)后臺接口的框架,并希望能對你的項目有實際的幫助。所以,我們不會鼓吹PhalApi框架,因為沒有可以適用于任何領(lǐng)域、任何實際項目的框架。也就是沒有所謂的銀彈,也沒有一種放之四海而皆準(zhǔn)的方法,起碼你可能需要作一些調(diào)整。
而且,我們也不會贊同你不加考慮就采用PhalApi框架,因為如果此框架不利于你項目的開發(fā),甚至有反作用,這顯然有悖于我們的初心:為你的項目提供實質(zhì)的幫助。因此,在采用PhalApi框架前,你應(yīng)該稍微查看一下我們的文檔,和相關(guān)的源代碼。以下是一些初步的建議。
1、架構(gòu)無關(guān):如果你的只是小項目,無需要過多考慮涉及大規(guī)模決策、各模塊及元素、屬性間的微妙關(guān)系,即架構(gòu)無關(guān)時。
PhalApi和其他框架一樣,也能滿足小項目的開發(fā)需求。
2、專注架構(gòu):如果你需要專注框架,則更需要理解你項目將面臨的約束、風(fēng)險和需要滿足的質(zhì)量屬性。
然后評估PhalApi是否能統(tǒng)一這此約束、降低風(fēng)險并滿足這些質(zhì)量屬性。若能,則用之;若不能,則另取之。
3、提升架構(gòu):最后,如果你發(fā)現(xiàn)PhalApi擁有不斷演進(jìn)的能力并有助于浮現(xiàn)式設(shè)計(我們也正是如此設(shè)計和研發(fā)的),并且愿意
將PhalApi框架提升到你們產(chǎn)品線的后臺接口框架,那么你將能為你的團(tuán)隊、項目乃至公司提供一個更優(yōu)質(zhì)的框架,并會為之感到興奮和驕傲。
當(dāng)然,“能力越大,責(zé)任也就越大”。但我們作為程序員,不正是希望能以已之所學(xué),服務(wù)于人嗎?
正如其他負(fù)責(zé)任的開源框架一樣,我們在說明PhlaApi框架適用場景的同時,也應(yīng)該指明不應(yīng)該使用PhalApi的時機(jī)。其中包括但不限于:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: