前言:

本博客主要针对架构、框架和设计模式三者的区别、还有三层和MVC的区别进行讨论、对于这三者一点都不了解的、请点在维基和百度百科上补补课、这里就不发链接了

软件架构(software architecture)

软件的架构是系统的一个草图、阐述了各个组件之间的通讯、划分层次、一旦系统开始详细设计、架构蓝图就很难甚至无法更改、是由软件架构师从无到有设计出来的。

例: 三层架构:一种设计软件架构的思想

把软件上从逻辑上分为、表示层(UI)业务逻辑层(BLL)数据访问层(DAL)

目的:低耦合、高内聚、各司其职、达到易更换、修改、可以分散部署、编码。

三层架构详解:http://blog.csdn.net/u010191034/article/details/24588675

软件框架(Softwareframework)

软件框架是在一定领域内、别人已经对这个领域制作软件所需的基础架构功能、进行了总结、做出了有代码实体的软件框架结构、如果要制作这一领域的软件、可以在别人写好的框架上、继续设计、编写自己的软件、骨头架上填肉、框架有一定的局限性。

例:MVC(框架)

英文Model View Controller、是针对Web开发、已经写好有代码的框架、分别为M模型(model)-V视图(view)-C控制器(controller)三部分

目的:模型和视图分离开、使得一个模型可被多个视图使用、简单说就是同样的一个网站、用手机的视图(界面)和电脑的视图、可以共用一个模型。

设计模式(Design pattern)

对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案、是一种解决方案的思想、不拘泥于代码、通常以类型或对象来描述其中的关系和相互作用、依赖与抽象、来达到解耦和、可宽展、易维护等、设计模式是用来解决问题的。

三者区别

软件架构是指软件架构师在制作软件的时候、对软件规划的一种蓝图、一般是分层、画出各个组件的关系。

软件框架是指在特定的领域内、已经有人写好的框架(有代码)、框架有局限性、只限特定领域。

设计模式是指针对一些编程实际的问题所提出的抽象解决方案、用类与类之间的关系相互作用、达到目的。

三层架构与MVC的区别

根本区别是三成是机构而MVC是框架、MVC是应用与Web别人已经写好的代码、如ASP.NET就可以直接点击MVC、会自动生成框架代码、而三层是做软件自己划分的、是一种制作软件的思想。

有图有真相、下面是ASP.NET的建项目

他俩的共同点就是都分成了三个、折让人们很容易误解

而且三层的UI层与MVC的M和C、功能很像

而MVC的V和BLL和DLL、功能很像

如图

虽然相似、但是从根本上就不是一个东西呦!因为架构是一种做软件的思想、而框架是人们已经对特定领域软件的共同特性、所编写好的代码成品。

所以

软件架构>软件框架>设计模式

当然从解耦和的观点来看、这三个都是以解耦为目的、也是面向对象、做出更好的程序、所以什么一样不一样的、是看在哪个层面看

如:

你买了两个iPhone6手机是一样吗?

从型号来看、都是苹果6手机、是一样的

从安装软件上比可能就不一样了

所以、有人说MVC和三成架构是一个东西、没错、都是为了解耦和、有人说MVC和三层架构不是一个东西、也对、MVC有实际的框架代码、三层架构是做软件的一种思想、就好像设计模式一样、三层是做软件的思想、设计模式是解决问题的思想。

正所谓:横看成岭侧成峰、远近高低各不同、事事无绝对、多学多理解、今天写的挺浓缩的、希望能帮到大家、也希望大家看到也能多给我提提建议、谢谢!

———————————————想跟503说再见……———————————————

——————————————chenchen———————————————

最新文章

  1. jQuery判断及更改checkbox状态
  2. 事件(event),正则
  3. Visual Studio 2015 速递(4)——高级特性之移动开发
  4. [原] XAF 如何基于业务规则禁用属性
  5. nodejs 常用全局包
  6. PHP二位数组/多维数组 根据某个键值排序
  7. Web定时执行某个方法-网页获取
  8. 编写PHP规则
  9. golang中Context的使用场景
  10. Oracle问题处理
  11. myecplise ssh项目配置上遇到的问题
  12. webpack打包去除map文件及其他一些配置
  13. python3 day03 大纲
  14. es修改指定的field(partial update)
  15. 【Genymotion】add a new virtual device 失败
  16. Uboot启动命令使用
  17. DataFrame查增改删
  18. 预防Redis缓存穿透、缓存雪崩解决方案
  19. Eclipse和JDK的安装配置
  20. 孤荷凌寒自学python第七十五天开始写Python的第一个爬虫5

热门文章

  1. Regulator IC forms convenient overvoltage detector
  2. erlang 大神
  3. visual studio 2008试用版的评估期(万能破解)
  4. java string(2)
  5. git ssh key配置
  6. CAS3.5.x(x>1)支持OAuth2 server
  7. 使用Struts2服务端与android交互
  8. matlab在图像中画长方形(框)
  9. Git分布式开发之生成ssh公钥
  10. 如何在CentOS 7中添加新磁盘而不用重启系统