人(rén)
已閱讀
已閱讀
APP開發如何選擇合适的(de)技術架構?
來(lái)源:lexintech.com 發布時(shí)間:2017-08-24
找一家外包公司做(zuò)APP開發,除了(le)要考慮團隊實力,價格等因素外,還(hái)應該注意APP的(de)技術架構選擇。深圳APP開發公司有的(de)是銷售型的(de)公司,技術能力不怎麽樣,銷售吹得(de)天花亂墜,有的(de)是技術型的(de)公司,技術實力很強,但經常接不到單,公司随時(shí)會關門。在客戶不懂(dǒng)技術的(de)情況下(xià),項目做(zuò)得(de)一團糟。今天,小編就跟大(dà)家介紹一下(xià),開發一款APP,應該如何選擇合适的(de)技術架構。
在APP進入開發階段之前,技術選型是必須要完成的(de)一項重要工作。它是對(duì)産品非功能需求、架構設計中的(de)各種要素及約束的(de)綜合評估以及體現。也(yě)許你找的(de)開發公司已經提供了(le)統一的(de)技術開發框架,也(yě)許開發公司以前産品的(de)技術選型恰好可(kě)以滿足新項目的(de)要求,但是即便如此,了(le)解一個(gè)産品技術選型的(de)過程也(yě)有助于我們去從技術方案角度審視産品的(de)各種非功能性約束。
技術選型是各個(gè)方面各種因素的(de)綜合抉擇的(de)結果,因此這(zhè)項工作格外考驗選型者對(duì)産品、架構的(de)把握以及對(duì)各項技術框架的(de)熟悉程度。
通(tōng)過下(xià)面的(de)示意圖,我們看一下(xià)技術選型涉及的(de)各個(gè)方面:
從上圖可(kě)以看到,技術選型實際上是從不同維度對(duì)産品進行分(fēn)解的(de)過程。通(tōng)過分(fēn)析,合理(lǐ)分(fēn)解出各項技術需求,然後對(duì)各項技術需求進行綜合評估并最終選擇合适的(de)框架。
首先,所有産品都可(kě)以從架構上大(dà)體上劃分(fēn)爲幾類,具體到每一類都有相似的(de)架構風格,它們通(tōng)常在各種架構要素的(de)具體要求上有很大(dà)的(de)相似性。因此确定産品類型和(hé)架構風格有助于我們參照(zhào)現有的(de)産品來(lái)做(zuò)技術選型,這(zhè)樣可(kě)以大(dà)大(dà)節省技術選型的(de)工作量并降低由于技術選型不合适而帶來(lái)的(de)後期的(de)開發維護風險。
圖中隻是對(duì)産品做(zuò)了(le)一個(gè)最抽象的(de)類型劃分(fēn),随著(zhe)後續選型内容的(de)講解,你就會發現實際上上述的(de)每種類型又會細分(fēn)爲不同類型。如WEB應用(yòng),信息展現類和(hé)社交類選型顯然是不同的(de)。除此之外,每種産品類型的(de)選型也(yě)會存在重疊,如RCP和(hé)RIA應用(yòng),盡管UI層的(de)選型完全不同,但是并不妨礙兩者後端選型的(de)相似性,如兩者都是數據展現及交互複雜(zá)的(de)企業應用(yòng)。
總之,産品類型就如程序設計上的(de)設計模式一樣,便于我們快(kuài)速将産品分(fēn)解爲幾個(gè)重要的(de)架構要素并且對(duì)應到其常見的(de)解決方案,爲我們的(de)技術選型工作發揮很大(dà)的(de)指導作用(yòng)。
其次,架構分(fēn)層可(kě)以幫助我們以“分(fēn)而治之”的(de)思路來(lái)進行技術選型。這(zhè)既包括“邏輯分(fēn)層”,也(yě)包括“物(wù)理(lǐ)分(fēn)層”。邏輯分(fēn)層使得(de)我們将技術選型分(fēn)爲展現層選型、業務層選型、持久層選型以及數據資源層選型等,然後我們再按步完成選型工作,每一步除了(le)要考慮其對(duì)應的(de)架構要素外,還(hái)要考慮上下(xià)層的(de)集成方案。如方案的(de)複雜(zá)度、健壯性、性能等。而“物(wù)理(lǐ)分(fēn)層”則确定了(le)各層之間的(de)通(tōng)信框架選型,同樣我們需要考慮通(tōng)信的(de)性能、安全性、有效性等。
最後,無論是産品類型還(hái)是架構分(fēn)層,這(zhè)兩者的(de)結合都是便于我們将技術架構選型進行合理(lǐ)的(de)分(fēn)解,将關注點充分(fēn)聚焦,從而在各框架間做(zuò)有效取舍。但是除了(le)各項技術要素及指标外,還(hái)有很重要的(de)一方面對(duì)技術選型有非常大(dà)的(de)影(yǐng)響,那就是學習(xí)成本、社區(qū)活躍度和(hé)技術成熟度。
對(duì)于兩個(gè)技術框架的(de)各項技術指标相近的(de)情況,我們自然要選擇學習(xí)成本更低、社區(qū)活躍度更高(gāo)以及技術成熟度更高(gāo)的(de)一個(gè)。
對(duì)于一些新出現的(de)框架,雖然理(lǐ)念非常好、社區(qū)非常活躍,但是其框架可(kě)能并不夠健壯,需要更多(duō)的(de)時(shí)間在生産環境中去完善。此時(shí)縱使其有更好的(de)性能等的(de)表現,我們也(yě)要審慎的(de)來(lái)選擇,或者在一些非核心的(de)模塊局部進行引入試驗,或者不引入該框架,而是合理(lǐ)設計系統的(de)集成方案,以便在其足夠完善時(shí)能夠輕易的(de)進行框架遷移替換。
換句話(huà)說,當我們認爲一款新框架有足夠好的(de)性能、可(kě)擴展性、可(kě)伸縮性時(shí),我們更需要冷(lěng)靜的(de)考慮以下(xià)它是否足夠健壯,它的(de)這(zhè)些特性是否是我們所必須的(de)。有時(shí)候你會發現,它很快(kuài)、很靈活,但是卻并不是你必須要擁有的(de),你引入它帶來(lái)的(de)系統質量的(de)提升遠(yuǎn)遠(yuǎn)抵消不了(le)因爲維護它增加的(de)成本。
總之,選擇一款最合适你的(de)産品的(de)框架,而不需要對(duì)各項架構要素進行極限追求。這(zhè)也(yě)是爲什(shén)麽各種新框架滿天飛(fēi)的(de)當下(xià),很多(duō)十幾年前的(de)框架仍保持旺盛的(de)生命力的(de)原因。
- 上一篇:APP開發公司的(de)前端團隊如何技術積累?
- 下(xià)一篇:APP開發如何解決收不到驗證碼的(de)問題