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                                                                                                                                                                                                                                                                                                                   

『练手』001 Laura.SqlForever架构基础(Laura.XtraFramework 的变迁)的更多相关文章

  1. 『练手』005 Laura.SqlForever历史遗留 的 架构思想缺陷

    005 Laura.SqlForever历史遗留 的 架构思想缺陷 我们 比较一下 Laura.WinFramework 和 Laura.XtraFramework 的差异: Laura.WinFra ...

  2. 『练手』004 Laura.SqlForever如何扩展 导航栏 工具栏 右键菜单 插件

    004 Laura.SqlForever如何扩展 导航栏 工具栏 右键菜单 插件 导航栏 插件扩展 比如下图的    窗口 > 关闭所有文档    这个导航栏: 在 任何程序集,任何命名空间,任 ...

  3. 『练手』003 Laura.SqlForever如何扩展 兼容更多数据库引擎

     003 Laura.SqlForever如何扩展 兼容更多数据库引擎 数据库引擎插件 在 界面上的体现 导航窗体 的 工具栏 中的 引擎下拉列表        导航窗体 的 树形控件 中的 引擎主节 ...

  4. 『练手』手写一个独立Json算法 JsonHelper

    背景: > 一直使用 Newtonsoft.Json.dll 也算挺稳定的. > 但这个框架也挺闹心的: > 1.影响编译失败:https://www.cnblogs.com/zih ...

  5. 『练手』通过注册表 获取 VS 和 SQLServer 文件路径

    获取任意 VS 和 SQLServer 的 磁盘安装目录. 背景需求:如果磁盘电脑安装了 VS 或者 SQLServer 则 认定这台计算机 的使用者 是一名 软件研发人员,则让程序 以最高权限运行. ...

  6. 『集群』001 Slithice 服务器集群 概述

    Slithice 服务器集群 概述 Slithice是做什么的 Slithice 是一个 跨平台 的 分布式架构 框架: 旨在简化 分布式开发 的开发难度,节省 开发成本 和 后期维护成本: 并提供 ...

  7. 『TensorFlow Internals』笔记_系统架构

    一.架构概览 TensorFlow 的系统结构以 C API 为界,将整个系统分为前端和后端两个子系统: 前端系统:提供编程模型,负责构造计算图: 后端系统:提供运行时环境,负责执行计算图,后端系统的 ...

  8. 『ACM C++』Virtual Judge | 两道基础题 - The Architect Omar && Malek and Summer Semester

    这几天一直在宿舍跑PY模型,学校的ACM寒假集训我也没去成,来学校的时候已经18号了,突然加进去也就上一天然后排位赛了,没学什么就去打怕是要被虐成渣,今天开学前一天,看到最后有一场大的排位赛,就上去试 ...

  9. 20个Java练手项目,献给嗜学如狂的人

    给大家推荐一条由浅入深的JAVA学习路径,首先完成 Java基础.JDK.JDBC.正则表达式等基础实验,然后进阶到 J2SE 和 SSH 框架学习.最后再通过有趣的练手项目进行巩固. JAVA基础 ...

随机推荐

  1. I/O------字节输出流

    package io.day03; import java.io.FileOutputStream; import java.io.OutputStream; public class day03ou ...

  2. Java 中的纤程库 – Quasar

    来源:鸟窝, colobu.com/2016/07/14/Java-Fiber-Quasar/ 如有好文章投稿,请点击 → 这里了解详情 最近遇到的一个问题大概是微服务架构中经常会遇到的一个问题: 服 ...

  3. 【bzoj1941】【Sdoi2010】Hide and Seek

    ---恢复内容开始--- Description 小猪iPig在PKU刚上完了无聊的猪性代数课,天资聪慧的iPig被这门对他来说无比简单的课弄得非常寂寞,为了消除寂寞感,他决定和他的好朋友giPi(鸡 ...

  4. 在 Less 中写 IE 的css hack

    Less中直接在属性后面加hack写法会编译报错的.那么怎么解决呢? 第一种方式: IE7 以display:inline-block为例: less的hack写法: .box{ display: i ...

  5. mysql5.7连接不上可能的问题(针对新安装的mysql5.7可能出现的问题)

    "ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)" 今天刚刚安装好的mysql5. ...

  6. nginx日志模块及日志定时切割

    一:作用 Ngx_http_log_module:定义日志格式,并且以指定的格式保存. 二:示例配置 log_format compression '$remote_addr - $remote_us ...

  7. Extjs中数据导出到Excel

    1.前端代码(URL+前端传入参数) window.location.href="studnetMaintainAction!exportExcel"               ...

  8. 为啥程序会有bug?

    如果这是第二次看到我的文章,欢迎右侧扫码订阅我哟~ 

  9. Java:接口和抽象类,傻傻分不清楚?

    01. 来看网络上对接口的一番解释: 接口(英文:Interface),在 Java 编程语言中是一个抽象类型,是抽象方法的集合.一个类通过继承接口的方式,从而来继承接口的抽象方法. 兄弟们,你们怎么 ...

  10. 『Lucas定理以及拓展Lucas』

    Lucas定理 在『组合数学基础』中,我们已经提出了\(Lucas\)定理,并给出了\(Lucas\)定理的证明,本文仅将简单回顾,并给出代码. \(Lucas\)定理:当\(p\)为质数时,\(C_ ...