学习
实践
活动
工具
TVP
写文章

iOS应用架构谈 开篇

缘由 之前安居客iOS app的第二版架构大部分内容是我做的,期间有总结了一些经验。 其实对于iOS客户端应用架构来说,复杂度不亚于服务端,但侧重点和入手点却跟服务端不太一样。比如客户端应用就不需要考虑类似C10K的问题,正常的app就根本不需要考虑。 这系列文章我会主要专注在iOS应用架构方面,很多方案也是基于iOS技术栈的特点而建立的。因为我个人不是很喜欢写Java,所以Android这边的我就不太了解了。 如果你是Android开发者,你可以侧重看我提出的一些架构思想,毕竟不管做什么,思路是相通的,实现手段不同罢了。 当我们讨论客户端应用架构的时候,我们在讨论什么? iOS应用有审核周期,如何能够通过不发版本的方式展示新的内容给用户?如何修复紧急bug?

57771

iOS应用架构谈 网络层设计方案

iOS开发领域有很多对象间数据的传递方式,我看到的大多数App在网络层所采用的方案主要集中于这三种:Delegate,Notification,Block。 安居客早期以Block为主,后面改成了以Delegate为主,阿里没发现有通过Notification来做数据传递的地方(可能有),Delegate、Block以及target-action都有,阿里iOS 原因如下: 尽可能减少跨层数据交流的可能,限制耦合 统一回调方法,便于调试和维护 在跟业务层对接的部分只采用一种对接手段(在我这儿就是只采用delegate这一个手段)限制灵活性,以此来交换应用的可维护性 我们一般都是在应用启动的时候获得本地列表中所有IP的ping值,然后通过NSURLProtocol的手段将URL中的HOST修改为我们找到的最快的IP。 这是要提醒各位架构师注意的事情。嗯,我也不知道HTTP/2.0什么时候能出来。 渔说完了,鱼来了 这里是我当年设计并实现的安居客的网络层架构代码。

