关于应用层前后端软件开发的思考

“应用层的软件开发其实就是对各个已有开源框架和公司自己造的轮子的一种综合运用,简单来说,就是你有很多功能强大的工具,你要做的就是怎么组合这些工具,从而符合场景要求。”

1

大前端的工作也是对

现有框架的技术选型,从而界定项目边界

iOS,Android,以及各种流行的H5框架,其实没有本质的区别,他们都是从硬件层,再加一层协议层,到组件层,再到应用层,每一个层次都向外提供各种业务接口,从而达到提供满足APP 所有功能的能力。

虽然,各自运用的语言都不相同,但是语言层面的只是写的形式不同,但根本的东西都是相通的。也就是几行代码就表示一种能力。

对于一个一般的APP来说,iOS的OC,swift,Android的Java,Kotlin, H5的比如Angular JS,ReactNative,ionic,等等,不用完全掌握各种语言的细节,只要会一些基本的语言能力,就可以完成相应的基本APP开发。

对于一些特殊功能的接口的调用,等用的时候再查一下就可以了。比如硬件层,也无外乎都是一些硬件厂商提供的。对于一些成熟的社区,对不同的硬件功能实现也都会有相应的开源库,这些开源库改一改也就能满足具体业务需求了。当然有的也要自己造轮子,但一般大公司都有基础开发团队,也就是有自己的专门造轮子的团队。

如果没有相应的开源库,就需要自己研究一下,具体踩一些坑,运用一些逻辑也都会实现。

当然这是指一般的APP,一些用户量大的APP,也会有专门的人员做内存优化,界面优化,也会处理一些图像。一些基本的性能优化就会给客户明显的感觉。更细粒度的优化其实已经算是追求用户极致体验的范畴了。坦白说,对用户的感官体验不会带来明显的感觉。当然也会有一部分用户是能够察觉出来的。

2

后台的技术主要源自架构的设计,

技术的选型,以及对已有业务功能的划分


这里主要以Java为例,Java是比较重的,而且因为开源的原因,整个JAVA的生态特别好,有各种各样的开源框架和库,所以相对于.NET的自己造轮子,选择Java开发比较大型的项目是一种节省成本的做法。

后台的技术主要是围绕的数据库而展开的。有网关层接受客户端的请求,从而业务层和数据逻辑层把收到的数据存入DB. 其中涉及到数据协议的转化,以及一些传输协议。

数据库有RDMS,比如mysql,oracle,SQL Server等。有NOSQL,比如MongoDB,以及NEWSQL。缓存的有Redis,memcached.

多台,多机房部署时为了保证数据一致性,也会用到分布式锁,分布式事务,幂等。

现在用到的微服务架构,也会涉及到限流,降级,熔断,服务治理,注册与发现,配置中心等。

比如现在流行的spring boot ,spring Cloud,ZK,Consul, etcd ,eureka等,通过对现有技术框架的选型和组合,形成一套高可用,高并发的架构体系。

3

前后端通过数据连通,

数据是整个项目的精髓。


对于后台程序而言,可以有能力处理大量的读写请求,并且准确记录数据一直以来都是后台的追求。

我们通过各种各样的方式来保证数据的一致性和可靠性。而且也通过各种各样的技术手段来确保在海量请求的情况下,可以保证整个项目的稳定性,高可用,高并发。

一切软件的最终目的都是为了处理,记录,展示,分析数据。从而以可视化的展现来给人提供决策参考。传统的关系性数据库在数据量少的情况下,可以很好的连接不同变量,从而大大简化数据的查询和调用展示的时间。

关系性数据库把多维度的变量通过主键关联,从而可以拥有方便处理和查询的能力。但是面对越来越大量的数据,为每一个数据编制一种关联关系已经越来越难。很多数据之间是没有什么联系的。

所以这个时候非关系性数据库就产生了。他可以解决大量非关系数据的存储和查询问题。为海量数据的分析,处理,以及应对大数据的现实情况提供了可行性解决方案。

4

软件是一个综合性的系统项目,

这个系统可以使人类打破空间和时间的局限


软件的诞生,大大的简化了人们获取优质咨询的过程。也缩短了人与人,人与组织的连接时间,软件可以大幅度提高人们的生活水平,也会高效的管理整个组织体系。使诸如资源管理,人力管理,财富管理,企业流程管理变得科学化和系统化。

软件的诞生,标志着人类进入了新的纪元。而接着的人工智能的到来,也将进一步加快社会的结构升级。也会进一步方便人们的生活,给人类以全新的生命体验,也会加速提升人们的认知水平。通过科技来改变整个人类的生活。

虽然新技术不断涌现,但是软件行业的技术本质不会改变,精髓部分始终都不会改变,只是表现形式有所变化。关于应用层的基本思维方式,以及一些本质的东西都是以最简单方式表达出来。

当然,软件的技术形式,各个技术的具体实现细节,要踩的坑,也都是遵循着一定的规律。当我们掌握了这个规律,就会有坚定的信心,做出来是迟早的,只是时间的问题。

其实,所有问题的本质都可以归结到时间的稀缺。我们并不是没有解决具体问题的能力和信心,而是怎么以有限的时间解决问题,达到降本增效的目的,才是我们作为技术工作者的基本能力和应该持续学习的原因。

Java Geek Tech wechat
欢迎订阅 Java 极客技术,这里分享关于 Java 的一切。