我现在有一些工具类,我应该不应该做自己的框架?
那框架完全是废物吗非也。能产生这种东西就表明它必定有它自己的用途。我们有一个业务这个业务有它自己的模型、规则、流程等等。但是有些不确定的东西会未来才接进来那么我们就非得有一个框架不可比如图形界面就是这样。【1】不过更多时候我发现事情真的有更简单的办法把机制或者功能集合中的一些元素粘合一下这样很简单产生变化的时候重构的工作量也小。而且并不影响重用或者说能够更好的重用因为各部分粒度比较小。关键是真正认识我们要处理的业务的实质是什么。这个实质不是指这个业务对人类来说是什么而是说这个业务在现有的不能抛弃的抽象层上是什么。对我当前的目标记住这是可变化的而言这个抽象层包括计算机本身、操作系统、基础库和通用的协议。要注意的是抽象层在某种意义上并不是真的抽象而是一种具体化。比如你有2G内存而不是无限的图灵机纸带比如硬盘很慢比如软件根据实际情况做出的妥协。看起来四处都是抽象层所以上面强调了“不能抛弃”。过去我很擅长.NET.NET及围绕它产生的一系列环境是我用过的可以说最舒服的编程基础设施。我也对ASP.NET极其熟悉基本上可以弄清楚每一个细节。但我最终学会的一件事就是它不是一个不能抛弃的部分。这说到最后还是它提供的东西带来的便捷和它按照它的作者的意愿具体化的部分带来的限制或麻烦之间的一个权衡。所有的Web业务从根本上就是按照一定的协议和文档格式比如HTTP/HTML又是一个抽象层但我们不能抛弃否则没人能用我们的东西根据参数生成字符串的这么一件事情。决策当HTTP和HTML这些东西设计定稿的时候可以说所有的规划就做完了在这个基础上有足够的约定和共识落在了纸面上最后又变成了机制和策略。只要不破坏他们事情就玩的转剩下的东西就是多加进去的这和图形界面框架的必要性形成了一个对比就必须“给个理由先”。很多人不愿意这样看问题包括最初我沉溺在ASP.NET中的时候。因为这会让我们感觉回到了ASP时代是一种倒退如果跟别人交流看起来好像我们土的掉渣、不求上进。我不知道我们是如何产生这种感情的也许是因为在我们经验比较少的时候我们就会不够自信、不够坚定。【2】有一点也是必须要认识到的不回答这个问题我们不能说服自己大家都在用ASP.NET或XX。这其实也就说明了ASP.NET是给谁做的。更多的我们就必须回答我当下处境和“大家”一样吗这个答案决定了我们要不要动手去做也就说技术选型。既然有这个词就有这个词对应的工作量。对于这个词需要明确的是我们选的是“型”而不是若干个成品。只有比较“型”和成品的符合程度才能得出结论也许是在人家的框架上做一些库就非常舒服了也许是做一个自己的框架更加适合自己的需求。或者不定义任何策略提供一堆机制根据问题现场组装。现在我们决定做一个框架了我们一直在用ASP.NET关键是我们在一个别人画的圈子里玩不出太大的花来。当然我们的目的不是玩花而是肯定先要感受到需求。那么我感受到需求了我觉得ASP.NET束缚了我我怎么办呢执行首先明确一点如果说我们承认框架是有用的我认为框架也应该尽量小或者尽量空大多数情况下应该属于可以以较小代价推翻的东西。而且一个值得注意的要点是不能把功能和它揉在一起做因为这样我们会最大概率的得到Linus所谓“漂亮的坚固堡垒”碰着点真正的相对于假设的变化就会歇菜。一个个人经验是更加重视局部输入输出的明确简单少玩精巧的对象交互使组织部分成为一个灵活的粘合层。具体到要在ASP.NET下做真正的框架我的建议是从Handler和Module上做不要用一切微软制订的更上层的东西WebForm、MVC这对于框架作者来说不是什么有用的东西它们逼你削足适履。我们首先要有自由才能够把需求让我们产生的那个想象的东西按它本来应该有的样子画出来。另一方面是信心我们总会有这样那样的顾虑让人裹足不前。有些人觉得编译器难写、操作系统难写有些人觉得ASP.NET的作者们写的那些东西难写。我能说的是凡是ASP.NET实现了的东西都是没有什么难度的这就使得工作变得可评估。无论从技术细节上来说还是从设计上来说。对于后者恰恰仅仅是ASP.NET的作者们他们自己收集了若干需求然后产生了一些这个东西应该这样那样的想法。我们不应该被这些影响除非我们不确信我们的需求是真的否则我们就不会做出比他们更差的决定。尤其是目标越明确越具体我们的设计就会越有优越性。在这个基础上信心怎么来呢我们不启动老在那里准备永远没有信心。事实上从最初开始比如继承一下Handler的接口打印一行Hello world就能极大的增强信心剩下的事情就是如何把这行字换成更有用的东西这部分如何组织这就是你的框架了。最后当然我们必须有明确的需求而不是受了别人的影响就说我要做一个MVC、我要更好玩转那些Entities我们读到的东西更多的是一种参考有启发就想想没有就暂时扔掉。关键是说我有一个点子它能让我们生活至少是我眼前关注的这块业务的更容易就是这样。最后程序员或开发人员往往也是编程的爱好者。在这种情况下只要闲得没事干自己做一些东西哪怕只是一个原型也总是好的。只是需要记住一点首先要确定我们要解决什么问题放空炮能得到的益处可就要小多了。

