-
项目架构
2020-04-19 12:25:33项目架构 前言 FireTeam目前项目均采用SpringBoot、Dubbo等技术框架以及DDD(Domain Driver Design)设计思想搭建。书写这篇文档一方面是帮助新加入的小伙伴更快地熟悉项目,另一方面是形成团队规范、保持代码风格统一... -
项目架构分析
2016-11-18 11:16:17项目架构分析 1.1-什么是架构 1.2-从系统层次进行架构分析 1.2.1-iOS系统框架介绍 1.2.2-软件架构分析 1.3-从应用层次进行架构分析 1.1-什么是架构? 我们人类在做事之前喜欢先把它的整体结构设想一下,就像盖一座...项目架构分析
1.1-什么是架构?
我们人类在做事之前喜欢先把它的整体结构设想一下,就像盖一座大厦,可能会想用砖盖,还是用最新的环保隔声材料盖,里面的格局是采用中式的还是欧式的,彩色主色采用什么等等,这些相关的数据都需要提前规定好,事实上项目架构也是这样
在一个好的架构下编程,不仅对于开发人员是一件赏心悦目的事情,更重要的是软件能够表现出一个健康的姿态;而架构设计的不合理,不仅对于开发人员是一件受苦受难的事情,软件本身的质量更是受到严重威胁。
1.2-从系统层次进行架构分析
1.2.1-iOS系统架构介绍
我们在开发中去架构一款软件,很大程度上我们参考了iOS系统自身的架构,这样获取更加具有说服力
iOS的系统架构分为四个层次:核心操作系统层(Core OS layer)、核心服务层(Core Services layer)、媒体层(Media layer)和可触摸层(Cocoa Touch layer)
- Core OS是位于iOS系统架构最下面的一层是核心操作系统层,它包括内存管理、文件系统、电源管理以及一些其他的操作系统任务。它可以直接和硬件设备进行交互。作为app开发者不需要与这一层打交道
- Core Services是核心服务层,可以通过它来访问iOS的一些服务
- Media是媒体层,通过它我们可以在应用程序中使用各种媒体文件,进行音频与视频的录制,图形的绘制,以及制作基础的动画效果
- Cocoa Touch是可触摸层,这一层为我们的应用程序开发提供了各种有用的框架,并且大部分与用户界面有关,本质上来说它负责用户在iOS设备上的触摸交互操作
1.2.2-软件架构分析
每个人对软件的架构分析是不一样的,在不影响具体开发的情况下,没有人能说自己的架构是好的,别人的架构就一定是不好的,以下只是本人多年开发经验积累的一些感悟,仅供参考
- 衡量一个软件架构的好坏,最有说服力的就是它的存活性,即能够在原有的架构师迭代几个版本,维护多少年~
软件标准的四层架构如下
- 1.展示层:负责系统与客户的交互
- 我们的MVC属于展示层
- 2.业务逻辑层:负责处理系统的业务逻辑
- 主要是将应用的核心业务进行分离封装,复用性很高
- 3.数据访问层:负责处理数据,与不同的数据打交道
- 如我们软件开发中的单例模式
- 如开发中对AFN框架的二次封装(单例模式实现AFNetworkingManager)
- 4.服务层:负责与其他系统进行数据交互和业务集成
- 如开发中的网络层:负责我们软件与后台之间的数据交互
- 如开发中的硬件层:负责与硬件设备交互(硬件都是二进制,需要底层封装)
- 1.展示层:负责系统与客户的交互
1.3-从应用层次进行架构分析
有了系统层次的分析,我们需要将系统层次的架构具体的反应到我们的工程中,并且针对应用开发来搭建我们工程的目录结构
1.模块划分
- 分析项目需求,进行模块划分
- MVC或者MVVM或者MVP
- 分析项目需求,进行模块划分
- 2.通用组件
- 1.通用宏
- 2.通用工具
- 自定义类
- 系统分类
- 3.通用UI
- 3.核心服务层
- 网络层
- 硬件层
- 4.通用模型
- 跨模块数据层
- 5.第三方框架
- 6.应用资源
- 音频、视频
-
分布式项目架构
2019-03-10 21:20:14分布式项目架构 根据业务需求进行拆分成N个子系统,多个子系统相互协作才能完成业务流程子系统之间通讯使用RPC远程通讯技术。 优点: 1.把模块拆分,使用接口通信,降低模块之间的耦合度。 2.把项目拆分成若干...分布式项目架构
根据业务需求进行拆分成N个子系统,多个子系统相互协作才能完成业务流程子系统之间通讯使用RPC远程通讯技术。
优点:
1.把模块拆分,使用接口通信,降低模块之间的耦合度。
2.把项目拆分成若干个子项目,不同的团队负责不同的子项目。
3.增加功能时只需要再增加一个子项目,调用其它系统的接口就可以。
4.可以灵活的进行分布式部署。
有优点就有缺点,缺点如下:
1.系统之间交互需要使用远程通信,接口开发增加工作量。
2.各个模块有一些通用的业务逻辑无法共用。
为了解决上面分布式架构的缺点,我们引入了soa架构,SOA:Service Oriented Architecture面向服务的架构。也就是把工程拆分成服务层、表现层两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。
什么是项目集群
多台服务器部署相同应用构成一个集群
作用:通过负载均衡设备共同对外提供服务
-
vue项目架构
2016-05-16 23:25:58项目架构前几天刚刚了解了一些iOS项目的架构,觉得感慨万分,如果在我的项目成型之前读到这些文章该多好,至少我的项目架构会考虑的更全面一些。 吃一堑,长一智,所以手头上的vuejs搭建的kd云之家的项目架构要提前...项目架构
前几天刚刚了解了一些iOS项目的架构,觉得感慨万分,如果在我的项目成型之前读到这些文章该多好,至少我的项目架构会考虑的更全面一些。
吃一堑,长一智,所以手头上的vuejs搭建的kd云之家的项目架构要提前考虑好。
公司没有人搞过vue,前端工程师姐姐也是第一次搞,何况我这个iOS出身的。百度吧,百度不行就谷歌。搜到一个项目,和一篇文章。项目不错,文章有指导意义,虽然作者很谦虚。。。
- 看项目最直观的是网络 api 的封装,分两层,网络请求封装为一层(get,post),对外业务层封装为一层
项目不大,其他最重要的倒是对vue的准确适用
- router API
router API在vue页面中route: {
data(transition) {
var params = transition.to.params;
api.cafe.topics(params.slug, params.page, resp => {
transition.next({
pagination: resp.pagination,
topics: resp.data,
});
});
}
},
在激活阶段被调用,在 activate 被断定( resolved ,指该函数返回的 promise 被 resolve )。用于加载和设置当前组件的数据。
可见对于页面的初始化加载,用这个比用ready,create要正当一些- router API
- computed
computed: {
user() {
return this.$root.user;
},
canWrite() {
var permission = this.cafe.permission || {};
return permission.write;
},
isAdmin() {
var permission = this.cafe.permission || {};
return permission.admin;
}
},
你应该注意到 Vue.js 的计算属性不是简单的 getter。计算属性持续追踪它的响应依赖。在计算一个计算属性时,Vue.js 更新它的依赖列表并缓存结果,只有当其中一个依赖发生了变化,缓存的结果才无效。因此,只要依赖不发生变化,访问计算属性会直接返回缓存的结果,而不是调用 getter。
可见compute 可以使用缓存机制,对于增加速度是有帮助的。
- 组件命名
计算科学中最难的两件事是命名和缓存失效。
由于vue采用组件化开发,每个组件都是一个文件,文件比较多,所以命名要提现出该控件的通用性。不要觉得命名短才是好,命名应该尽量表达清晰意义。
-
Java项目架构类型
2019-05-13 16:39:51Java项目架构类型 JavaEE企业级应用经过多年的发展,出现了很多不同的架构类型, Java应用架构发展主要经历了一下四段历程,分别是单一应用架构,垂直应用架构,分布式服务架构和流动计算架构 单一应用架构 ... -
Java项目架构的演变
2019-04-26 22:59:56但这些架构也不是突然就出现的,而是经过不但演变才出现及流行起来的,本文就给大家来梳理下java项目架构的演变历程。 系统架构演化历程 单体架构 大型网站都是从小型网站发展而来的,网站架构也是一样,是从... -
Unity之项目架构
2019-06-04 16:23:53转载自 UNITY_项目架构设计 视频资料: Unity项目架构设计与开发管理 EmptyGO 将所有的代码放到一个空的游戏对象中 使用 GameObject.Find() 来找到目标进行使用 项目越来越大的时候难以灵活管理;不适合大型项目。... -
画项目架构图工具
2019-10-30 15:19:25在线画项目架构图的工具 -
Android项目架构搭建
2016-06-12 14:54:081. 前言安卓属于小团队开发,架构的重要性在很多公司其实不是那么的明显,加上现在的开源框架层出不穷,更好的帮助我们上手android项目的开发。我前两年也在公司主导过项目开发,搭建过不少项目,以前主要的倾向是... -
Java项目架构类型与项目分类
2017-12-27 20:59:30Java项目架构类型JavaEE企业级应用经过多年的发展,出现了很多不同的架构类型, Java应用架构发展主要经历了一下四段历程,分别是单一应用架构,垂直应用架构,分布式服务架构和流动计算架构单一应用架构当网站流量... -
ios APP项目架构心得
2018-07-13 15:34:42ios项目架构 ,如图所示 -
Django项目开发流程&项目架构
2018-06-01 20:49:12项目架构 1. 软件开发的一般流程 1. 需求分析及确认: 由需求分析工程师与客户确认甚至挖掘需求。输出需求说明文档。 2. 概要设计及详细设计: 开发对需求进行概要设计,包括系统的基本处理流程,组织... -
安卓项目架构浅谈
2018-09-12 16:50:00项目架构,从最初的单module代码级分包到如今的基于module的模块化演变;而单module内部代码结构,从mvc(不算是)到mvp再到结合google新出的带有生命周期的viewmodel、livedata等构建的mvvm演变。谈一谈自己的安卓... -
大数据之电信项目架构
2019-01-18 21:23:49目录 一、通话日志来源 二、 flume日志采集 ...项目架构图如下: 本项目是一个离线项目,主要是监控采集数据到hbase,然后将hbase上的数据进行分析处理,将处理后的结果存放到MySQL中,然后将分析... -
laravel-项目架构设计
2018-05-25 18:32:27这里我先贴一个项目: 有时间在写我为什么这样做。 项目架构 1 :Route 模块化 appApi(Android ios) userRoute DescRoute webApp(小程序) userRoute DescRoute w... -
结合实例谈项目架构设计
2018-01-17 16:28:15作为一个移动端开发人员来讲,是很难接触到后端项目架构的,所幸,从2015年开始,负责部分管理工作,参与了项目架构相关的工作。项目从小到大,架构也越来越复杂,特别是最近做的一个跨国型项目,涉及到国内国外... -
vue.js项目架构详解
2019-02-21 11:24:35通过vue create xxx创建好项目之后,看到项目架构如下: 可以看到main.js是这个程序入口,这里面调用了App这个组件,也就是说App组件对整个项目来说,为最上级的父组件,components里面的我们创建的子组件,... -
Spring Boot 单体项目架构搭建
2019-02-22 14:33:39Spring Boot 单体项目架构搭建 GitHub:文章目录springboot-single架构介绍技术栈技术详情 架构介绍 此次搭建的架构是面向前后端分离开发,纯后台服务,未集成前端模板内容。 技术栈 JDK 1.8 Spring Boot ... -
RoadFlow项目架构分析
2015-08-11 11:19:02RoadFlow开源工作流源码-项目架构分析 项目文件结构: 很明了一个标准的三层架构的系统。 表示层:Web 业务层:Business 数据访问层:Data 另外存在缓存层:Cache缓存 增加公共使用类库:Utility 下面以一个... -
项目架构图
2018-11-28 10:19:30传统企业架构(垂直架构):无论项目大小以及业务复杂性,统一在一个项目中实现。 特点:优点:结构简单、易于开发; 缺点:耦合度高(各个模块不易分离、模块间影响较大一个模块出现问题同样也会导致其他模块... -
ReactNative 开发基本项目架构
2016-11-01 19:54:15ReactNative 开发基本项目架构 -
如何清晰地描述一个项目架构
2020-04-30 14:13:00要让对方掌握项目架构,一个清晰的介绍架构和顺序可以事半功倍。 项目背景 在介绍项目架构之前,首先要介绍一下项目本身的意义和目的,便于对方了解项目背景 解决了什么问题,满足了什么需求等? 目标用户是谁?... -
项目架构设计总结:基于阿里云搭建的轻量级架构
2017-12-13 09:36:05项目架构设计总结:基于阿里云搭建的轻量级架构 前言 从项目启动到现在差不多快有一年了,在这一年里经历了很多大的版本的改变,业务模式经过不断的磨合也逐渐稳定。在这个时候,总结一下之前项目的... -
项目架构之传统三层架构和领域模型三层架构
2018-04-18 16:31:23摘要: 本文对项目采用的架构进行介绍,并说明每一个模块在架构中扮演的角色。 本文隶属于新手图文教程《IDEA+Maven搭建Spring+SpringMVC+Mybatis项目骨架》 下一篇:图文示范IDEA创建Maven项目和子模块 目录 &... -
Android中级第十二讲项目架构配置
2016-12-14 22:34:39... 架构这个话题比较大;从组织结构来说,CEO是一家公司的架构师,将公司划分为销售部、市场部、技术部、行政部、财务部、客服部等,每个部门...项目架构主要目的是解耦、灵活开发,让后端成为产品的瓶颈,而... -
guozilanTK 企业级项目架构设计思路和用法分享
2018-08-19 15:50:42guozilanTK 企业级项目架构设计实例和用法。 由于涉及内容比较多,因此在 8月18号时通过 QQ 讨论组分享本文的内容。 缘由 如果你使用了类似 Maven 的依赖管理工具,本 分享... -
【Unity3D】项目架构设计与开发管理
2017-11-22 14:35:06Unity项目架构设计与开发管理笔者是观摩刘钢先生讲解的Unity项目架构设计与开发管理后所总结记录的。 -
SharpStreaming项目开发纪实:项目架构二次调整
2010-09-26 19:39:00本篇文章将介绍SharpStreaming项目架构的二次调整。在本系列的文章中,笔者曾经有一篇关于项目工程结构调整的文章,里面比较粗略地谈到了该项目大致划分。今天这里要谈的是该项目架构的二次调整,并将在下一篇文章中...
-
【数据分析-随到随学】机器学习模型及应用
-
UA MATH567 高维统计 专题0 为什么需要高维统计理论?——以线性判别分析为例
-
754. 平方矩阵 II ( 模拟 )
-
30个生涯锦囊,带你跳出迷茫,找到适合你的职业方向
-
【数据分析-随到随学】数据分析建模和预测
-
在指定的窗口输入文本-要加载精易模块.e
-
FPGA 之 SOPC 系列(六)Nios II 程序开发 II
-
three.js入门速成
-
jdk-8u271-windows-x64.zip
-
信息学奥赛一本通 1985:【19CSPJ普及组】加工零件
-
彻底学会正则表达式
-
Java学习路线,好的学习路线和好的方法,能让我们少走些弯路
-
易语言子程序的调用.e
-
python数据分析基础
-
C/C++编程全家桶(Daozy极限编程)
-
部分常见的web网页攻击的简单记录
-
易语言显示鼠标座标.e
-
21年新接口自动化测试视频postman教程 零基础接口测试
-
基于Android的备忘录源码
-
CPP-Summit 2019 - 吴咏炜 - 深入浅出 C++20 协程.pdf