前言:

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

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

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

源代码已经提交,源码地址见:终于等到你: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. Mac OS X上搭建伪分布式CDH版本Hadoop开发环境

    最近在研究数据挖掘相关的东西,在本地 Mac 环境搭建了一套伪分布式的 hadoop 开发环境,采用CDH发行版本,省时省心. 参考来源 How-to: Install CDH on Mac OSX ...

  2. elasticsearch5.0.0 安装插件及配置过程

    elasticsearch5.0.0 安装插件及配置过程 由于es5.0是里程碑式的更新,所以很多变化的地方,暂时我就插件安装遇到的问题记录一下. 插件安装命令 2.3版本的安装命令 安装Marvel ...

  3. ViewPager中Fragment切换过程不被销毁的方法

    背景:最近在写一个音乐播放器,然后一个ViewPager里面加载了四个Fragment,但是在切换过程中发现,Fragment总是被销毁,在网上查了一下,发现有两种办法可以保证Fragment不被销毁 ...

  4. 如何在vim里删除空行?

    删除空行,进入底行模式 :g/^$/d ^代表首列 $代表尾列 d代表删除 g代表全局替换

  5. NetMQ(一):zeromq简介

    ZeroMQ系列 之NetMQ 一:zeromq简介 二:NetMQ 请求响应模式 Request-Reply 三:NetMQ 发布订阅模式 Publisher-Subscriber 四:NetMQ ...

  6. python 小程序 比较目录间的差异

    比较目录间的差异: I 只按照名称做了比较,如果目录的文件名称相同,但是内容不同脚本认为为相同文件 II 针对目录下面的目录没有循环比较,只是比较了目录的名称 import sys, os def d ...

  7. iOS之 利用通知(NSNotificationCenter)获取键盘的高度,以及显示和隐藏键盘时修改界面的注意事项

    我们在开发中会遇到这样的情况:调用键盘时需要界面有一个调整,避免键盘遮掩输入框. 但实现时你会发现,在不同的手机上键盘的高度是不同的.这里列举一下: //获取键盘的高度 /* iphone 6: 中文 ...

  8. SpringMVC -- 注解

    @Entity -- 实体类@Table(name = "hat_province", catalog = "news") -- 对应的表name -- 表名c ...

  9. kindeditor-4.1.3工具使用技巧:如何在编辑区上传图片并保存绝对路径

    MVC项目开中用到了KindEditor图片上传工具,需要在编辑区内上传图片,并将图片的URL保存为符合如下格式地址,如http://192.168.0.111/uploadImg/imgName.j ...

  10. POJ 1979 题解

    Red and Black Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 31722   Accepted: 17298 D ...