前言:

框架开源后,学习使用的人越来越多了,所以我也更加积极的用代码回应了。

在框架完成了:数据库读写分离功能 和 分布式缓存功能 后:

经过三天三夜的不眠不休,终于完成框架第三个重量级的功能:自动化分布式缓存。

源代码已经提交,源码地址见:终于等到你:CYQ.Data V5系列 (ORM数据层)最新版本开源了

记得很多年前,大概2010年左右吧,CYQ.Data框架进入快速更新版本阶段的时候,

那时候的我会经常在一些技术群里有意无意的说起自己的框架,然后群里总有那么一些自我而自负的人会说:

你的框架有啥优点呢?我为啥要使用你的呢?看你这起的框架破名就不想使用了....

可能是不擅于表达...

可能是不屑于回答...

可能的确是没啥优点好说...

忽然就有一种蛋蛋的忧伤...

后来就转变了心态,转收费,小众就小众,彪悍的人生,不需要解释......

后来的这些年:

创业的经验,学会了从产品的思维让框架的使用简单化。

技术的沉淀,思考了从架构及分布式思维设计框架。

项目的历程,促使了框架应用场景的丰富化及自动化。

框架的优势:

如果现在有人问我框架和其它ORM比起来的的优势,我只能说,能不比么?因为早已经不在一个Level上了。

不过既然你们诚心诚意的问了,我就大发慈悲的说了,哈:

5年前V4系列版本图:

不过我并不想把这些功能当成框架的优势,因为我觉技术沉淀了一定岁月,只要努力,假以时日都可以造出来。

如今的V5系列版本图:

V5的功能很多,这里只重点介绍这五点,因为框架能集成这五点的,目前市面上仅此一家做到了,别无分支。

1:多数据库互通支持:

V4时的多数据库支持和其它ORM支持多种数库类似,做到支持多种数据库,通常只需要完成接口就可以了;

V5做到多数据库互通,全宇宙仅此一家。

要做到多数据库互通,需要研究各种数据库的数据类型差异,函数差异,需要抽象,需要比对,需要策略思维,需要大量的场景收集。

而DBImport就是一款打磨这个功能的最佳场景,前后花了几年的时间,才磨到现在的流畅稳定阶段。

有时候我觉的,DBImport在海外应该很有市场,毕竟全球也就这一款软件(这么便宜)能完成在这么多种数据库间任意互通。

2:自动化框架编程:

市场上的ORM,都是单个赋值,单个行数据保存的。

而框架的进化史:单个赋值=》单个UI交互=》批量UI交互=》批量数据交互=》自动化交互

相关的介绍见:http://www.cnblogs.com/cyq1162/p/5634414.html

关于开发框架:(ORM做为数据层+整套解决方案)

目前发现的开发框架的二次开发,都停留在用代码生成器生成一堆代码的阶段......

没有代码生成器就很难写代码了,项目艰难了,或者开发周期要无限长了......。

我只能说:曾经我也曾历过,后来发现了有改良的空间。

基于V5的开发框架:ASP.NET Aries,让你发现优秀的自动化开发框架,根本不需要什么代码生成器。

相关的介绍见:http://www.cnblogs.com/cyq1162/p/5487796.html

3:分布式数据库(读写分离)

市场上的ORM都没提供这个功能:

原因之一:不好实现;

原因之二:数据一致性不知道怎么解决;

原因之三:觉得数据量大了,公司都有架构师,架构师会坐业务层面解决这个问题。

由于大环境问题,.NET的市场,少有架构师的岗位,也很缺架构师。

而V5框架,不仅完成了此功能,重要的是:

从单数据库到分布式数据库的过渡,在代码层面,只需要配数据库链接,目前没有其它框架做到。

4:分布式缓存:

市面上有很多很多分布式缓存组件可以用,但唯一的缺点是,你需要引用组件,修改代码。

但V5的框架,从单机过滤到分布式,只需要配置服务器链接,目前没有其它框架做到。

5:分布式自动化缓存:

和第4点的差别是,第4点是手动档,这里是自动档。

方便理解的说类似NHibernate的二级缓存之类的。

听说很多ORM都实现了对实体的缓存,而且会将缓存命率做为一个卖点。

但是现实的场景却是:ORM+执行SQL,因此框架的二级缓存没法用,因为在SQL执行端,无法搞定策略失效策略,和数据及时性问题。

V5的不一样是,因为天生就对SQL语句的支持,所以缓存策略能全局分析,再加上分布式缓存的启用,能使自动化缓存立即B格成分布式自动化缓存。

综述如图:

好吧,优点就介绍到这里吧,已经全宇宙无敌了,再B下去,愤青要受不了了。

出格要吐槽的一个观点:

大部分的人都认为从WebForm到MVC是一种进步,其实我反而认为是一种退步。

从组件化的开发模式,退回原始的手工档模式。

让WebForm背负沉沦骂声的,表面是ViewState和服务器控件,实际而又残酷的真相是:大部分人都写不好数据层

如果让所有人回到手写SqlConnection、SqlCommand、SqlDataReader、SqlDataAdapter时代,MVC也一样被人叼:又慢又难用......

如果那时候有V5框架,WebForm的春天应该持续很长很长......

现在,webform虽然渐行渐远,但至少它没有了慢的理由了,因为有了V5。

总结:

这些年,框架一直伴随个人的成长,已经从小打小闹的ORM,进化到大打大闹的ORM了:

从原始的只要能操作数据库就好,到产品思维,到自动化思维,到分布式架构思维,下一阶段,会是什么思维呢?

当你项目刚开始,开发人员技术弱的时候,它帮你解决效率和性能问题;

当你项目大了后,没有架构师的时候,它帮你解决分布式架构问题;

而这一切,你现在都免费可得.....(对了,我博客安装了打赏插件的,哈)

总而言之,言而总之,总总言之,这么好的框架,泥玛,竟然开源了......

CYQ.Data V5 从入门到放弃ORM系列:框架的优势的更多相关文章

  1. CYQ.Data V5 从入门到放弃ORM系列:教程 - Log、SysLogs两个日志类使用

    Log 静态类介绍: Public Static (Shared) Methods GetExceptionMessage 获取异常的内部信息 WriteLogToDB Overloaded. 将日志 ...

  2. CYQ.Data V5 从入门到放弃ORM系列:教程 - AppConfig、AppDebug类的使用

    1:AppConfig类的介绍: Public Static (Shared) Properties IsEnumToInt 是否使用表字段枚举转Int方式(默认为false). 设置为true时,可 ...

  3. CYQ.Data V5 从入门到放弃ORM系列:教程 - MProc类使用

    MProc介绍 MProc:是一个用于执行SQL或存储过程的数据库操作类,它轻量高性能地类似于Dapper. MProc:它出现的场景很少,因为MAction自身就能处理掉90%-100%的数据操作( ...

  4. CYQ.Data V5 从入门到放弃ORM系列:教程 - MAction类使用

    背景: 随着V5框架使用者的快速增加,终于促使我开始对整个框架编写完整的Demo. 上周大概花了一星期的时间,每天写到夜里3点半,终完成了框架所有功能的Demo. 同时,按V5框架名称空间的顺序,对每 ...

  5. CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维

    前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...

  6. 终于等到你:CYQ.Data V5系列 (ORM数据层)最新版本开源了

    前言: 不要问我框架为什么从收费授权转到免费开源,人生没有那么多为什么,这些年我开源的东西并不少,虽然这个是最核心的,看淡了就也没什么了. 群里的网友:太平说: 记得一年前你开源另一个项目的时候我就说 ...

  7. 终于等到你:CYQ.Data V5系列 (ORM数据层,支持.NET Core)最新版本开源了

    前言: 不要问我框架为什么从收费授权转到免费开源,人生没有那么多为什么,这些年我开源的东西并不少,虽然这个是最核心的,看淡了就也没什么了. 群里的网友:太平说: 记得一年前你开源另一个项目的时候我就说 ...

  8. CYQ.Data V5 分布式自动化缓存设计介绍(二)

    前言: 最近一段时间,开始了<IT连>创业,所以精力和写的文章多数是在分享创业的过程. 而关于本人三大框架CYQ.Data.Aries.Taurus.MVC的相关文章,基本都很少写了. 但 ...

  9. CYQ.Data V5 分布式缓存Redis应用开发及实现算法原理介绍

    前言: 自从CYQ.Data框架出了数据库读写分离.分布式缓存MemCache.自动缓存等大功能之后,就进入了频繁的细节打磨优化阶段. 从以下的更新列表就可以看出来了,3个月更新了100条次功能: 3 ...

随机推荐

  1. TADOQuery学习总结

    上一篇讲解了一些TADOQuery的简单的用法,但是还有很多方法没有讲到,这里就直接拿来主义,转载一篇<TADOQuery学习总结>为我所用. 1.Create三种参数的区别 TADOQu ...

  2. Delphi使用ADO进行数据库编程

    Delphi是一个可视化的编程工具,ADO编程也是这样,所以话不多言,直接通过代码.截图和语言来说明. 我的数据库是Oracle,为了测试,先建一个表:create table practice(un ...

  3. Selenium Remote-Control架构

    Selenium Remote-Control(RC)是一个测试工具,它允许你编写基于JavaScript浏览器的Web UI自动化测试,它支持很多编程语言. Selenium RC包括两部分: 一个 ...

  4. MIT 6.828 JOS学习笔记16. Lab 2.2

    Part 3 Kernel Address Space JOS把32位线性地址虚拟空间划分成两个部分.其中用户环境(进程运行环境)通常占据低地址的那部分,叫用户地址空间.而操作系统内核总是占据高地址的 ...

  5. nodejs复习01

    console 格式化 console.log("%s:%s", "a", "b") //字符串 console.log("%d. ...

  6. PHP isset() empty() isnull() 的区别

    <? isset - 检测变量是否设置 注意: isset 检测变量是否设置,并且不是 NULL. 若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE: empty ...

  7. From cls答辩

    我没有想过有一天会因为wjmzbmr而开一篇. 因为看到了cls答辩的链接而震撼或是感动. 可能也跟最近身心比较疲惫有关...容易产生这样那样的感触... cls可能已不是我们这代OIER所能膜到的了 ...

  8. iOS CoreData primitive accessor

    Given an entity with an attribute firstName, Core Data automatically generates firstName, setFirstNa ...

  9. fly bird

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. Codeforces CF#628 Education 8 A. Tennis Tournament

    A. Tennis Tournament time limit per test 1 second memory limit per test 256 megabytes input standard ...