大多数公司移动开发的现状
目前大多数公司移动开发过程中都会多多少少遇到下面的这几种场景:
场景A(格式)
- 移动端:老哥,要开发了,需要把接口给我。
- 后端:这个之前有给PC的接口,你直接调Dubbo接口吧,你用那个字段就取哪个字段好了
- 移动端:???这么多字段哪个是我要的,为什么成功的时候这个字段返回的是个json对象、失败的时候返回了个字符串。
场景B (效率)
- 移动端:各位大佬,App这边这次项目中有个功能,需要用到订单、商品和物流的信息,这个接口我应该找谁要?
- 订单大佬:我这边只能给你订单的,其他的业务不该我去处理 商品大佬:我也是跟订单一样的。
移动端:这接口没人接了。。。
- 产品:。。。我去跟各个TL确认下,这接口归属哪边来开发。
场景C (在线问题解决)
- 客满同学:线上App报错了,弹出了个错误提示
若干分钟后。。。
- 移动端:经过排查是xxx接口返回了错误信息,所以弹出了对应提示,功能不可用,接口责任人在订单同学那边,需要订单同学查下。
若干分钟后。。。
- 订单同学:这个接口是个聚合接口,不只有订单的信息,看了下是调用xxx接口报错了,需要sss同学帮忙看下。
若干分钟后。。。
- sss同学:排查完毕,是今天发布导致的,已经回滚了,目前线上问题已修复此时已经过去了好几个若干分钟。
相信每个移动端开发的小伙伴都或多或少的遇到过以上几种场景。
为什么移动端要对后端开发有所了解
作为移动端开发的小伙伴们平时要对接的开发侧的小伙伴,大多数时间段内都是后端开发的同学,了解后端开发的相关知识,可以有利于双方之间的沟通,大大减少双方沟通过程中“大眼瞪小眼”的尴尬场景,这也就是上面所说的场景A。
虽然现在android官方推荐使用Kotlin语言作为Android的开发语言,但是绝大多数Android的开发者都是使用java开发Android入的坑,学习后端开发的时候开发语言上不需要重新学习一遍。
App端作为直接面向用户的端,接口里的内容往往不是仅仅由一个提供方提供的,例如订单列表的接口中既会有订单相关的信息,也会有购买方的用户信息,还会有所购买的商品的信息,而在实际场景中,用户、订单、商品往往是由不同的部门负责的,这样的话给app端提供的接口的维护归属就有了分歧,任何一个改动都需要通知各方协调(场景B),当有线上问题出现时查询问题原因也需要大家共同去查,会浪费很多人力(场景C),如果各方只提供自己相关的数据,由app端自己去组合数据提供给app端,那么责任划分和查询问题就会轻松得多。
移动端开发也会需要自己的一些基础设施,如自动化构建的维护、跨平台内容的下发、热修复的管理这些都需要有自己的平台去完成,而开发这些平台最适合的莫过于我们这些移动开发人员,因为我们是使用方,更了解这些平台需要替我们完成什么样的功能。
如何入门
首先是选择学习的方向,选择一个合适的框架
对于java后端的开发而言,不论是各种书籍还是网上的博客,基本都是在SSH和SSM两种组合开发框架中做选择。
SSH是比较早的项目使用的框架,在各类书籍里经常会见到,目前大多数公司使用的是SSM,Struts2之前多次爆出了漏洞而且迭代速度并没有SpringMVC 那么快,对于 Hibernate与Mybatis 的话各有优劣,打个比方的话, Hibernate 更像一个可以拎包入住的装修好的房子,功能完善,但是难以进行优化和扩展,MyBatis 像是毛胚房,需要开发人员自己装修(写sql和维护映射),但是得益于此扩展和优化相对自由度较高,建议选择SSM好了,毕竟用的人多,遇到问题也容易找到解决方案。如果你对Spring繁琐的配置过程感到很头疼的话,建议使用SpringBoot来进行开发,因为它集齐了各类常用的开发框架,同时降低了 Spring 开发的门槛,更是简化了各种配置过程。
简单的后端开发用到了哪些知识
相信每个最初接触后端开发的小伙伴都会跟我一样对后端复杂技术生态一脸懵逼,因为一上来就会接触到很多陌生的词汇,像Spring 的IOC和DI、负责数据库操作的Mybatis、缓存方面的Redis等,甚至连该怎么创建都不清楚。这些。。。。。都是正常的,毕竟没什么人样样精通。对于后端项目开发的学习,以我自身的经历来讲可以这样进行:
首先是搭建后端项目的框架,当然每个公司都会有自己的模板工程,部署完之后就可以跑起来,如果没有模版工程的小伙伴可以到https://start.spring.io/ 或者使用idea自动创建一个工程
start.spring.io自动生成工程只需要在这个页面上选择对应的条件就好了,之后把生成的工程导入Idea就可以开发了。
工程可以跑起来之后就可以写提供给客户端的接口了,在这部分你需要学习创建Controller、Service、log日志的输出以及maven的依赖管理,学习这些看官方文档应该是最快的方案,https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/htmlsingle/ 官方文档写的很详细,所以没必要单独为spring买一本书去学习,因为书肯定不如官网的文档更新的快,如果觉得英文不太方便的话,国内也是有中文翻译的文档版本的,可以参照https://love2.io/@funkkiid/doc/Spring-Boot-Reference-Guide/README.md 来学习。
相信经过上面的两部分你已经知道如何给客户端提供接口了,但是光是这些是不够的,因为给客户端需要的数据往往来自各个服务提供方,例如上面举的订单的例子。这里就需要我们从其他后端应用的服务获取数据,目前国内大多数公司使用阿里开源的Dubbo框架来对外提供服务,所以在这里我们还需要学习Dubbo的使用,由于Dubbo框架是中国公司开源的,所以[文档] https://dubbo.apache.org/zh-cn/ 有中文版,学习起来会比较方便。
如果单纯是调用别人的服务来整合数据的话,上面三部分学习知识已经可以满足你的要求了。如果有涉及到App独立的数据需要持久化存储的话,还需要学习mysql相关的知识以及Mybatis的使用。
随着后端工程业务逐渐复杂,你可能还需要学习更多的内容来完成自己的需求: