记一次和阿里某总监对话引发的思考:说说你框架的设计思路和优点亮点!

背景:

前不久和阿里的一个技术总监风动聊的时候,他问了这样一个问题:说说你框架的设计思路和优点?

话说,这个问题,5年前开始就一直经常出现在眼前,可我从没认真为它找出过答案!

于是,夜深深,我躺在床上,用笔记本,一边思考,一边打字,试着找寻!

这些年来,我的框架或作品,都快凑满十二个了,每个单独都可以说上好几天。

但如果时间只有半小时,我要怎么介绍呢?介绍哪些呢?

出现在脑海里的框架有三个:CYQ.Data、ASP.NET Aries、Taurus.MVC。

大概是因为近期的精力都在这上面吧的吧(如当年我精力花在Qblog一样吧)。

说说你框架的设计思路?

框架的设计思路?哪个框架?我自己挑一个?

如果要讲Aries或Taurus,就必须讲CYQ.Data,因为它们都是基于CYQ.Data的存在而存在的。

所以问题就变成回答:说说你CYQ.Data框架的设计思路?

我感觉很难回答这个问题,内心也能感受到一丝抗拒这个问题的想法?

框架是漫长的岁月演进重构而来的,最早期的思路是这样的:

构造一个简单的MDataTable体系,传进一个表名,根据数据库链接拿到表结构,再根据行的列构造出SQL语句执行,把数据读到MDataTable返回。

以上一句概括了最早期的思路,但没有设计,简单并不亮。

如果要说说最新版本的设计思路,我想不到该怎么表达,因为重构的次数太多了,几百上千次了,太多细节,每个细节都独立带有它自己的设计思维。

就像腾迅最早也只是QQ发个消息,现在发展到生态圈,你说人家是怎么设计现在的帝国的?

也许,只是做着做着,就这样子了才是答案吧。

好吧,设计思路回答不上来,那就讲讲框架有什么亮点吧?

我了个去,又是这个问题,一个在我内心深深留下伤痕的问题。

我曾经用尽洪荒之力写过一篇文章,来介绍框架的优势,可是我现在记不起来了!

只能忘掉文章,重新思索了:

1:框架支持多数据库。(旁白:支持多数据库的框架到处有吧)

2:嗯,重点框架能把数据从一种数据库转向任意一种数据库(旁白:项目里需要混合数据库的场景太少,这功能没啥感觉)

再想想:

1:框架的缓存集成了Memcache、Redis(旁白:集成不是很简单的事情么?)

2:嗯,但客户端没有引用第三方,都是自己写的,Json解析都是自己写的(旁白:只能说技术好,但功能不算亮点)

再想想:

1:框架实现了自动缓存。(旁白:缓存有啥特别,Hibernate也有二级缓存,说说你它有啥区别?)

2:嗯,Hibernate的二级缓存没法自动失效,因为它的失效策略没法处理自定义的sql语句(旁白:你是怎么控制的?)

3:嗯,我是通过分析执行的SQL语句,得到语句所关联的表,通过表这个维度来控制的(旁白:那不会产生很多缓存无效问题?表的修改无处不在,能控制到行么?)

4:不能,但可以控制列,嗯,所以我还设计了,可以指定忽略哪些字段的更新不触发缓存失效,也可以指定哪些表不需要缓存(旁白:如果不在SQL层面,在应用层面如何控制缓存失效?)

5:在业务代码控制吧?或者通过AOP统一控制?(旁白:不是我想要的答案)

6:也可以通过数据库来触发缓存失效,MSSQL就有提供缓存依赖(旁白:具体怎么实现呢?)

7:微软的直接调就好了,具体原理是通过触发器把修改的数据写入指定的表,再通过定时器扫表。(旁白:也不是我想要的答案,还有其它答案么?)

8:没有了,你说说(旁白:以前好像讲过,现在想不起来了,说说你那个Aries框架的亮点吧)

半小时已经差不多了,亮点依旧没有被感觉出来

