Tag: 路由器

使用Swift中的路由器为IOS应用程序更好地路由

在这篇文章中,我将讨论在我正在努力使IOS应用程序开发更强大的项目中使用的其他可重用类。 我最近需要导航路由器来处理网络请求中不同类型的URL,处理一堆.GET,.POST,.PUT。 删除HTTP请求类型等 使用单独的类来处理网络任务是一个好主意。 因此,使用自定义路由器。 它当然是基于Alamofire。 什么是路由器? 路由器是一种处理API /微服务url的面向协议的方法,但将自身用作枚举是一个更好的主意。 通过从枚举案例中生成URL请求,这将无缝地在发出请求时帮助统一和简化网络路由。 因此,另一种方法启发了我一些概念,您可以阅读LittleBitesOfCocoa中的博客文章。 公平地说,它更轻巧,但不能满足我的要求。 #93:为Alamofire创建路由器🔀🔥 Alamofire 3.0(https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%203.0%20Migration%20Guide.md…littlebitesofcocoa.com 创建路由器协议 首先,创建一个协议RouterProtocol来处理四种方法,以使REST兼容(获取,发布,更新,销毁),以处理常见的API请求(我刚刚声明了自己的ApiType来获取API URL的路径/路由,因此不是)在上下文中,则省略。) 接下来要做的就是创建一个路由器枚举 ,这个实现为什么呢? 我会解释。 首先,我们需要遵循RouterProtocol才能使用我们的功能。 Router枚举必须为通用类型,必须接受具有RouterProtocol一致性的任何类型的结构。 它接收四个动词(.GET,.POST.PUT,.DELETE等),因此可以为其声明方法,路径和路由属性。 将URLRequest属性创建为NSMutableURLRequest,因此添加常用配置,例如方法,默认标头,OAuth令牌(如果可用)等。 最后,使用Alamofire的参数编码可以执行所需的编码。 用法 使用路由器非常简单,只需在ApiManager中声明一个方法(我将在另一篇文章中介绍我的ApiManager版本) 在我的示例中,getAccounts方法将AccountsRequest作为输入 ,response作为AccountsResponse作为输出,此类仅是结构,您可以自己滚动 (仅供参考:在另一篇文章中,我将向您介绍基于“请求/响应”结构的方法) 您的经理(当然,它封装了Alamofire实例)会执行请求(可到达性和微调器内容不在上下文中。我会在此处发布有关可到达性的信息,您可以在此处阅读) Alamofire管理器将Router枚举作为输入,并具有我们的RouterProtocol,我们说这是一个.GET请求,所以我确实将诸如accountRequest.accountId的值作为String传递,因为在协议中。GET匹配请求具有“ case get(T,String) ” 如果我们需要说这是一个.POST请求,则协议.POST可以将 [ String:AnyObject])作为参数,因此,这一次我必须将我的accountRequest输入传递为cast到Dictionary()? [String:AnyObject])等 简单! 例如; Router.get(AccountsRou​​ter(),accountRequest.accountId!)。URLRequest 现在,您可以看到为任何种类的Api创建任何种类的Router都具有表现力。 它始终严格定义,可理解且干净。 这篇文章中的代码,托管在Github中 seyhunak /路由器 在Swift github.com中使用路由器为IOS应用程序更好地路由 感谢您的阅读,希望您喜欢。

用母牛解释思科操作系统的差异