73490
  • 广告
    关闭

    年末·限时回馈

    热卖云产品年终特惠,2核2G轻量应用服务器6.58元/月起,更多上云必备产品助力您轻松上云

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    最新iOS设计规范二|7大应用架构

    iOS是运行于iPhone、iPad和iPod touch设备上、最常用的移动操作系统之一。作为互联网应用的开发者、产品经理、体验设计师,都应当理解并熟悉平台的设计规范。 本文是iOS设计规范系列第二篇:7大应用架构。 7大架构(Architecture) 架构是有关软件/系统整体流程、结构与组件的抽象描述,用于指导大型软件/系统各个方面的设计。 iOS关于架构的指导原则分为7个如下的部分。 为了便于记忆,个人理解可以分为两类,一类是使用流程:启动 —新手引导—加载中—请求许可—设置项。另一类是结构组建:模态和导航。 iOS提供了警报、活动视图(或共享表)和操作表的样式,你可以在应用程序的特定情况下使用。 为你的APP设计一个信息架构,在这个架构中,只需要最少的点击、最少的滑动和最少的页面数量便可以访问相应内容。 使用手势操作让页面切换更流畅。让用户以最小的阻力在页面之间跳转。

    25820

    ios知识架构

    学习ios开发,从哪儿学起?都要学哪些知识?如何才算掌握或精通ios开发?笔者根据自己多年的ios开发经验,给出一些体会,以便为立志成为ios开发精英的人员快速找到一条学习之路。 本文是以最新上市的ios10 为依据的。 一、ios总体知识架构 要全面掌握ios开发技术,需要学习和掌握下列几方面的知识和技巧: 1.开发语言:Objective-C或Swift。 3.App架构:APP的组成、APP生命周期及各种状态转换、APP界面基本原则和跳转规则等。 图1:ios知识总体架构 上述四个方面的知识对于ios程序开发缺一不可。其中开发语言是基础,ios SDK是核心,Xcode是工具,App架构是必须遵循的基本规则。 Programming Guide 3..目标/动作(Target/Action):Target-Action in UIKit 4.沙盒技术:App Sandbox Design Guide 5.MVC架构

    8730

    IOS学习1——IOS应用程序的生命周期及基本架构

    因此,了解iOS infrastructure和它们如何工作对编写app是很有帮助的。 三、Main函数入口 所有基于C编写的app的入口都是main函数,但iOS应用程序有点不同。 从可用Storyboard文件加载用户界面 调用AppDelegate自定义代码来做一些初始化设置 将app放入Main Run Loop环境中来响应和处理与用户交互产生的事件 四、应用程序的架构 iOS应用程序都遵循Model-View-Controller的架构,Model负责存储数据和处理业务逻辑,View负责显示数据和与用户交互,Controller是两者的中介,协调Model和View 了解iOS的MVC设计模式之后,我们从下图来了解在MVC模式下iOS应用程序有哪些关键对象以及它们职责主要是什么? ? 正如它的名字显示,main run loop是运行在应用程序的主线程。这样就确保与接收到用户相关的事件被有序地处理。 下图显示main run loop的架构和用户事件最终是怎样被应用程序处理。

    59250

    iOS应用架构谈 本地持久化方案及动态部署

    苹果自带了一个Core Data,当然业界也有无数替代方案可选,不过真正用在iOS领域的除了Core Data外,就是FMDB比较多了。 数据库读写隔离 在网站的架构中,对数据库进行读写分离主要是为了提高响应速度。在iOS应用架构中,对持久层进行读写隔离的设计主要是为了提高代码的可维护性。 这个会在讲到数据同步方案时看到应用。 我见过很多框架(不仅限于iOS,包括Python, PHP等)都把这两者混在一起去处理。 其实很多别的架构师在设计持久层框架的时候,也没有将Table和Record区分开,对的,这里我说的框架包括Core Data和FMDB,这个也不仅限于iOS领域,CodeIgniter、ThinkPHP

    64070

    Dubbo架构(应用架构)

    升级Spring版本到3.x 2、Dubbo整体架构 1、生命周期架构 上述所述为Dubbo内部交互图,主要包括: Provider 暴露服务的服务提供方 Consumer 调用远程服务的服务消费方 2、层级架构 Dubbo框架设计一共划分了10个层,而最上面的Service层是留给实际想要使用Dubbo开发分布式服务的开发者实现业务逻辑的接口层。 SPI 机制在第三方框架中也有所应用,比如 Dubbo 就是通过 SPI 机制加载所有的组件。不过,Dubbo 并未使用 Java 原生的 SPI 机制,而是对其进行了增强,使其能够更好的满足需求。 一致性的 ConsistentHashLoadBalance 基于加权轮询算法的 RoundRobinLoadBalance 4、Fifter链及Monitor监控统计 filter在dubbo中的应用非常广泛

    7130

    架构之路 (一) —— iOS原生系统架构

    接下来这几篇我们就一起看一下关于iOS系统架构以及独立做一个APP的架构设计的相关问题。 iOS系统架构 iOS系统架构如下所示: 具体哪一层包含什么框架如下所示: 下面看一下详细的信息: 1. 触摸层(Cocoa Touch) 为应用程序开发提供了各种常用的框架并且大部分框架与界面有关,本质上来说它负责用户在iOS设备上的触摸交互操作。 UIKit.framework:包含iOS应用程序用户界面层使用的类和方法。 下面看一下这个示意图 2. 参考文章 1. iOS系统架构和常用框架 2. iOS系统架构 后记 本篇主要讲述了iOS系统的架构,感兴趣的给个赞或者关注,谢谢~~~

    25010

    iOS插件化架构探索

    前言 WWDC2014苹果在iOS上开放了动态库,这给了我们一个很大的想象空间。 这样我们就可以做很多事情,比如应用插件化及动态更新: 应用插件化 目前很多应用功能越做越多,软件显得越来越臃肿,如果软件的功能模块也能像懒加载那样按需加载,在用户想使用某个功能的时候让其从网络下载,然后手动加载动态库 应用模块动态更新 当软件中的某个功能点出现了严重的 bug,或者想更新某个功能,这时候只需要在适当的时候从服务器上将新版本的动态库文件下载到本地,然后在用户重启应用的时候即可实现新功能的展现。 这里把项目搭建拆分细化为四个部分,分别是动态加载框架SVPCore和SVPRuntime、主工程以及其他功能模块插件,整体的架构设计如下图: ? 插件化及动态加载框架设计图 1. 以上便是利用Framework动态库进行插件化加载以及动态更新的所有实现,就目前而言,Apple并不希望开发者绕过App Store来更新App,因此需谨慎对待热更新的使用,对于不需要上架的企业级应用

    68020

    应用架构应用架构行为准则

    应用架构行为准则 应用程序架构是企业解决方案架构(ESA)的一个子集(图1)。应用程序架构既是一个过程(架构和设计)又是一个东西(可交付成果——架构的内容)。 应用程序架构帮助组织规划其在应用程序解决方案和其他系统中的投资。正在评估、设计和交付的应用程序解决方案必须能够与已建立的解决方案共存。 图1 应用程序架构存在于多个详细级别: 在概念层次上,企业架构(EA)策略和计划确保应用程序组合与其他形式的解决方案架构(业务、技术和信息)协同有效地发展。 应用程序架构的原则适用于所有类型的应用程序方法和解决方案。 在这个概念级别上,最能实现这些策略和计划以及应用程序架构规程的角色是企业解决方案架构师。 项目级的解决方案和应用程序架构师也可能被要求担任这个角色(或者至少就AA规划问题咨询)。

    25030

    「企业架构应用架构概述

    在信息系统中,应用架构应用架构是构成企业架构(EA)支柱的几个架构域之一 应用架构描述了业务中使用的应用程序的行为,重点是它们如何相互之间以及如何与用户交互。 应用架构试图确保组织创建复合架构所使用的应用程序套件是可伸缩的、可靠的、可用的和可管理的。 应用架构定义了多个应用程序如何准备一起工作。 应用架构应用架构师是计算机编程团队中的一名领导或技术经理,专门负责构建应用程序和使用的技术。 任务 应用架构师是组织中应用程序特定的一切的大师。 架构世界的标准在TOGAF中定义,开放组架构框架将EA的四个组件描述为BDAT(业务架构、数据架构应用架构和技术架构, 根据组织的复杂程度,还需要考虑其他标准: EA的Zachman框架 联邦企业架构

    56520

    iOS应用签名(下)

    描述文件 前面的文章我们已经介绍了简单的应用签名但是这种签名方式并不能解决应用滥用的问题,所以苹果又加了两个限制.第一限制在苹果后台注册过的设备才可以安装.第二限制签名只能针对某一个具体的APP.并且苹果还想控制 [1240] 至此关于iOS应用签名的原理就介绍完了.下篇文章将介绍iOS应用重签名技术. 由于知识水平有限如有错误及不足,欢迎大家留言区评论指正. 原文地址: [1240]

    59100

    iOS应用多开教程

    ReProvision(官方源:http://repo.incendo.ws/)或者AppSync二选一 apptools(bigboss付费插件,可有可无) PS:搜插件的官方源 https://www.ios-repo-updates.com

    1.7K40

    iOS应用签名(上)

    关于iOS应用签名我想一起探讨一下它的原理.首先我们需要了解一个东西,叫做数字签名 数字签名(digitally signed) 名词解释:为什么用签名这个词.因为老外喜欢用支票,支票上面的签名能够证明这玩意是你的 iOS 上的 APP 都是经过苹果官方允许的,怎样保证呢? . iOS的双层代码签名 iOS的双层代码签名流程这里简单梳理一下,这也不是最终的iOS签名原理.iOS的最终签名在这个基础上还要稍微加点东西,文末会讲. 首先这里有两个角色.一个是iOS系统 还有一个就是我们的Mac系统.因为iOS的APP开发环境在Mac系统下.所以这个依赖关系成为了苹果双层签名的基础. 但是,你要知道iOS的程序,主要渠道是要通过APP Store才能分发到用户设备的,如果只有上述的过程,那岂不是只要申请了一个证书,就可以安装到所有iOS设备了?

    50700

    应用架构应用程序架构的当前趋势

    本文有些不是最最新的,但是方法和思路也有借鉴意义,稍后会介绍Gantner的最新应用架构趋势。 架构师应该考虑适应这些新趋势 使用面向服务架构(service-oriented architecture,SOA),包含微服务(MSA),构建应用程序,并集成内部商用现货(COTS)和遗留应用程序,以及业务合作伙伴应用程序和云服务 接受应用程序范例和模型 术语“应用程序架构”是指应用程序的结构和组织,包括其组件以及它们之间的交互/相互依赖模型。应用程序架构应用架构范例,并使用常见的模式和模型来设计应用程序并定义其架构。 : 范式 模型 结构和组织 范例: 架构范例(有时称为架构样式)是一个总体概念框架,它影响您设计应用程序的方式。 这些架构特性影响应用程序的性能、可伸缩性、健壮性、灵活性、可维护性和总体拥有成本。

    29520

    Android应用架构

    这段时间,我们所构建的Android应用架构和技术也在不断地演变。本文将向您阐述我们的经验,错误以及架构变化背后的原因。 想象一个简单且常见的场景,应用需要加载一个博客文章列表,然后缓存这些条目到SQLite数据库,最后将他们展示到ListView等列表视图上。 考虑到经历了前几年的痛苦,我们开始考虑,一个新的应用程序体系架构看起来会是怎样的。因此,我们想出了这个。 ? 类似于第一种架构,这种体系架构同样被划分为Data Layer和View Layer。 不同的应用拥有不同数量的帮助类,但也存在着一些共性: PreferencesHelper:从SharedPreferences读取和存储数据。 不断地阅读和尝试,这样我们才能找到更好的方法来继续构建优秀的Android应用程序。

    49270

    现代企业架构框架-应用架构

    应用架构的设计主要以应用(Application)的设计为核心,向外围可以延伸到平台型企业架构对于应用分层,分组的设计。 例如大家关注的以微服务为代表的分布式应用架构,以及此类架构模式下的常见问题,例如微服务如何划分如何组织,都是应用架构在这个粒度需要关注的问题。 同样,以应用为基准,向内部延伸又会涉及到应用内部的架构设计。例如常见的应用分层设计,领域驱动设计中提到的六边形架构、洋葱模型,包括领域对象的详细建模与设计,都是在应用架构这个粒度需要关注的问题。 而其中的领域对象设计在业务架构以及后续的数据架构中都会提及,本框架充分融合了企业架构与领域驱动设计的思想和方法,从业务架构应用架构以及后续展开的数据架构,都秉承以领域对象设计作为架构的核心要素,跨越架构边界 我们建议通过建立应用架构与业务架构、数据架构的构建块映射来解决这个问题。

    7920

    iOS系统架构及常用框架

    iOS的系统架构分为四个层次,由内而外依次是: 核心操作系统层(Core OS layer) 核心服务层(Core Services layer) 媒体层(Media layer) 可触摸层(Cocoa Media layer 顾名思义,媒体层可以在应用程序中使用各种媒体文件,进行音频与视频的录制,图形的绘制,以及制作基础的动画效果。 Core Data:提供了一个面向对象的数据管理解决方案,它易于使用和理解,甚至可处理任何应用或大或小的数据模型。 常用的iOS 开源框架 网络框架 ASIHTTPRequest:老程序的爱,早几年风靡iOS界。不再提供更新维护,已被其他框架取代。 提供一系列的Class(类)来建立和管理iPhone OS应用程序的用户界面接口、应用程序对象、事件控制、绘图模型、窗口、视图和用于控制触摸屏等的接口。

    2.4K20

    应用技术架构 —— 单体架构 & 垂直架构 & SOA 架构

    垂直架构 在 1980s 时代,大型应用和超大型应用开始兴起,特别是操作系统和数据库的出现和广泛应用,数百万行代码量的系统较为普遍。 将一个大型应用拆分成多个相互独立的小型应用成为解决单体应用的一种方案,这就是垂直架构(也成为“竖井式架构”)。垂直架构根据业务属性将一个大的单体应用拆分成多个模块或子系统,子系统之间没有直接关联。 面向服务的架构(SOA) 随着互联网的出现和发展,软件用户的数量的急剧增长,应用的用户规模指数级增长,具有海量用户的应用变得普遍。垂直架构在技术上很难满足承载海量用户的要求。 在接下来的《数字化 IT 从业者知识体系》系列文章,何文强将从软件开发方法、应用技术架构应用部署与管理、软件交付与协作四个方面,为大家进行逐一分享介绍: 1. 应用技术架构主要包括微服务架构、服务网格架构、无服务器架构、分布式多运行架构等; 3. 应用部署与管理主要包括但不限于虚拟化技术、容器技术与容器编排等; 4.

    1.6K30

    iOS应用内发送邮件

    30300

    扫码关注腾讯云开发者

    领取腾讯云代金券