国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

影響JavaScript應(yīng)用可擴(kuò)展性因素

2019-11-08 01:49:35
字體:
供稿:網(wǎng)友

引言:javaScript 應(yīng)用變得越來越龐大。這是因?yàn)槭褂?a href="http://m.survivalescaperooms.com/article.asp?typeid=36">Javascript能做的事情遠(yuǎn)比我們大多數(shù)人所需求的要多得多。我們不能僅因?yàn)榧夹g(shù)上可行,就去考慮軟件系統(tǒng)的擴(kuò)展問題。為一個(gè)不需要擴(kuò)展的系統(tǒng)增加擴(kuò)展性是不值得的,尤其對最終用戶來說,這只會(huì)使系統(tǒng)顯得更加笨重。 本文選自《大型JavaScript應(yīng)用最佳實(shí)踐指南》。

  作為JavaScript 開發(fā)者和架構(gòu)師,必須承認(rèn)并了解影響擴(kuò)展性的因素。雖然不是所有JavaScript 應(yīng)用都需要擴(kuò)展,但總有一部分是需要的。比如,我們很難確認(rèn)某個(gè)系統(tǒng)不需要擴(kuò)展,不需要為它的可擴(kuò)展性花費(fèi)時(shí)間和精力。除非我們開發(fā)的系統(tǒng)不需要后期維護(hù),否則總會(huì)有對增長和成功的預(yù)期。   從另一方面講,JavaScript 應(yīng)用并非天生成熟的可擴(kuò)展應(yīng)用,而是逐步積累、進(jìn)化成的可擴(kuò)展應(yīng)用。對于JavaScript 開發(fā)人員來說, “可擴(kuò)展性的影響因素”是一個(gè)有效的工具。我們不希望一開始就過度設(shè)計(jì),更不希望被早期設(shè)計(jì)綁住手腳,限制了可擴(kuò)展性。

對可擴(kuò)展的需要

 擴(kuò)展軟件是一種基于反應(yīng)的活動(dòng)。考慮可擴(kuò)展性的影響因素可以幫助我們積極地做出準(zhǔn)備。在應(yīng)用后端等系統(tǒng)中,這種“擴(kuò)展活動(dòng)”通常是被自動(dòng)處理的,可能是短暫的訪問高峰。例如,激增的用戶請求導(dǎo)致負(fù)載驟增,這時(shí)負(fù)載均衡器介入,將負(fù)載均勻地分派到后端服務(wù)器。在某些極端情況下,系統(tǒng)可能會(huì)在需要時(shí)自動(dòng)準(zhǔn)備新的后端資源來應(yīng)對變化,當(dāng)不再需要時(shí)將這些資源自動(dòng)銷毀。   但是前端不一樣,前端的擴(kuò)展活動(dòng)通常發(fā)生的時(shí)間周期較長,而且更加復(fù)雜。JavaScript應(yīng)用的獨(dú)特一面在于,瀏覽器能獲得的硬件資源就是它能使用的全部硬件資源,它從后端獲取的數(shù)據(jù)可以很好地按比例增長,但這不是我們需要考慮的。隨著軟件的不斷演進(jìn),我們要想成功做點(diǎn)什么,就必須關(guān)注“可擴(kuò)展性的影響因素”。 圖片描述  上圖自上而下地展示了可擴(kuò)展性的影響因素。首先是用戶提出軟件需要實(shí)現(xiàn)的功能,接著功能尺寸、與其他功能的關(guān)系等因素會(huì)直接影響開發(fā)團(tuán)隊(duì)的構(gòu)成,沿著箭頭自上而下影響相應(yīng)地增長。

