如果没有什么好处,不会有人愿意去做,那么,你真的需要应用程序框架吗,它能为你带来什么好处?

应用程序框架为你提供现成的开发环境

  现在来了一个项目,你可以直接打开VS,然后就开工敲代码吗?不行,你得先创建项目,当使用了分层架构,还需要创建更多的项目,这些项目根据依赖关系进行配置。然后依次引用各种依赖组件,很多组件还需要配置,比如Log4.Net。
  配置好项目以后,你还得测试各依赖组件是否能正常工作,可能你的运气比较好,一下就全部测试通过。但也有比较背的时候,半天调不通,这时候你会发现环境问题有时比代码Bug更难搞。
  从头开始创建和配置开发环境是劳神的工作,当你手头有套自己的应用程序框架,情况就大不相同了,它为你提供了现成的开发环境。

应用程序框架帮助管理第三方依赖组件

  随着开源事业的发展,第三方开源框架名目繁多,层出不穷,另外第三方应用平台也多如牛毛。如果在应用程序中直接使用这些三方API,势必被牢牢绑定,无法脱身,当要切换框架或应用平台时,不得不重写应用程序代码。
  如果把第三方框架或应用平台API封装到应用程序框架中,应用程序仅使用自己框架提供的API,这样就可以轻松切换相关实现了。

应用程序框架为应用程序体系架构提供支持

  当你的项目需求非常简单,比如企业网站,可能不需要什么体系架构,建立一个表现层项目,所有的代码直接写到界面上,或者后置代码中。对于简单项目,单层架构还是很有优势的,简单、快速。但更复杂的项目需要采用分层架构,目前普遍采用传统三层架构或DDD分层架构。
  特别是Entity Framework的普及,大家开始逐步采用DDD的一些设计元素进行构造。使用DDD的第一步是创建层超类型,即各层构造类型的基类。将层超类型放到应用程序框架中,而不是项目中,可以为多个项目提供支持。

应用程序框架为常规任务提供更易用的Api

  前文提到,.Net Framework提供的是原始Api,如果想在应用程序中访问更易用的Api,还需要自己动手,丰衣足食。
  把常见的.Net操作封装到应用程序框架中,不仅在调用的时候更简单,而且代码得到集中管理,修改和扩展都更容易。

应用程序框架解决大部分机械工作,大力提升开发效率  

  当采用分层架构以后,会发现开发工作量显著增长,这是由于分层架构会建立多个项目,任何一个操作,都需要在多个项目中创建代码。另外体系架构越复杂,各层管道连接代码也越多。
  信息系统最基本的操作是CRUD,手工创建这些代码,不仅浪费时间,而且容易出错。
  通过应用程序框架配套的代码生成器来生成这些CRUD和管道代码,可以大力提升开发效率。

应用程序框架内置通用模块,从而加速项目进度

  大部分信息系统都需要进行登录,主界面菜单,权限控制等操作,开发一个完善的权限管理模块需要数周时间。
  在应用程序框架中内置一些通用模块,可以显著提升项目进度。

应用程序框架为团队开发提供一致的编程风格

  团队开发的一个问题是各程序员的编程习惯和风格不同,导致项目代码异常混乱,没人愿意维护别人的代码,当开发某一模块的程序员离职后,接手该模块的新程序员将痛苦不堪。
  通过制定编码规范可以一定程度改善这个问题,但还是非常被动,执行效果也可能不佳。
  应用程序框架为团队提供一套Api,且基础代码由框架自动创建,编码规范、编程风格得到强制实施,为后续维护奠定基础。

  综上所述,量身打造一套符合自己习惯的应用程序框架,对项目质量、进度、可维护性等有重要意义。

