应用程序框架实战四:你需要应用程序框架吗

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

时间: 2024-08-02 22:02:58

应用程序框架实战四:你需要应用程序框架吗的相关文章

【WePY小程序框架实战四】-使用async&await异步请求数据

[WePY小程序框架实战一]-创建项目 [WePY小程序框架实战二]-页面结构 [WePY小程序框架实战三]-组件传值 async await 是对promise的近一步优化,既解决了promise链式then的这种写法壁垒,又让异步请求更像同步,若对async await不太了解的同学可以直接参考阮一峰老师的文章async 函数的含义和用法,这里我们只关注怎么在小程序wepy架构中如何使用. 依赖库 import 'wepy-async-function' app.wpy中启用 export

《一头扎进》系列之Python+Selenium框架实战篇4- 价值好几K的框架,呵!这个框架有点意思啊!!!

1.简介 前面文章,我们实现了框架的一部分功能,包括日志类和浏览器引擎类的封装,今天我们继续封装一个基类和介绍如何实现POM.关于基类,是这样定义的:把一些常见的页面操作的selenium封装到base_page.py这个类文件,以后每个POM中的页面类,都继承这个基类,这样每个页面类都有基类的方法,这个我们会在这篇文章由宏哥实现. 2.项目层级结构 1. 上一篇中我们已经创建好了项目层级结构,具体项目层级结构如下图.这里不再赘述,相关文件也如下: 3. 定位和截图类封装 1. 在实现封装基类里

应用程序框架实战三:什么是应用程序框架

什么是应用程序框架?正如框架是架构的具体实现一样,应用程序框架是应用程序架构的具体实现.不过这样说了等于没说,因为框架和架构都是如此抽象.为了获得直观的感受,下面先看看更具体的.Net Framework和第三方框架. .Net Framework为.Net程序员提供了一个庞大的类库,几乎任何开发任务在.Net Framework中都能找到答案.虽然如此,.Net Framework还是不能一手遮天. 例如,现在我们在项目中需要记录日志,一种办法是直接使用.Net Framework的文件操作类

一步步搭建自己的轻量级MVCphp框架-(四)一个国产轻量级框架Amysql源码分析(3) 总进程对象

AmysqlProcess类,框架的总进程对象 ./Amysql/Amysql.php 下面还是和以前一样,先上代码~ class AmysqlProcess { public $AmysqlController; public $ControllerName; public $ActionName; public $ControllerFile; function ProcessStart() { global $Config; if ($Config['HttpPath']) { $GETP

应用程序框架实战三十四:数据传输对象(DTO)介绍及各类型实体比较(转)

本文将介绍DDD分层架构中广泛使用的数据传输对象Dto,并且与领域实体Entity,查询实体QueryObject,视图实体ViewModel等几种实体进行比较. 领域实体为何不能一统江湖? 当你阅读我或其它博主提供的示例代码时,会发现几种类型的实体,这几种实体初步看上去区别不大,只是名称不同,特别在这些示例非常简单的情况下更是如此.你可能会疑惑为何要搞得这么复杂,采用一种实体不是更好? 在最理想的情况下,我们只想采用领域实体Entity进行所有的操作. 领域实体是领域层的核心,是业务逻辑的主要

应用程序框架实战三十六:CRUD实战演练介绍

从本篇开始,本系列将进入实战演练阶段. 前面主要介绍了一些应用程序框架的概念和基类,本来想把所有概念介绍完,再把框架内部实现都讲完了,再进入实战,这样可以让初学者基础牢靠.不过我的精力很有限,文章进度越来越慢,所以准备切换一下介绍顺序,把实战演练提前,以方便你阅读代码. 实战演练介绍 本系列实战演练共分两个部分. 实战演练第一部分介绍如何快速解决CRUD机械操作,这一部分我将手把手带领各位同学从搭建VS环境开始,创建程序集及各程序集间的依赖关系,以及引入依赖的外部DLL,并手工完成代码示例中Ap

应用程序框架实战十五:DDD分层架构之领域实体(验证篇)

在应用程序框架实战十四:DDD分层架构之领域实体(基础篇)一文中,我介绍了领域实体的基础,包括标识.相等性比较.输出实体状态等.本文将介绍领域实体的一个核心内容——验证,它是应用程序健壮性的基石.为了完成领域实体的验证,我们在前面已经准备好了验证公共操作类和异常公共操作类. .Net提供的DataAnnotations验证方法非常强大,Mvc会自动将DataAnnotations特性转换为客户端Js验证,从而提升了用户体验.但是客户端验证是靠不住的,因为很容易绕开界面向服务端提交数据,所以服务端

【原创】NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战

概述 本文演示的是一个Android客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo. 当前由于NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能.这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2.而Netty的主要版本是Netty3和Netty4(Netty5已经被取消开发了:详见此文). 本文中,服务端将分别用MINA2和Netty4进行实现,但在你实际的项目中服务端实现只需选其一就行了.本文中的Demo同时

应用程序框架实战三十八:项目示例VS解决方案的创建(一)

进行项目开发的第一步,是创建出适合自己团队习惯的VS解决方案,虽然我已经提供了项目示例,但毕竟是我创建的,你直接使用可能并不合适,另外你如果尝试模仿重新创建该示例,中间可能碰到各种障碍,特别是项目间的依赖关系. 本文的目的是帮助.Net架构初学者能顺利搭建起适合自己的VS解决方案,我会在本文演示曾经用过的几种不同风格的目录结构,你可以根据自己的习惯选择一种并自行修改. 本系列假定你已经熟悉如何创建.NET类库等基础知识,并具有.Net开发经验,我不会详细到每一个细节.如果你是.Net初学者,尚未