Swift 轻量级网络层设计】的更多相关文章

前言 普遍我们的网络层设计的时候直接是如下结构APIManager.post(url, parameter,completeHandle),服务器配置在APIManager.m文件中进行配置.这样一个简单便捷网络请求类便写好了,但细心思考我们会发现如下一些问题: 相同API可能分散各处导致每次需要填写的参数key值.回调处理代码也可能会存在冗余. //例如登录功能 APIManager.post("登录APIUrl",{"name":"",&qu…
Swift 语言的设计错误 在『编程的智慧』一文中,我分析和肯定了 Swift 语言的 optional type 设计,但这并不等于 Swift 语言的整体设计是完美没有问题的.其实 Swift 1.0 刚出来的时候,我就发现它的 array 可变性设计存在严重的错误.Swift 2.0 修正了这个问题,然而他们的修正方法却没有击中要害,所以导致了其它的问题.这个错误一直延续到今天. Swift 1.0 试图利用 var 和 let 的区别来指定 array 成员的可变性,然而其实 var 和…
App的开发无外乎从网络端获取数据显示在屏幕上,数据做些缓存或者持久化,所以网络层极为重要.原来只是把AFNetwork二次封装了一下,使得调用变得很简单,并没有深层次的考虑一些问题. 前言 参考: 网络层设计方案 这篇文章提的问题也正是我平时经常纠结的,但是一直没有深入思考.文章给的解决方案和为什么这样做让人茅塞顿开.以下主要就是我的观后感. 三个问题 使用哪种交互模式来跟业务层做对接? 是否有必要将API返回的数据封装成对象然后再交付给业务层? 使用集约化调用方式还是离散型调用方式去调用AP…
设计模式 APP设计模式多种多样,从最初的MVC到MVVM,再到MVP,VIPER等.越来越多的设计模式被开发出来并得以应用,但不论我们用到哪种设计模式,只需要记住高内聚.低耦合那边是好的设计模式.在这里笔者整理了一份demo以帮助大家更好的理解Swift版路由机制的设计 APP路由机制出现 笔者了解到最开始分享路由机制的文章是由蘑菇街团队提供链接,其利用url注册来进行界面推出和传值.随后某位大神吐槽其机制有问题链接.在这里笔者也开始思考过这个问题,并从他们的思路中得出了适合自己的路由机制设计…
最近添加了折线视图的样式,所以在这里用Swift语言重新再使用设计一下 首先设置纵坐标的数值是:体重 //体重        let weightLabel = UILabel.init(frame: CGRectMake(0, 10, 60, 30));        weightLabel.text = "体重(kg)";        weightLabel.textColor = UIColor.lightGrayColor();        weightLabel.font…
在最近一段时间里,通过搜集有关资料加上自己的理解,设计了一款轻量级RPC,起了一个名字lightWeightRPC.它拥有一个RPC常见的基本功能.主要功能和特点如下: 利用Spring实现依赖注入与参数配置 利用Netty来实现客户端与服务端的远程通信 利用Hessian来实现序列化 设置Zookeeper作为注册中心 新设监控器,通过心跳机制来判断服务端与监控器的网络连接状况,当出现不稳定时,认为服务端出现了问题,在注册中心删除相关的服务信息. 利用Netty的Promise来实现异步的传送…
在前两个版本中,每次发起请求一次就新建一个netty的channel连接,如果在高并发情况下就会造成资源的浪费,这时实现异步请求就十分重要,当有多个请求线程时,需要设计一个线程池来进行管理.除此之外,当前方法过于依赖注册中心,在高并发情况下对注册中心造成了压力:另外如果注册中心出现宕机等情况,那么整合系统就崩溃了,为了解决这个问题,添加了一个适合高并发的服务缓存机制.以上为该版本的新增内容. 异步请求和线程池 这里就不具体介绍异步请求的概念了.用一个通俗的例子解释,如你在饭店点餐,当你点好餐后,…
一.整体架构 1.1 核心逻辑 1个Acceptor线程+N个Processor线程(network.threads)+M个Request Handle线程(io threads) 多线程多Reactor模型,Acceptor独占一个selector,每个Processor有自己的selector 每个Processor都有一个名为newConnections的ConcurrentLinkedQueue[SocketChannel](),Acceptor会round-robin轮询Process…
1,运行时横屏 将项目属性“General”->“DeviceOritentation”的Portrait复选框去掉 2,storyboard设计视图横屏 在storyboard中,单击中间界面视图的头部,在右侧属性面板中. 把Size设置为iPhone4-inch(4寸屏,也可以选择其他屏幕尺寸) 把Orientation设置成Landscape…
在本版本中引入了SPI机制,关于Java的SPI机制与Dubbo的SPI机制在以前的文章中介绍过. 传送门:Dubbo的SPI机制与JDK机制的不同及原理分析 因为设计的RPC框架是基于Spring的,时常会遇到依赖注入问题.Spring中也有SPI机制,但是它有有个缺点,就是在利用SPI机制实例化具体的服务类时,如果具体的服务类中调用其他的bean,就会实例化失败.主要因为该具体的服务类并没有放入到Spring容器中.本项目将有效解决这个问题. 在设计的RPC框架中加入了该机制,来实现不同序列…