『练手』001 Laura.SqlForever架构基础(Laura.XtraFramework 的变迁)
Laura.XtraFramework 到底是 做什么的?
Laura.XtraFramework 是一个 WinForm 系统的 UI底层:
>实现 大中型WinForm系统的 UI插件布局
>具体包括 文档子窗体,导航栏,工具栏,右键菜单 的 插件嵌入
>解决 大中型WinForm系统开发 中的多种问题:
>多人多次操作 同一个类 时,造成的 代码质量 降低;
>多人多次操作 同一个类 时,引入 新的BUG;
>多人操作 同一个类文件 时,等待他人操作 的 时间浪费;
>通过 插件嵌入 的方式 对软件 进行扩展 —— 在不改变 之前版本的基础上,实现 功能的 新增 或 改写;
>最最重要的是,封装 复杂的代码,简化插件扩展方式,降低开发门槛 —— 让 应届毕业生 都可以 模仿写插件,在 不需要 对内核进行理解的基础上 就能 实现 相对复杂的功能;
Laura.XtraFramework 只能实现这样的 WinForm UI布局:
>打开 VS2010,SqlServer2008客户端 你会发现布局 有一个 共同点:
>上图:红色区域 是 导航栏; 蓝色区域 是 工具栏;粉色区域 是 导航窗;
>上图:更 习惯 是 子窗体 类似 选项卡控件 一样的打开方式(图中没有打开 子窗体 进行标记);
>是的。Laura.XtraFramework 就是 对 这类WinForm UI布局的封装(之后,会有基于 Laura.XtraFramework 的项目截图);
Laura.XtraFramework 升级变迁
BaseUserInterface 和 Laura. WinFramework 基于 .Net Framework 2.0控件库 + 第三方 WeifenLuo.WinFormsUI
BaseXtraUserInterface 和 Laura.XtraFramework 基于 第三方DevExpress控件库
所有变迁 的版本用到的是 现有优秀的第三方布局控件库——而Laura.XtraFramework 更多的偏向于 架构;
Ps. 好吧,我承认:你也肯定 看到了 “2012-05仿进销存Invoicing”—— 这也太抢眼球了吧。
这和 2012-05 所在的 创业时期 有关系。
这个 仿进销存项目 写了 2个月,只写完了底层和所有需要的组件 —— 具体进销存逻辑 是没有实现的。
仿照的是 管家婆进销存系统(虽然 之前有过 金蝶的相关工作,但是 金蝶系统 没能在网上下载到)。
为什么 SqlForever项目 要 一写再写
>各位 也看到了,SqlForever 经历过 三个版本。基本就 伴随着 Laura.XtraFramework 的升级而改写;
>作者 喜欢 跨数据库,之前写过 Laura.Source 跨数据库ORM框架;
>SqlForever 就是一个 跨数据库 的客户端软件(目前支持 五种数据库);
>更重要的是 SqlForever 支持 跨数据库 数据迁移(比如 可以 从 SQLServer 数据库 转移成 MySql数据库:并且 保存主键,自增,和可以兼容的默认值);
>其实,SqlForever 一写再写,确实 是 面试 时的 被逼无奈:
>自己从不带走之前公司的源码,面试时 被问到 之前的项目,我也只能空口白牙 —— 信不信全看 面试官的主观。
>部分面试官 问技术:JQuery,MVC,EF,Ajax 等 这些技术 十有九人 都能说出来 —— 自己说得再好,也只是 90%。
>单凭 Laura.Compute、Laura.Serialization、Laura.WebControl、Laura.Source 这几个 王牌算法,确也辛亏 博客园斑竹 的推荐。但是,算法毕竟是 底层 —— 面试官 看不到算法的 适用前景。
>综上所叙:我的面试 完全 体现不出 优势啊 —— 有木有。
>“2012-05仿进销存Invoicing”很抢眼,但是 面试 不敢拿出来(因为没人相信 22岁的年轻人 敢拿 进销存开刀 —— 拿出来了 反而 更容易落一个 弄虚作假 的印象)
>SqlForever 的 升级过程 由简化繁, 或许能 让面试官更容易接受“2012-05仿进销存Invoicing”的存在。
Laura.XtraFramework 相关项目截图
WebCreate 2.5 代码生成器
SqlForever 2.0 跨数据库客户端(如果不是 窗口标题,你能看出 这是一个 山寨项目 么)
SqlForever 2013 跨数据库客户端(兼容了更多的 数据库)
SqlForever 2014 跨数据库客户端(完全移植于 SqlForever 2013 —— 6个散漫小时即完成 底层的转换 [如果不是 因为 Laura.XtraFramework插件架构思想,这个工作 至少得 60个高压小时 且不保证不产生 BUG])
2012-05 仿进销存 Invoicing
Laura 到底是谁,为什么用这个 名称的 命名空间?
>2005年,电视中 播放过一个 动画片 《查理 和 罗拉》 —— 那时 和亲妹 就 不自觉的 对号入座。
>2008年,给 亲妹 写信,正式 用到了 Charlie 和 Laura。
>2013年,之前的 SVN 版本库 Project 存在很多问题,准备另外 开辟 版本库:
> Project的 主命名空间 Beetle是 大学时期的“屎壳螂”团队 的名称,但是 不想再用;
>不知所爱,处在 情场动荡期,所以 不敢贸然挑选 其她女子的英文名;
>天长地久,最能信赖的 女子 或许就是 亲妹 了 —— 于是,最后选择了 Laura。
>Ps. 最终,找到8年前的 动画片 《Charlie And Lola》—— 即 Laura 是一个历史遗留 的 错误名称。
>Ps. 2013-12-21,开辟 新版本库 Siyu 专门用于 尝试 顶级人工智能算法(一个注定会失败的算法)。
好啦,至此 Laura.XtraFramework 的变迁 已经介绍完成。
之后的 系列文章 将 专门介绍 Laura.SqlForever。
舒小龙
2014-02-11 20:03