『练手』005 Laura.SqlForever历史遗留 的 架构思想缺陷
我们 比较一下 Laura.WinFramework 和 Laura.XtraFramework 的差异:
Laura.WinFramework:
导航菜单:
>导航栏+右键菜单(MenuStripItemBase)
>工具栏(ToolStripItemBase)
子窗体(ChildForm)
>系统子窗体(MainChildForm)
>文档子窗体(DocumentForm)
插件覆盖设计
>同名键值 插件,相互覆盖;
>对不完善 插件事件,后期 改写覆盖;
Laura.XtraFramework:
导航菜单:
>导航栏+工具栏(BarItemInfoBase)
>右键菜单(MenuStripItemBase)
>遗留工具栏(ToolStripItemBase)
子窗体(ChildForm)
>取消了 系统子窗体(没时间研究 DevExpress 的 系统子窗体 的 扩展方式)
>文档子窗体(ChildForm)
插件覆盖设计
>同名键值 插件,相互覆盖;
>对不完善 插件事件,后期 改写覆盖;
工具栏,导航栏,右键菜单 遗留的设计问题
遗留下来的 工具栏 存在设计问题:
>新版工具栏 以特性中 TriggerType 的 设计思想 判定 所服务窗体;
>遗留工具栏 以 Must,CanUse 函数 的 设计思想 判断 所服务窗体;
>新版 设计思想 可能 更好一些;
遗留下来的 右键菜单 存在设计问题:
>DevExpress控件库 好像 不支持 右键菜单 —— 于是 右键菜单 沿用了 之前;
>右键菜单 也是 Must,CanUse 函数 的 设计思想 —— 可能 设计思想 也不是 很好;
工具栏最大的设计BUG:
>前后 历次版本,工具栏 以 “主工具栏”,“副工具栏” 两个为主;
>所有 子窗体 全部使用 “副工具栏”;
>而 之前的 Must 函数,即为:扩展的存在,只认逻辑(逻辑不严,则 扩展可能就 依附了错误窗体);
>而 现行 TriggerType 思想,即为:扩展的存在,只认类型,不认逻辑;
>现在 思想的优势 就是 扩展的目标明确:但是 所有子窗体 公用一个 工具栏 —— 这就是一个设计问题;
>最好的设计,或许应该是:
>每个扩展通过TriggerType 针对 特定类型子窗体;
>每个子窗体 针对 各自工具栏;
子窗体 遗留的设计问题
取消了系统子窗体
>对这个 概念 的取消,是最错误的决定;
>系统子窗体 这个 概念,拿 VS2010为例,指的是:“解决方案资源管理器”,“属性”,“工具箱”,“服务器资源管理器” 这些窗体。
>作者 确实 没有时间了,作者 无法抽出 时间 完善设计思想了:
>一个月时间 既要学 Android,WebGL;
>还要 看 经济,婚姻,大政 方面的几本书籍;
>还有一些 记忆经历 没有 画成图画;
>总有面试官说:智商高的人往往不懂欣赏生活美好。
>总有面试官说:智商高的人情商低。
>看吧,为了面试,各种准备工作,把自己折磨得 头都大了。
>最重要的是 除了已经总结 的 爱情,工作,经历,家族 等几十篇文章外,最后的一篇总结文章 还没有写。
最后
>Laura.WinFramework 和 Laura.XtraFramework 设计思想 虽然存在 BUG,但是 功能和插件 的扩展 却已经非常稳定 和 成熟。
>Laura.SqlForever 本身 只不过是 作者 的一个 业余练手项目,作者对其 没有任何 后期战略期望。
>Laura.SqlForever 的存在,只是为了证明 另外一个半成品项目 的存在。
Ps. Laura.SqlForever 和 Laura.XtraFramework 一并开源;
任何 个人或企业 都可以 无偿 剪切、复制、删除、修改 获得的 Laura.SqlForever 的 源码副本;
当然,Laura.DbSchema 这个程序集中,作者 整理了 不少 数据库相关的 函数;
如果 整个 Laura.SqlForever 源码 能给 您带来些许的参考价值,烦请 各位在下载 源码之余,点个 “赞”咯!
舒小龙
2014-02-13 01:10
『练手』005 Laura.SqlForever历史遗留 的 架构思想缺陷的更多相关文章
- 『练手』004 Laura.SqlForever如何扩展 导航栏 工具栏 右键菜单 插件
004 Laura.SqlForever如何扩展 导航栏 工具栏 右键菜单 插件 导航栏 插件扩展 比如下图的 窗口 > 关闭所有文档 这个导航栏: 在 任何程序集,任何命名空间,任 ...
- 『练手』001 Laura.SqlForever架构基础(Laura.XtraFramework 的变迁)
001 Laura.SqlForever架构的基础(Laura.XtraFramework 的变迁之路) Laura.XtraFramework 到底是 做什么的? Laura.XtraFramewo ...
- 『练手』003 Laura.SqlForever如何扩展 兼容更多数据库引擎
003 Laura.SqlForever如何扩展 兼容更多数据库引擎 数据库引擎插件 在 界面上的体现 导航窗体 的 工具栏 中的 引擎下拉列表 导航窗体 的 树形控件 中的 引擎主节 ...
- 『练手』手写一个独立Json算法 JsonHelper
背景: > 一直使用 Newtonsoft.Json.dll 也算挺稳定的. > 但这个框架也挺闹心的: > 1.影响编译失败:https://www.cnblogs.com/zih ...
- 『练手』通过注册表 获取 VS 和 SQLServer 文件路径
获取任意 VS 和 SQLServer 的 磁盘安装目录. 背景需求:如果磁盘电脑安装了 VS 或者 SQLServer 则 认定这台计算机 的使用者 是一名 软件研发人员,则让程序 以最高权限运行. ...
- 『集群』005 Slithice 基于 集群 的 自动容错
Slithice 基于 集群 的 自动容错 Slithice容错概述: Slithice 支持 非集群 的 独立服务端: 支持 基于 中央服务器 的 集群服务端: 支持 基于 自定义配置 的 集群服务 ...
- 『开源』仿SQLServer山寨一个 跨数据库客户端
002 Laura.SqlForever项目简单介绍 相关文章 <『练手』001 Laura.SqlForever架构基础(Laura.XtraFramework 的变迁)> <『练 ...
- [日推荐] 『闲聊助手』人工智能小程序,仅此一款!-极乐商店store.dreawer.com
肾phone的siri有用过吗?小编无聊时就撩一下她!但有个问题就是要是没有肾phone在身边怎么撩???现在有伙伴@wx_Volcano_Li76 开发一款小程序,可以等同于siri,想什么时候撩就 ...
- 关于『进击的Markdown』:第三弹
关于『进击的Markdown』:第三弹 建议缩放90%食用 我与神明画押,赌这弹markdown又双叒叕拖稿了 %%%Markdown!我的CSDN编辑器崩了呜呜呜 各路英雄豪杰,大家好! 我们要开 ...
随机推荐
- js算法初窥04(算法模式01-递归)
终于来到了有点意思的地方--递归,在我最开始学习js的时候,基础课程的内容就包括递归,但是当时并不知道递归的真正意义和用处.我只是知道,哦...递归是自身调用自身,递归要记得有一个停止调用的条件.那时 ...
- 多线程动态规划算法求解TSP(Traveling Salesman Problem) 并附C语言实现例程
TSP问题描述: 旅行商问题,即TSP问题(Travelling Salesman Problem)又译为旅行推销员问题.货郎担问题,是数学领域中著名问题之一.假设有一个旅行商人要拜访n个城市,他必须 ...
- web项目部署到本地tomcat时,运行tomcat的startup.bat一闪而过
在eclipse里面启动tomcat时都是正常的,打成War包后,也无法自动解压,百度了好多方法均尝试失败,然后看到了下方的百度经验,配完环境变量后,tomcat可以正常启动了.如下为步骤: 1. 遇 ...
- BZOJ_4197_[Noi2015]寿司晚宴_状态压缩动态规划
BZOJ_4197_[Noi2015]寿司晚宴_状态压缩动态规划 Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被 ...
- AngularJs 服务 广播
1, angularJs的服务有provider,Service, Factory. Factory是对Service的封装,Service是对Provider的封装. Provide的源码如下: f ...
- java中“==”和equals方法的区别,再加上特殊的String引用类型
==和equals的区别: 1.==是运算符,而equals是基类Object定义的一个方法,并且equals使用==定义的 2.进行比较时,分为 基本数据类型 的比较和 引用数据类型 的比较 ...
- CISP-PTE注册信息安全专业人员渗透测试工程师知识体系大纲
CISP-PTE注册信息安全专业人员渗透测试工程师知识体系大纲 都是图.. 不足之处,欢迎补充
- 异步处理,Event Souring,事务补偿,实现最终一致性和服务的弹性和批处理
这段时间一直学习极客时间皓哥的分布式架构,关于异步处理有一些感想用sketch做了一个图,展示上直观一些,和大家交流下
- koa+mysql+vue+socket.io全栈开发之web api篇
目标是建立一个 web QQ的项目,使用的技术栈如下: 后端是基于koa2 的 web api 服务层,提供curd操作的http接口,登录验证使用的是 json web token,跨域方案使用的是 ...
- python接口自动化(十二)--https请求(SSL)(详解)
简介 本来最新的requests库V2.13.0是支持https请求的,但是一般写脚本时候,我们会用抓包工具fiddler,这时候会 报:requests.exceptions.SSLError: [ ...