相关新闻

从 OC 平滑迁移 Swift 完整方案

从 OC 平滑迁移 Swift 完整方案

前言:重构不是推倒重来,是技术债务的有序偿还 对于大多数运行了5年以上的iOS大型项目来说,几十万行Objective-C代码沉淀了无数业务逻辑、边缘场景和经过亿级用户验证的稳定逻辑。直接全量重写为Swift的项目几乎无一例外都陷入了工期无限延期…

2026/7/5 3:31:35阅读更多 →
做自动售货机运营,需要具备哪些能力?一起来看看~YH

做自动售货机运营,需要具备哪些能力?一起来看看~YH

━━━ 运营自动售货机需要什么能力 很多人觉得运营自动售货机很简单——机器放下去,等着收钱就行。实际上,做好这个生意,需要的能力比你想象的多。 ━━━━━ 能力一:点位判断力 点位选得好不好,直接决定了这台机…

2026/7/5 3:31:35阅读更多 →
Midscene.js多语言自动化:打破语言壁垒的智能UI测试新范式

Midscene.js多语言自动化:打破语言壁垒的智能UI测试新范式

Midscene.js多语言自动化:打破语言壁垒的智能UI测试新范式 【免费下载链接】midscene AI-powered, vision-driven UI automation for every platform. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene 你是否曾因多语言界面测试而头疼&#xff…

2026/7/5 3:26:34阅读更多 →
错题本为什么常常没有效果

错题本为什么常常没有效果

很多孩子都有错题本,但真正因为错题本明显改善学习质量的并不多。原因很简单:很多错题本只是把错题抄了一遍,或者把答案改对了,并没有真正修复错因。孩子今天把这道题改会了,下次换一个条件、换一个问法,还…

2026/7/5 5:56:43阅读更多 →
2026年AI生成论文工具避坑指南:免费试用、查重率、安全性一次说清

2026年AI生成论文工具避坑指南:免费试用、查重率、安全性一次说清

2026年,AI生成论文工具市场迎来了爆发式增长。据不完全统计,目前国内提供"AI论文生成"服务的平台已经超过200家,从几块钱一次到几百元包月,从纯文本生成到全流程辅助,选择多得让人眼花缭乱。但与此同时&…

2026/7/5 5:56:43阅读更多 →
2026最新8款AI编程工具免费深度对比|vibe coding真实开发者权威实测指南

2026最新8款AI编程工具免费深度对比|vibe coding真实开发者权威实测指南

这篇文章是我周末的「工具清理」成果:8款AI编程工具都完整安装实测过,长期日常开发轮换使用,最后稳定留下TRAE作为主力,其余仅在特定场景临时启用。淘汰各类工具的全过程,刚好能直观体现不同产品在vibe coding实战里的…

2026/7/5 5:56:43阅读更多 →
D3KeyHelper终极指南:如何免费实现暗黑3按键自动化与智能辅助

D3KeyHelper终极指南:如何免费实现暗黑3按键自动化与智能辅助

D3KeyHelper终极指南:如何免费实现暗黑3按键自动化与智能辅助 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 还在为暗黑破坏神3中繁琐的…

2026/7/5 5:56:43阅读更多 →
3步集成WPF可视化设计器:告别繁琐XAML编码,提升开发效率300%

3步集成WPF可视化设计器:告别繁琐XAML编码,提升开发效率300%

3步集成WPF可视化设计器:告别繁琐XAML编码,提升开发效率300% 【免费下载链接】WpfDesigner The WPF Designer from SharpDevelop 项目地址: https://gitcode.com/gh_mirrors/wp/WpfDesigner WPF可视化设计器WpfDesigner将复杂的XAML语法转化为直观…

2026/7/5 5:56:43阅读更多 →
054、Real-ESRGAN 实战:基于退化模型的盲超分训练与推理全流程

054、Real-ESRGAN 实战:基于退化模型的盲超分训练与推理全流程

054、Real-ESRGAN 实战:基于退化模型的盲超分训练与推理全流程从一张模糊到怀疑人生的照片说起 上个月帮朋友处理一张老照片,原图是2000年初的数码相机拍的,分辨率低、噪点多、还有明显的JPEG压缩痕迹。我试了EDSR、RCAN这些经典模型&#xf…

2026/7/5 5:51:43阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/5 0:01:08阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/5 0:01:08阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/5 0:01:08阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/5 0:01:08阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/5 1:30:27阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/5 3:48:10阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/5 3:48:09阅读更多 →