嗨,大家好! 您可以比较各种思科操作系统吗? 我已经阅读了Reddit上的帖子,并找到了关于该主题的有趣解释。 在本文中,我将描述这些操作系统并分享说明。 (母牛是CPU或同一CPU上的独立进程。) iOS 你有一头牛。 它嚼草。 概念 :Cisco IOS(最初是Internet操作系统)是大多数Cisco Systems路由器和当前Cisco网络交换机上使用的软件系列。 功能 :IOS是集成到多任务操作系统中的路由,交换,互联网络和电信功能的软件包。 尽管IOS代码库包含协作式多任务内核,但大多数IOS功能已移植到其他内核(例如QNX和Linux),以用于Cisco产品或模拟器(例如Cisco VIRL)。 注意 :并非所有Cisco产品都运行IOS。 值得注意的例外包括运行Linux衍生的操作系统的ASA安全产品和运行IOS-XR的运营商路由器。 IOS-XE 你有两只母牛。 一个人咀嚼草,另一个人告诉它咀嚼什么。 概念 :IOS XE是Cisco Systems在ASR 1000系列中引入的,广泛部署的Internet操作系统(IOS)的火车。 功能 :它基于Linux构建,并提供分布式软件体系结构,该体系结构可将许多操作系统职责移出IOS进程,并具有作为单独进程运行的IOS副本。 由于它运行IOS的副本,因此Cisco IOS和IOS XE之间的所有CLI命令都是相同的,而IOS XR具有完全不同的代码库,并且其开发人员实现了完全不同的CLI命令集。 IOS与IOS XE : 1. Cisco IOS是直接在硬件上运行的整体操作系统,而IOS XE是Linux内核和在该内核之上运行的(整体)应用程序(IOSd)的组合。 2. IOS XR基于QNX(从5.0版开始,它也基于Linux),其中IOSd应用程序已分为许多不同的应用程序。 虽然IOS XE(IOSd)和IOS共享许多相同的代码,但是IOS XR是完全不同的代码库。 3.由于IOS XE在Linux之上将IOSd作为应用程序运行,因此也有可能在硬件上运行不同的应用程序,一个很好的例子是在交换机上运行Wireshark。 另一个示例是Cisco IOS XE开放服务容器。 iOS XR 你有27头母牛。 您不知道它们会做什么,但是当它们掉落到新牛身上时,它们会立即重新出现。 […]

海鸥和服务器端Swift — 2

第一部分: Seagull和服务器端Swift 。 我已经更新了海鸥版本,现在是0.1.5。 没有大的变化,只有错误修复和改进。 无论如何,Seagull已经距离理想的REST框架又近了一步) 在进行开发时,我获得了一些有关服务器端Swift的新课程。 我想分享我的经验。 Swift和Docker 在Docker容器中运行Swift项目并不像我以前想象的那么容易。 Swift还没有官方形象(真可悲)。 因此,某些项目使用自己的图像。 作为迅速尼奥。 Seagull基于swift-nio,因此我也必须使用它(进行少量修改) 在不同的linux版本上测试项目是一个非常好的主意。 幸运的是,使用docker-compose很容易。 对于Seagull,我为Ubuntu 16.04添加了默认的docker-compose文件,为14.04添加了其他文件。 它是基于Ubuntu 16.04的swift-nio docker映像的docker-compose文件。 现在,我可以使用一个命令在纯Ubuntu 16.04上运行单元测试和测试REST服务器: docker-compose -f docker / docker-compose.yaml进行单元测试 或适用于Ubuntu 14.04的版本: 只需在参数中设置Linux和Swift版本,然后构建并使用其他映像即可。 docker-compose -f docker / docker-compose.yaml -f docker / docker-compose.1404.41.yaml up res 我花了一些时间来了解它在swift-nio中的工作方式以及如何在我的项目中使用它,但是现在我有了简单而强大的工具,可以在Linux环境中测试我的Swift项目。 这非常有帮助。 测试框架 这让我感到惊讶,但是Mac上的“嵌入式” XCTest和开源Swift的XCTest有所不同。 这是XCTest中的“新型”异步测试。 简单,我真的很喜欢。 但是,当您尝试为Linux编译项目时,它不起作用。 感谢Docker,我找到了它。 老款式。 不太优雅和灵活,但可以在所有平台上使用。 可编码 我太懒了,在测试中我使用了Swift如何序列化Encodable对象的假设。 […]