如何进行网络框架的学习和设计

{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"1 前言"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"对框架的认知,分为三层:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第一层:会用"},{"type":"text","text":" 。了解它的功能,知道怎么调用。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第二层:知道实现"},{"type":"text","text":" 。通过研究源码,知道它怎么实现的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第三层:理解为什么"},{"type":"text","text":" 。为什么要有这个框架?如果没有这个框架,我们如何实现它的功能以及实现的成本有多高?框架内部为什么这么设计?有没有更好的设计?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"要认知到第三层,最好的方式就是先抛弃这个框架,撸起袖子自己干,从零设计一个这样的框架,最后回过头来,再去思考这个框架存在的意义,以及它内部的设计。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"比如网络框架,它的基本功能是调用服务器的接口获取数据,在APP开发中,这个功能不需要依赖任何额外框架就可以轻松实现,但是在实际项目中,能满足这个基本功能是远远不够的,还有很多其他的事情需要考虑,比如线程调度、数据加工、易用性、可扩展性等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"下面我们先从零设计一个网络框架,然后再去对照okhttp和retrofit的源码,思考它们存在的意义以及它们的设计,最后我们再挖掘下okhttp和retrofit预留给我们的扩展能力,举例一些常见的应用场景。更进一步,我们再思考下它还有哪些不足,以及如何改进。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"2 从零设计网络框架"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"第一步:请求网络"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章