框架轻重之我见

简介:

目前,看到在OSC中,不少人在写框架,比如:JFinal,比如Smart ,比如Hasor等。

可能大家都集中在一个轻量上作文章,这里我想就轻重做自己的一点感想,不一定正确,就当扔个砖出来,大家请放心大胆的抛玉出来,一起讨论。

曾几何时,Spring之横空出世,大家都是欢呼雀跃,为啥呢?因为Spring轻量。为啥轻量呢?看看EJB就知道了。那为什么EJB就重了呢?主要的原因就是大家必须围绕着EJB转,如果离开了EJB,就玩不转了。这个重就体现在,开发模式与EJB绑定之谓重,运行环境与EJB环境绑定之谓重,对EJB深度依赖之谓重。

而Spring当时为什么就轻了呢?当时Spring的采用了无侵入式设计,从而使使用它的人感觉不到它的存在,但是又能享受到它的好处。所以,就如一楼春风吹向广大深受EJB荼毒的程序猿们,于是Spring火了,Spring得到了非常大的应用与推广,甚至可以说占据了统治地位。

鄙人和Smart作者黄勇也通过QQ沟通过,感觉他的思想、理念都非常不错。看了哈库纳的博客,也为他的一些想法所惊叹。

稍有不同的是对轻量级框架的理解稍有不同。在以上作者的理解中,都期望依赖尽量少的框架,框架的容量尽量小。说实际的,这个目标也是本人所追求的。实际上,所有期望做平台的人,也都会这么想,毕竟:完成同样的功能,为什么不用更小的呢?更小的代码一般来说都代表性能更高,维护量更小,里面的遗漏缺陷更少。

但是,在另外一个方面,我也看到了以上三个框架都大量的采用了注解来实现相应的功能。注解与XML各有优缺点,这个道理大家都明白,注解之优势在于浑然于一体,XML之优势在于无侵入性,工具的可处理性更强,等等。

曾经有一个朋友给我留言说:你的Tiny框架依赖了Spring,就不可能是“tiny”的框架了。这在一定程度上也代表了相当多的人的一种观点。

在此我给出我对于轻量级框架的定义:

所谓轻量级框架,就是能帮使用框架者解决尽可能多的问题的同时,尽可能少的对使用者构成侵入性影响。

如果非要给出一个公式的话,那就是:轻量系数=解决的问题/侵入程度

说的通俗一点就是,你给人家解决的问题越多,而对人家造成的干扰越少,那就越轻量。

每个框架构建者可能都要考虑这样一个问题,如果有一天,别人的项目要向你的框架迁移,需要付出多少的迁移成本?如果有一天,使用你框架的项目要向别的框架迁移要付出多少成本?

实际上,这两项的成本不太可能为0的,但是应该尽量的小。如果说,不管怎么样,这两项的工作量都非常大,那你这个框架就不能算是轻量级框架。

再换句话说如果,这两个成本比较高,别人在决策的时候,就会非常小心,除非不得已,不会使用你的框架,或者不会迁移到你的框架上来。

所以,框架轻重之我见,判定的标准与jar包大小无关,与依赖的第三方包的大小多少无关,只与框架能解决的问题的能力及侵入程度相关。

相关文章
|
9月前
|
设计模式 负载均衡 网络协议
【分布式技术专题】「分布式技术架构」实践见真知,手把手教你如何实现一个属于自己的RPC框架(架构技术引导篇)
【分布式技术专题】「分布式技术架构」实践见真知,手把手教你如何实现一个属于自己的RPC框架(架构技术引导篇)
374 0
|
5月前
|
前端开发 Java UED
"揭秘!如何以戏剧性姿态,利用SpringCloud铸就无懈可击的异常处理铁壁,让你的微服务架构稳如泰山,震撼业界!"
【9月更文挑战第8天】随着微服务架构的普及,Spring Cloud作为一套完整的微服务解决方案被广泛应用。在微服务架构中,服务间调用频繁且复杂,异常处理成为保障系统稳定性和用户体验的关键。传统的异常处理方式导致代码冗余,降低系统可维护性和一致性。因此,基于Spring Cloud封装统一的异常处理机制至关重要。这样不仅可以减少代码冗余、提升一致性,还增强了系统的可维护性,并通过统一的错误响应格式优化了用户体验。具体实现包括定义全局异常处理器、自定义业务异常以及在服务中抛出这些异常。这种方式体现了微服务架构中的“服务治理”和“契约先行”原则,有助于构建健壮、可扩展的系统。
90 2
|
4月前
|
前端开发 JavaScript 编译器
前端技术探索:从基础到现代框架的跃迁
前端技术探索:从基础到现代框架的跃迁
38 0
|
自然语言处理 程序员 数据库
|
JavaScript Java 程序员
编程范式之我见
作为开发者想必都知道,编程范式是指编程语言所支持的不同编程风格或编程思想,它们可以影响程序的结构、组织和运行效率。但是,随着编程语言和技术的不断发展,一些编程范式已经过时了,需要改进或被替代。接下来,我将分享个人关于编程范式的看法,探讨不同编程范式的优点和缺点,以及如何选择适合自己的编程范式。
144 1
编程范式之我见
|
运维 Kubernetes 负载均衡
使用K8s之我见
作为开发者,想必都对docker并不陌生,尤其是做后端开发的开发者更为熟悉。但是前段时间有个新闻关于docker马上要停止开源,这对于应用容器领域来说是一个晴天霹雳。但是docker停止开源,想必会让其他应用容器引擎能够有更好的发展。随着容器化的快速发展,关于集群管理、资源整合调度等相关领域的历史问题都得到了很好的解决,而且最为耀眼的就是谷歌开源的Kubernetes,那么接下来就来谈谈关于K8s相关的内容。
186 0
使用K8s之我见
|
资源调度 前端开发 程序员
|
消息中间件 缓存 监控
想做分布式开发,需要懂哪些技术?
私底下问了几位前同事,还有不少同行的大学同学,几乎他们公司都在用目前主流的分布式技术框架做开发。还记得几年前刚毕业那会,.net和php做各种企业管理系统和网站还很吃香,智能机普及安卓和ios客户端开发大势流行更胜一筹
1122 0
|
XML Rust Java
C++之我见:重剑无锋,大巧不工
首先声明,编程语言没有银弹,要懂得因地制宜,随机应变。陷入语言之争是无意义的。但我也认为对于程序员而言,学习和使用哪门语言是有个人偏好的,偏爱哪个自然也无关乎对错。
304 0
C++之我见:重剑无锋,大巧不工
|
Web App开发 JavaScript 前端开发
鱼与熊掌兼得的Sapper框架
Sapper是一个用于构建各种规模的Web应用程序的框架,具有出色的开发体验和灵活的基于文件系统的路由。 与单页应用程序不同,Sapper不会在SEO,渐进式增强或初始加载体验方面妥协 - 但与传统的服务器渲染应用程序不同,导航对于这种类似应用程序的感觉是即时的。
378 0
鱼与熊掌兼得的Sapper框架