不斷增長的用戶

  如果構(gòu)建的應(yīng)用只服務(wù)于一個(gè)用戶,就沒有必要這么大費(fèi)周章了。基于典型用戶的需求來構(gòu)建的應(yīng)用將會(huì)為更多用戶提供服務(wù)。所以在應(yīng)用進(jìn)化過程中,應(yīng)該預(yù)見到用戶的增長。盡管并沒有確切的目標(biāo)用戶數(shù)量,不過,基于應(yīng)用自身的特點(diǎn),仍然可以使用http://www.Alexa.com/這類工具作為基準(zhǔn),設(shè)定活躍用戶數(shù)量的目標(biāo)值。比如,如果我們的應(yīng)用是任何人都可以訪問的,就會(huì)希望有大量的注冊用戶;但如果僅針對個(gè)人安裝,那么加入系統(tǒng)的用戶數(shù)量的增長就會(huì)比較緩慢。但即使如此,我們還是希望部署數(shù)量不斷增加,以提升軟件的用戶總量。   與前端界面交互的用戶數(shù)量是擴(kuò)展應(yīng)用最大的影響因素。每增加一個(gè)用戶都伴隨著各種架構(gòu)層面上指數(shù)級(jí)的增長。如果自上而下地看,用戶決定一切。應(yīng)用的存在終歸是為了服務(wù)用戶。JavaScript 代碼越易于擴(kuò)展,就越能取悅用戶。

添加新功能

  也許能夠取悅用戶的功能就是用戶基數(shù)龐大的成功軟件最顯而易見的附帶產(chǎn)物。軟件的功能會(huì)隨著用戶數(shù)不斷增長,盡管新功能顯而易見,但還是經(jīng)常被忽視。明明知道增加新功能不可避免,但我們還是很少思考如何合理地在代碼中實(shí)現(xiàn)源源不斷的新需求。正是缺少這樣的思考,阻礙了我們繼續(xù)發(fā)展。   這在軟件交付初期非常棘手。軟件開發(fā)商會(huì)竭盡全力吸引新的用戶,但由于初期階段能夠吸引用戶的功能有限,導(dǎo)致收效甚微。沒有足夠多的成熟特性,沒有龐大的開發(fā)團(tuán)隊(duì),也沒有機(jī)會(huì)去打破用戶習(xí)慣。當(dāng)沒有這些限制條件時(shí),比較容易能夠?qū)崿F(xiàn)一些功能讓已有或潛在用戶感到眼花繚亂。但是我們?nèi)绾尾拍茉谠缙跊Q策時(shí)迫使自己考慮周全?如何才能在提供更多功能的前提下確保沒有限制我們擴(kuò)展軟件的能力?   你也許會(huì)發(fā)現(xiàn),不管是開發(fā)新功能還是增強(qiáng)已有的功能,都是可擴(kuò)展JavaScript 架構(gòu)始終需要考慮的問題。我們需要考慮的不僅僅是軟件推廣文案中羅列的各種功能,還要考慮這些功能的復(fù)雜度、各個(gè)功能之間的共性以及各個(gè)功能有多少“移動(dòng)部件(MovingParts)”。當(dāng)自上而下審視JavaScript 架構(gòu)時(shí),如果用戶是第一層級(jí),那么各個(gè)功能就是下一個(gè)層級(jí)。從這個(gè)層級(jí)開始擴(kuò)展變得紛繁復(fù)雜。   使功能變復(fù)雜的,并不是某一個(gè)單獨(dú)用戶,而是一群需要這個(gè)功能的用戶。從這個(gè)角度講,我們不得不思考使用軟件的用戶的特征或者角色,以及哪些功能提供給哪些角色。對這種組織結(jié)構(gòu)的需求在一開始并不明顯。直到后期,我們先前的決策使得引入基于角色的特性難以實(shí)施時(shí),它才會(huì)顯現(xiàn)出來。并且,這還取決于我們的軟件是如何部署的,有時(shí)可能需要支持多種不同的用例。比如,可能幾個(gè)大機(jī)構(gòu)用戶,都有各自的部署方案,并且很可能有各自獨(dú)特的用戶結(jié)構(gòu)上的限制。這是十分具有挑戰(zhàn)性的,如果希望做到可擴(kuò)展,架構(gòu)就需要支持這些組織結(jié)構(gòu)迥然不同的需求。

雇傭更多的開發(fā)者

  實(shí)現(xiàn)軟件的各種功能需要可靠的JavaScript 開發(fā)人員,并且他們應(yīng)該知道自己在做什么。能有一個(gè)這樣的開發(fā)者團(tuán)隊(duì)是非常幸運(yùn)的事情。團(tuán)隊(duì)組建不是自發(fā)的,在團(tuán)隊(duì)可以開發(fā)出優(yōu)秀代碼之前,需要在某種程度上建立起彼此之間的信任和尊重。一旦開始,我們就處于一個(gè)良好的狀態(tài)。再看一下前面提到的自上而下的可擴(kuò)展性影響因素,我們要開發(fā)的功能會(huì)直接影響團(tuán)隊(duì)的健康。這之間的平衡基本上是無法維持的,但是可以盡量接近。缺少人手但又有太多的功能要實(shí)現(xiàn),這會(huì)讓團(tuán)隊(duì)成員倍感壓力。當(dāng)如期交付毫無希望時(shí),大家就不會(huì)努力嘗試了。另一方面,如果開發(fā)人員過多,要開發(fā)的功能有限,就會(huì)帶來更多的溝通負(fù)擔(dān),而定義職責(zé)又很困難,所以當(dāng)大家對職責(zé)沒有共識(shí)時(shí),離失敗就不遠(yuǎn)了。   相對于擁有太多的開發(fā)人員,開發(fā)人員不足反而更易于功能的開發(fā)。當(dāng)面臨巨大的功能開發(fā)壓力時(shí),是一個(gè)很好的時(shí)機(jī)來退后想一想:“如果我們有更多的開發(fā)者,會(huì)與現(xiàn)在有哪些不同呢?”這個(gè)問題經(jīng)常被忽略掉,直接去招更多的開發(fā)者。而讓大家驚訝的是,招聘到新人后功能的產(chǎn)出并沒有立竿見影的效果。這就是為什么我們需要一個(gè)沒有愚蠢問題、責(zé)任分配明確的研發(fā)文化。   團(tuán)隊(duì)組織結(jié)構(gòu)和開發(fā)方法并沒有定式,開發(fā)團(tuán)隊(duì)需要有針對性地處理開發(fā)中的情況,最大的問題無疑就是功能的數(shù)量、規(guī)模和復(fù)雜度。所以,這些才是我們在建立團(tuán)隊(duì)之初,以及團(tuán)隊(duì)成長過程用應(yīng)該考慮的。后一點(diǎn)尤為重要,因?yàn)楫?dāng)功能大量增加后,初期的團(tuán)隊(duì)結(jié)構(gòu)是無法適應(yīng)的。   鑒于這些擴(kuò)展影響因素會(huì)隨著時(shí)間推移而改變,我們以架構(gòu)的角度來調(diào)整設(shè)計(jì)或者修改產(chǎn)品,以應(yīng)對擴(kuò)展所面臨的挑戰(zhàn)。 若要進(jìn)一步討論這些影響擴(kuò)展的各項(xiàng)因素,深入了解它們并準(zhǔn)備一個(gè)核對清單,以幫助我們實(shí)現(xiàn)可擴(kuò)展的JavaScript 應(yīng)用來響應(yīng)這些事件,可見《大型JavaScript應(yīng)用最佳實(shí)踐指南》一書。   本文選自《大型JavaScript應(yīng)用最佳實(shí)踐指南》,點(diǎn)此鏈接可在博文視點(diǎn)官網(wǎng)查看此書。                     

圖片描述

  想及時(shí)獲得更多精彩文章,可在微信中搜索“博文視點(diǎn)”或者掃描下方二維碼并關(guān)注。                         圖片描述


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 西城区| 固阳县| 三亚市| 施秉县| 乌拉特前旗| 雷山县| 永安市| 织金县| 常山县| 南岸区| 塔河县| 桐城市| 仙游县| 揭东县| 茶陵县| 民权县| 东阳市| 班玛县| 冷水江市| 延津县| 赤峰市| 吉安市| 离岛区| 上饶县| 惠东县| 同德县| 平安县| 探索| 鸡泽县| 大石桥市| 阳新县| 临沭县| 长泰县| 肃北| 宜宾市| 德保县| 尉犁县| 来宾市| 邵东县| 镶黄旗| 新民市|