人
已阅读
已阅读
APP开发如何选择合适的技术架构?
来源:lexintech.com 发布时间:2017-08-24
找一家外包公司做APP开发,除了要考虑团队实力,价格等因素外,还应该注意APP的技术架构选择。深圳APP开发公司有的是销售型的公司,技术能力不怎么样,销售吹得天花乱坠,有的是技术型的公司,技术实力很强,但经常接不到单,公司随时会关门。在客户不懂技术的情况下,项目做得一团糟。今天,小编就跟大家介绍一下,开发一款APP,应该如何选择合适的技术架构。
在APP进入开发阶段之前,技术选型是必须要完成的一项重要工作。它是对产品非功能需求、架构设计中的各种要素及约束的综合评估以及体现。也许你找的开发公司已经提供了统一的技术开发框架,也许开发公司以前产品的技术选型恰好可以满足新项目的要求,但是即便如此,了解一个产品技术选型的过程也有助于我们去从技术方案角度审视产品的各种非功能性约束。
技术选型是各个方面各种因素的综合抉择的结果,因此这项工作格外考验选型者对产品、架构的把握以及对各项技术框架的熟悉程度。
通过下面的示意图,我们看一下技术选型涉及的各个方面:
从上图可以看到,技术选型实际上是从不同维度对产品进行分解的过程。通过分析,合理分解出各项技术需求,然后对各项技术需求进行综合评估并最终选择合适的框架。
首先,所有产品都可以从架构上大体上划分为几类,具体到每一类都有相似的架构风格,它们通常在各种架构要素的具体要求上有很大的相似性。因此确定产品类型和架构风格有助于我们参照现有的产品来做技术选型,这样可以大大节省技术选型的工作量并降低由于技术选型不合适而带来的后期的开发维护风险。
图中只是对产品做了一个最抽象的类型划分,随着后续选型内容的讲解,你就会发现实际上上述的每种类型又会细分为不同类型。如WEB应用,信息展现类和社交类选型显然是不同的。除此之外,每种产品类型的选型也会存在重叠,如RCP和RIA应用,尽管UI层的选型完全不同,但是并不妨碍两者后端选型的相似性,如两者都是数据展现及交互复杂的企业应用。
总之,产品类型就如程序设计上的设计模式一样,便于我们快速将产品分解为几个重要的架构要素并且对应到其常见的解决方案,为我们的技术选型工作发挥很大的指导作用。
其次,架构分层可以帮助我们以“分而治之”的思路来进行技术选型。这既包括“逻辑分层”,也包括“物理分层”。逻辑分层使得我们将技术选型分为展现层选型、业务层选型、持久层选型以及数据资源层选型等,然后我们再按步完成选型工作,每一步除了要考虑其对应的架构要素外,还要考虑上下层的集成方案。如方案的复杂度、健壮性、性能等。而“物理分层”则确定了各层之间的通信框架选型,同样我们需要考虑通信的性能、安全性、有效性等。
最后,无论是产品类型还是架构分层,这两者的结合都是便于我们将技术架构选型进行合理的分解,将关注点充分聚焦,从而在各框架间做有效取舍。但是除了各项技术要素及指标外,还有很重要的一方面对技术选型有非常大的影响,那就是学习成本、社区活跃度和技术成熟度。
对于两个技术框架的各项技术指标相近的情况,我们自然要选择学习成本更低、社区活跃度更高以及技术成熟度更高的一个。
对于一些新出现的框架,虽然理念非常好、社区非常活跃,但是其框架可能并不够健壮,需要更多的时间在生产环境中去完善。此时纵使其有更好的性能等的表现,我们也要审慎的来选择,或者在一些非核心的模块局部进行引入试验,或者不引入该框架,而是合理设计系统的集成方案,以便在其足够完善时能够轻易的进行框架迁移替换。
换句话说,当我们认为一款新框架有足够好的性能、可扩展性、可伸缩性时,我们更需要冷静的考虑以下它是否足够健壮,它的这些特性是否是我们所必须的。有时候你会发现,它很快、很灵活,但是却并不是你必须要拥有的,你引入它带来的系统质量的提升远远抵消不了因为维护它增加的成本。
总之,选择一款最合适你的产品的框架,而不需要对各项架构要素进行极限追求。这也是为什么各种新框架满天飞的当下,很多十几年前的框架仍保持旺盛的生命力的原因。