应用程序框架实战四:你需要应用程序框架吗相关推荐

  1. 钉钉开放平台-小程序开发实战(钉钉小程序客户端)

    文章目录 钉钉小程序客户端 关于钉钉开放平台 一.小程序基础 1. 基本概念 2. 小程序页面基础 页面运行机制 页面生命周期 页面栈 页面跳转 怎么使用小程序的data-*属性? 3. 小程序常用布 ...

  2. 微信小程序开发系列四:微信小程序之控制器的初始化逻辑

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 这个教程的前两篇文章,介绍了如何 ...

  3. 微信小程序开发系列 (四) :微信小程序的页面跳转路由设计

    笔者由于工作需要,曾经参加过一个微信小程序同 SAP 系统集成的项目,因此从零开始学习了微信小程序的开发知识.这里通过系列文章把自己所学分享出来,希望对相关学习者有所帮助. 本教程前面三篇文章: 微信 ...

  4. 关于python中程序流程结构-四、python基础(程序目录结构规范)

    程序目录结构: 设计一个层次清晰的目录结构,就是为了达到以下两点: 可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等.从而非常快速 ...

  5. anaconda怎么运行python程序_Python中四种运行其他程序的方式,你知道吗?

    前言 在Python中,可以方便地使用os模块来运行其他脚本或者程序,这样就可以在脚本中直接使用其他脚本或程序提供的功能,而不必再次编写实现该功能的代码.为了更好地控制运行的进程,可以使用win32p ...

  6. python运行程序-Python中四种运行其他程序的方式

    在Python中,可以方便地使用os模块来运行其他脚本或者程序,这样就可以在脚本中直接使用其他脚本或程序提供的功能,而不必再次编写实现该功能的代码.为了更好地控制运行的进程,可以使用win32proc ...

  7. 钉钉开放平台-小程序开发实战(钉钉小程序服务器端)

    文章目录 钉钉小程序服务器端 一.钉钉服务api 接口规范 二.第三方个人应用.第三方企业应用.企业内部应用 区别 必须使用钉钉云的情形 三.企业内部应用 服务API 1. 通信录管理 获取部门列表 ...

  8. 微信小程序|开发实战篇之十三---小程序布局/组件/屏幕适配问题

    适配除去一些固定组件的屏幕高度 1.小程序屏幕适配 2.解决方案 2.1 屏幕适配 2.2 radio的大小调整 3.使用效果 1.小程序屏幕适配 例如:iPhone5.iPhone6/7/8.iPh ...

  9. 8s yaml 配置生成_接口测试框架实战(六) | 配置的数据驱动

    <Python 测试开发实战进阶>课程,4 个月挑战 BAT 大厂年薪 50W+ Offer,文末加群! 在实际工作中,为了便于维护,对于环境的切换和配置,通常不会使用硬编码的形式完成.在 ...

  10. 微信小程序python入门教程-2020Python+微信小程序开发实战(视频+课件)

    本套课程出自老男孩IT教程的Python+微信小程序开发实战官网售价79元,课程基于微信小程序平台开发的的拍卖系统.课程分为4个章节微信小程序快速入门用微信小程序快速开发认证和发布动态模块,第二章拍卖 ...

最新文章

  1. SVM讲的成体系的,自圆其说较好的一篇,上午没读完,KKT第二部分不等式有疑问没弄懂,复制后继续读完
  2. 设置释放COCOS2D-X 的启动流程
  3. table1函数----一维查表
  4. python urllib2及beautifulsoup学习
  5. R-FCN/Faster-rcnn使用snapshot继续训练
  6. Filter_细节_过滤器链(多个过滤器)
  7. Java this 关键字的用法
  8. led灯光衰怎么解决_如何解决LED灯具照明光衰问题
  9. 被3整除判断准则的证明
  10. 文件存储形式的通讯录
  11. 编程基本功:做自解释的测试文档
  12. C#语言和SQL Server数据库技术_前四章错题
  13. 数模算法:模糊综合评价模型
  14. 快速排序qsort函数的compar参数
  15. 如何让IE9或IE8打开多个网页时只保留一个IEXPLORE.EXE进程
  16. java 万年历绪论_基于安卓Android的万年历的设计与开发(含录像)
  17. c语言切蛋糕问题程序设计报告,c语言切蛋糕问题,问题如图。望大神指教。
  18. Learning to Reweight Examples for Robust Deep Learning
  19. 网络笔记(18)DNS协议:网络世界的地址簿
  20. 机器学习 训练较快的模型_通过心理模型更快地学习软件,第1部分

热门文章

  1. 计算机网络与应用在线作业,北航《计算机网络与应用》在线作业一15秋满分答案...
  2. php5中使用xslt扩展,.NET_解析在.net中使用XSLT转换xml文档的示例详解,XSL即可扩展的样式表文件。 可 - phpStudy...
  3. win10安装tensorflow-gpu
  4. cs231n学习(1)图像分类器:KNN和线性分类器(上)
  5. 【POJ-2796】Feel Good【单调栈】
  6. 【带权并查集详解】以HDU 3038为例【How Many Answers Are Wrong】
  7. 【ACM-ICPC 2018 南京赛区网络预赛】Magical Girl Haze【分层图】
  8. Moore-Penrose 广义逆
  9. 一道学吧上的题目,python3 - 解决高中的古典概率问题: 有A、B两个袋子。A袋中装有4个白球、2个黑球,B袋中装有3个白球、4个黑球。从A、B两个袋子中
  10. DNS服务双解析邮箱地址