Aries的亮点?我还没恢复洪荒之力再给它写一篇框架的优势篇呢,该怎么介绍?

1:嗯,框架就是传一个表名,就可以自动生成增删改查导入导出,还自定义了一套简单的前端语法,结合后端很容易开发(旁白:不知道你说什么,还是闲聊一下其它的吧.....)

-------------------重新思考,若只有半小时,该怎么介绍框架-----------------

介绍:CYQ.Data的亮点

思考了1天,发现亮点功能太多:元数据缓存、AOP、UI交互、调试、模板引擎、Json工具、DB工具、分布式缓存、批量、内存表、文本数据库、防SQL注入、多数据库转换等。

如果一个一个介绍及聊其技术细节,十年的成果,讲三天三夜也没完!

可如果时间有限,只能讲三个,那我必须对其进行抽象总结。

经过反复的思考,忽略人有我优,只选人无我有的角度,总结了三个核心:

1:自动缓存:抗并发。

对于中小型项目,自动解决抗并发问题,提升网站性能、简化代码,精简架构!

对于大型的高并发大数据量的复杂业务,缓存还是要进一步细化控制命中率。

2:水平扩展:零编码。

A:单种类数据库扩展到多种类数据库。

B:单机缓存扩展到分布式缓存。

C:单数据库扩展到集群数据库(读写分离)。

通通只要简单追加配置即可。

3:数据结构:自由转。

A:Json、Xml、实体类:可互转。

B:泛型、字典、集合,与A类:可互转。

C:数据库表与A类、B类:可互转。

感觉这样抽象总结后,应该半小时就可以介绍完重点了,哈

至于星座十二宫框架:ASP.NET Aries(白羊)、Taurus.MVC(金牛)、还有在重写中的第三星座Gemini.Workflow(双子)。

该怎么抽象其介绍,需要多几个夜晚待我仔细想想

总结:

通过本次思考,意识到两个问题:

1:曾以为好的作品,不需要去告诉用户怎么好,用了自然知道好在哪里。

首先天真的假设了用户首先会用,其次假设了用户会口口相传。

2:曾经以为经验丰富就可以Hold住一切,自由发挥。

对于经常出现的问题或场景,与其每次都随机产生答案,不如深度的思考总结出一种较优的固定答案。

最后,不知道用过框架的小伙伴们是什么感觉?

时间: 2024-10-16 16:08:18

记一次和阿里某总监对话引发的思考:说说你框架的设计思路和优点亮点!的相关文章

阿里云总监课第三期上线啦!

阿里云总监课正式启航,每个人都是未来的技术大牛.阿里云总监系列课重磅上线!聚焦人工智能.弹性计算.数据库等热门领域,首次集齐12位阿里云技术高管,耗时半年精心打磨,从理论到实践倾囊相授,从零开始绘制技术大牛成长路径,限时直播课程免费报名中!阿里云总监课正式启航深入解析数据存储技术原理及发展演进十多年技术研发经验倾囊相授.随着计算机技术与网络技术的迅猛发展,各类新型的数据存储技术不断涌现.从传统到新型分布式数据存储方式的转变,中间经历了怎样的发展历程?基于对大数据的存储.处理.分析及应用需求,十多

蓝的成长记——追逐DBA(19):路上的插曲:触碰“框架”与“软件系统”

原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/47802553 [前言] 自接触oracle至今,愈是深入了解oracle愈是察觉到个人的渺小,时常感受到技术知识可以助推思维方式,一路走来,在汗水中收获着成长的充实,不仅局限于oracle技术,借由此系列文章,分享个人在追逐DBA道路上收获的些许感悟与成长的点滴记录.在浩

【LC3开源峰会网络技术系列之二】阿里云开发智能网卡的动机、功能框架和软转发程序

摘要: 摘要 这篇文章介绍了阿里云开发智能网卡的动机.功能框架和软转发程序以及在软转发过程中发现的问题和优化方法. 主讲人陈静 阿里云高级技术专家 主题Zero-copy Optimization for DPDK vhost-user Receiving 分论坛Network & Orchestration 项目背景 在VPC产品部署中虚拟交换Virtual Switch承担着overlay层和underlay层进行网络协议的加解密encap/decap功能在多租户虚拟机或者容器的主机上也需要

记一次项目中yaml文档引发的惨案 (#yaml文档格式#yaml中'-'的作用)

项目已经在收尾阶段了,然后老大让我去把dockerCompose.yaml文件中公用配置给抽取一下,就是说以后改配置啊什么的就可以直接在抽出来的公用变量里面改就行了, 不用一个模块一个模块地去改(我们这个项目是微服务项目,十多个模块),本来是个很没技术含量的活儿,但是呢,引发了一场切(diao)尸吊的话题,来看下原始的配置 文件: 看下官网的语法: 我抽取的: 然后当然就是报错啦, 再然后就是各种检查顺序啊,检查有没有空格的尝试,然后无果,我就和老大汇报说抽不了,如果能抽我切尸吊俩厘米,然后我老

【转】阿里架构总监一次讲透中台架构,13页PPT精华详解

转:https://blog.csdn.net/u011323949/article/details/99542576 本文整理了阿里几位技术专家,如架构总监 谢纯良,中间件技术专家 玄难等几位大牛,关于中台架构的几次分享内容,将业务中台形态.中台全局架构.业务中台化.中台架构图.中台建设方法论.中台组织架构.企业中台建设实施步骤等总共13页PPT精华的浓缩,供大家学习借鉴. 01 阿里业务中台架构图 基础设施服务,即IAAS层,提供硬件底层支持. 基础服务层,即PAAS层,包括分布式服务框架.

阿里技术总监郭东白:创新之歌该如何唱

今年7月份, 我参加了一个集团组织的名字叫"创意过山车"的培训.这个三天半的培训集中在一个问题上, 就是"创新之歌该如何唱". 这个会之后,我们又有几个月的时间反复思考和实践这个话题. 昨天和前天两天, 集团有组织了"创意过山车"的跟进培训. 大家交换了这一阶段的各自思考. 我们一起做了一个不错的总结. 我个人在整个过程中受到了很大的启发. 所以在这里把在培训中心得, 自己这段时间的思考,和班级同学讨论, 以及这段时间内在集团内外得到的一些启发综

阿里项目总监说:如果你会Python这些,我抢着挖你

为什么python现在这么火又这么好用呢?其实原因就在于Python提供了大量的第三方的库.第三方裤非常方便拿着就可以免费用.那么我们再来谈谈Python中有哪些黄金般的库吧.工欲善其事,必先利其器.学会了学会这些库,你的综合能力将得到大幅度提升,涨薪资迎娶高富美触手可及! 学习Python中有不明白推荐加入交流裙                      号:735934841                      群里有志同道合的小伙伴,互帮互助,                   

如何打造7*24h持续交付通道?阿里高级技术专家的5点思考

云效鼓励师导读:打造7*24小时的持续交付通道是很多技术团队梦寐以求的事情,那么如何才能实现呢?阿里高级技术专家施翔带来了他的思考. 此外,文末我们还为大家首次推出了阿里敏捷教练团队倾心打造的提升研发效能36计课程之"看板+站会"相关内容课程,欢迎报名. 我们对于研发效能的讨论,本质上是提高整个技术生态中的协同效率.如果仅从研发角度出发,技术团队要实现的终极目标是7*24小时的灵活发布窗口,以及更快的业务迭代能力. 7*24小时发布窗口的实现其实并不简单,受限于很多因素.我简单的进行了

DP项目开发随记7-浮空状态下是否卧姿击飞思考

主要遇到了这个问题,记录一下.做了简单的图示 1.A攻击B 2.B被浮空,此时A跳起再次攻击B,并且有强力的推力 3.此时较为正确的结果是,B不再卧姿,变为地面受击姿势,当推力速率小于临界值时,变回卧姿 4.倘若不作处理的话,继续以卧姿平移: