常用的开发模式介绍

记得很多年前从C#,WebForm开始开发企业应用,很少了解为何要这样进行开发,但是这种模式确实比较简洁而直观。其实不管是什么开发模式终归总结起来无非三种。

  • Model First(模型优先)

    这种开发模式最先起源于瀑布模型,按部就班从需求开始,然后进行设计,开发,测试,部署,上线。
    需求收集完成后进行UE设计,这个UE设计过程中其实就是我们所说的Model First,即最开始进行业务建模,后面所有活动围绕者模型展开,比如数据库设计,编码等

  • Code First(编码优先)

    软件发展的中期,鉴于瀑布模型的低效,人们提出如果简化开发模式提高开发效率的方式,比如:敏捷开发模型,极限编程,这种模型的理念就是将项目进行拆解,项目中所有的角色都是非常有沟通能力而且能够并行作战的能力,需求,开发,测试可以同时进行,开发和测试人员都是比较经验丰富的人员,一般采用测试驱动的方式一边了解需求,一边进行编码,在沟通和了解过程不断完善现有模型和编码,测试用例最终达到实现迭代需求的目标,这种开发模型对于开发角色来说就是编码优先的开发模型。

  • Database First(数据库优先)

    所谓 Database First,意思是数据库优先,指的是在设计和开发系统时,优先和重点做的工作是创建数据库结构,然后去实现业务。传统的瀑布模型在进行需求设计之后,要进行系统设计,系统设计的工作就包括了数据库的设计,对于瀑布模型来说其实数据库设计和UE设计可以并行进行,如果是数据库设计工作优先进行,可以根据数据库设计来生成UE界面和代码。

以上模式没有孰优孰劣之分,选择什么开发模型取决于项目复杂度和团队的开发能力,有些团队会选择多种开发模型同时进行。原因在于Model First的开发方式以界面优先,如果依据模型来生成数据库或者代码,这种模式对需求和设计人员对业务的了解能力要求非常高,如果模型设计的不够精细或者抽象,或者模型设计与实际模型相违背时,那么对于后面的工作将是灾难,这种模型也不便于重用,所以有些团队优先会选择DataBase First或者Code First来进行开发。

从ORM开始谈三种开发模型

主流的企业应用开发工具还是java和.net,java的ORM众多,国人偏爱MyBatis,MyBatis不支持Code First,所以在国内最常见的开发模式还是Model First,Database First,对于.net 阵营来说微软一般擅长于一手包办,其看家工具之一EF三种模式都支持,微软使用它与java的Hibernate进行对标,并且其拥有Hibernate所不具备的过人之处。

那么java如何实现code first模式?答案就是Spring全家桶的JPA,JPA在国外使用的相对较多,由于MyBatis能够定制SQL,所以对SQL查询性能相对比较友好,JPA和Hibernate一样对数据库访问高度封装,不具备SQL调优能力,如果要二选一,对于国内数据量相对来说较大的情况下一般会优先选择MyBatis这种ORM框架。其实根据马大师的理论,我们可以在项目上使用CQS模式,即写入可以使用一套ORM,读取可以使用另外一套ORM。但是基于维护成本考虑,很少有人这样选择罢了,或者架构们很少具备这样的意识吧。

从开发语言开始谈三种开发模型

.net

主要是Web Forms和MVC两种模式

Web Forms

Web Forms是用户使用浏览器请求的页面。 可以使用 HTML、客户端脚本、服务器控件和服务器代码的组合编写这些页面。 当用户请求页面时,框架会在服务器上对其进行编译和执行,然后框架会生成浏览器可以呈现的 HTML 标记。 ASP.NET Web Forms页在任何浏览器或客户端设备中向用户显示信息。

ASP.NET MVC

微软提供的以MVC模式为基础的ASP.NET Web应用程序开发框架。

MVC 模式分别为:

  • Model:领域模型 处理应用程序数据逻辑部分,获取数据,处理数据

  • View:视图 用于处理实际返回给用户的页面

  • Controller:控制器 通过Model 读取处理数据,通过View 将结果返回。

两者的区别和各自优缺点

Web Forms 优点

它支持通过 HTTP 保留状态的事件模型,这有益于开发业务线 Web 应用程序。 基于 Web 窗体的应用程序提供了在数百个服务器控件中受支持的许多事件。
它使用页面控制器模式向单个页面添加功能。 有关详细信息,请参阅 页面控制器。
它使用视图状态或基于服务器的表单,这使得管理状态信息变得更加容易。
它非常适合想要利用大量组件快速开发应用程序的 Web 开发人员和设计人员的小型团队。
通常,应用程序开发不太复杂,因为 页面类、 控件等 (组件) 紧密集成,并且通常比 MVC 模型所需的代码更少。

Web Forms 缺点

正是由于封装程度高,Web Forms非常难扩展,开发人员便利了解内部运行原理,不容易被测试。同时控件的ViewState 增加了网站服务器的传输量,一定程度上影响程序的效率。

ASP.NET MVC 优点

通过将应用程序分为模型、视图和控制器,化繁为简的工作更加轻松。
它不使用视图状态或基于服务器的窗体。 这使得 MVC 框架特别适合想要完全控制应用程序行为的开发人员。
它使用一种通过单一控制器处理 Web 应用程序请求的前端控制器模式。 这使您可以设计一个支持丰富路由基础结构的应用程序。 有关详细信息,请参阅 前端控制器。
它为测试驱动的开发 (TDD) 提供了更好的支持。
它适用于需要高度控制应用程序行为的大型开发人员和 Web 设计人员团队支持的 Web 应用程序。

ASP.NET MVC 缺点
  • 增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。

  • 视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。

  • 视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。

  • 一般高级的界面工具或构造器不支持MVC模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难。

简单来说,不同框架的选择也是在于你对项目开发的权衡,如果选择Web Forms虽然开发效率高,但是其扩展性较差,如果项目需求变更频繁,建议还是选择MVC较好。

对于Web Forms来说由于其高度封装了业务逻辑和抽象了web业务,但是逻辑与控件事件耦合严重,不利于扩展和后续维护,对业务人员较友好,所以其更适合基于Model First的开发模式,而相对于MVC,事件模型交给前端,后端解耦合彻底,使用Code First或者Database First更容易上手,其门槛也相对较高。

java

java 也有像.net一样基于事件驱动框架的实现,java swing ,flex 等,这些都属于非主流框架,不成气候,所以其企业业务一般拱手想让.net,java还是擅长于做大数据高并发的互联网的业务。如果用java开发企业类项目,主流还是SSM,SSH,SSJ等,和.NET MVC一样,使用Code First或者Database First则更容易上手。

从低代码平台谈三种开发模式

之前介绍过很多低代码平台,其实不管是商用还是开源的低代码平台其开发模式无非是我们上面介绍的这些,只不过是低代码平台又从业务或者框架上做了一些抽象,以及在牺牲了一些扩展性的前提下提高了开发效率,对于需要灵活抽象度没有那么高的业务或者需要灵活扩展的业务使用原生开发模式和低代码开发工具其实差异不大,而低代码来说可能还附带了一定的学习成本。主流的低代码模式主要有下面两种

  1. 基于前端的控件模型,主要业务交互业务在前端实现,后端提供API接口返回数据,其本质还是一种前后端分离的架构
  2. 基于后端的元数据驱动模型,主是的实现的方式是后端组装前端需要的元数据到前端,前端将根据元数据来渲染前端界面,和CMS的原理类似。

不管是哪种方式,由于低代码和Web Forms的实现类似,决定于其对于Model First的开发模式更为友好,其同时继承了Web Forms开发模式的优缺点。低代码平台定位为开发技能不熟练或者不具备技术背景的项目实施或用户,所谓鱼和熊掌不可兼得,注定其耦合性较高的特性,不利于后续维护和扩展。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容