随笔分类 -  设计单元

平时写的代码。 一个一个的小“模块”吧。
摘要:Rafy 3.85.4140 重构了数据门户,更新内容: * 重构 DataPortal 内部结构。为 DomainController 更好地应用远程调用而做准备。 * Rafy.Domain.DataPortal 命名空间,升级为 Rafy.DataPortal,并移动到 Env 文件夹中,其与 阅读全文
posted @ 2021-11-17 08:08 BloodyAngel 阅读(101) 评论(0) 推荐(0) 编辑
摘要:Rafy 3.80.4005 添加了新功能:支持只查询部分属性的方式来查询实体。 本文记录对应的设计: 需求 测试用例 设计-API 设计-实现 代码实现 接下来就是实现内部的代码。完成之后,所有单元测试通过。 阅读全文
posted @ 2021-10-22 20:44 BloodyAngel 阅读(82) 评论(0) 推荐(0) 编辑
摘要:Rafy 快一两年没有大的更新了。并不是这个框架没人维护了。相反,主要是因为自己的项目、以及公司在使用的项目,都已经比较稳定了,也没有新的功能添加。但是最近因为外面使用了 Rafy 的几个公司,找到我,提出了一些明确的需求,期望我做一些相应的升级。所以可能最近几个月,会陆续更新 Rafy 框架。 目 阅读全文
posted @ 2021-10-13 15:29 BloodyAngel 阅读(492) 评论(0) 推荐(1) 编辑
摘要:本文将解释 Rafy 框架中的时间戳插件的场景、使用方法、原理。 ##场景 在开发各类数据库应用系统时,业务领域实体往往需要包含“创建时间”、“最后更新时间”、“创建人”、“最后更新人”等跟踪戳属性。这些属性是领域实体的基本属性,几乎所有的领域业务操作都会使用到这些属性,如:创建业务数据肯定会保存创 阅读全文
posted @ 2018-07-26 18:21 BloodyAngel 阅读(626) 评论(0) 推荐(0) 编辑
摘要:开发者在搭建界面自动化测试框架时,又或者在开发界面自动化控制的机器人时,往往需要对界面进行自动化的程序控制。而现在公司内部使用的杜尔自动化框架,就是一个封装了界面自动化控制逻辑的程序框架。基于该框架,开发者可以轻松、快速的控制各类程序的界面,这些界面可以包含 Windows 界面、浏览器界面。 五年 阅读全文
posted @ 2017-12-23 13:39 BloodyAngel 阅读(652) 评论(0) 推荐(0) 编辑
摘要:本章说明如何使用额外的插件(如客户化插件)对另一插件(如产品插件)进行扩展。 使用场景 在 产品线工程 中,项目的研发分为领域工程和应用工程。这个过程中会需要对领域工程中的内容进行大量的扩展。 分层与扩展点 下图中显示了一个产品插件的逻辑分层,以及各层对应的扩展点。 可扩展的内容 实体属性扩展 可以 阅读全文
posted @ 2016-05-06 14:20 BloodyAngel 阅读(423) 评论(0) 推荐(0) 编辑
摘要:最近两周完成了对公司某一产品的前端重构,本文记录重构的主要思路及相关的设计内容。 公司期望把某一管理类信息系统从项目代码中抽取、重构为一个可复用的产品。该系统的前端是基于 ExtJs 5 进行构造的,后端是基于 Asp.net MVC 提供的 REST 数据接口。同时,希望通过这次重构,不但能将其本 阅读全文
posted @ 2016-02-27 02:53 BloodyAngel 阅读(6457) 评论(4) 推荐(11) 编辑
摘要:Rafy 框架又添新成员:幽灵插件。本文将解释该插件的场景、使用方法、原理。 场景 在开发各类数据库应用系统时,往往需要在删除数据时不是真正地删除数据,而只是把数据标识为‘已删除’状态。这些数据在业务逻辑上是已经完全删除、不可用的数据,但是不能在数据库中真正的把它们删除,而是需要永久保留这些历史数据。即开发人员常说的‘假删除’功能。 这种需求往往是系统级的。往往不是针对某... 阅读全文
posted @ 2015-12-29 18:20 BloodyAngel 阅读(1497) 评论(7) 推荐(0) 编辑
摘要:最近在设计框架时,需要设计一类扩展点,发现不能简单地继承或使用事件来给使用者提供 API。最终使用拦截器模式解决了 API 的设计。 扩展点使用场景 该扩展点的使用场景如下: 不能使用继承;需要在类型的继承体系外(非被扩展类型的子类)对类型进行扩展。 需要能在基本逻辑的执行前、后扩展新的逻辑,甚至可以使用新的逻辑替换基础逻辑。 对于性能敏感。由于该基础逻... 阅读全文
posted @ 2015-11-26 18:36 BloodyAngel 阅读(1860) 评论(2) 推荐(1) 编辑
摘要:上个月写了一个团队中的 BaaS API 的设计规范,给大家分享下: 目录 1. 引言... 4 1.1. 概要... 4 1.2. 参考资料... 4 1.3. 阅读对象... 4 1.4. 术语解释... 4 2. API 设计规范... 5 2.1. 地址格式... 5 2.2. 输入与输出... 6 2.2.1. 通用输入数据... 6 2.2.2. 主... 阅读全文
posted @ 2015-07-26 13:59 BloodyAngel 阅读(1335) 评论(0) 推荐(0) 编辑
摘要:《上篇博客》我写出了我一直期望的 JavaScript 大型程序的开发模式,以及 TS(TypeScript) 的一些优势。博客完成之后,我又花了一天时间试用 TS,用它来重构之前编写的一个 JS 游戏:《Javascript 坦克游戏》。 源码下载 源码我已经上传到 CSDN 了,无需资源分,下载 阅读全文
posted @ 2015-04-05 17:23 BloodyAngel 阅读(4623) 评论(3) 推荐(2) 编辑
摘要:为了提高开发者的易用性,Rafy 领域实体框架在很早开始就已经支持使用 Linq 语法来查询实体了。但是只支持了一些简单的、常用的条件查询,支持的力度很有限。特别是遇到对聚合对象的查询时,就不能再使用 Linq,而只能通过构造底层查询树的接口来完成了。由于开发者的聚合查询的需求越来越多,所以本周我们将这部分进行了增强。 接下来,本文将说明 Rafy 框架原来支持的 Linq 语法,以及最新加... 阅读全文
posted @ 2015-02-03 16:28 BloodyAngel 阅读(1443) 评论(9) 推荐(1) 编辑
摘要:在 Rafy 领域实体框架中,对自关联的实体结构做了特殊的处理,下面对这一功能进行讲解。 场景 在开发数据库应用程序时,往往会遇到自关联表的场景。例如,分类信息、组织架构中的部门、文件夹信息等,都是不限制层级的。如下图中操作系统的文件夹: 在开发这类程序时,往往是设计一张表,表中的一个可空的外键直接 阅读全文
posted @ 2014-11-30 19:02 BloodyAngel 阅读(1558) 评论(7) 推荐(1) 编辑
摘要:一整月都在编写某国企的技术平台建设方案。该企业是一个某500强大型国有企业,他们希望能建设统一的一个软件平台(技术平台+业务平台):各专业部门基于该平台开发相应的专业级插件,并发布到统一的插件平台中,并最终都可集成到一个统一的客户端软件平台中,以达到业务组件能在全公司范围内进行重用。另外,数据方面,... 阅读全文
posted @ 2014-09-30 22:19 BloodyAngel 阅读(1630) 评论(3) 推荐(2) 编辑
摘要:上一篇《企业 SOA 设计(1)–ESB 设计》中,写到我们的 SOA 设计分为两个层面来进行:一个是系统间的 SOA 设计,主要通过 ESB 来完成;另一方面则是单个应用系统内部的 SOA 设计,本篇将会就后者进行详细说明。平台整体结构在产品开发过程中,为了达到业务级别的较大粒度重用,我们需要把纵... 阅读全文
posted @ 2014-07-29 16:54 BloodyAngel 阅读(5032) 评论(3) 推荐(6) 编辑
摘要:最近为公司完成了一个 ESB 的设计。下面简要说明一下具体的设计方案。 企业 SOA 整体方案 在前一篇《SOA、ESB、NServiceBus、云计算 总结》中说到,SOA 是面向服务的架构,其核心思想是把业务进行组件化,而业务组件的能力服务化。 我们的整个 SOA 的设计分为两个层面:一个是系统间的 SOA 设计,另一个则是单个系统内的 SOA 设计。系统间的 SOA 设计,主要是... 阅读全文
posted @ 2014-06-28 23:31 BloodyAngel 阅读(7843) 评论(5) 推荐(8) 编辑
摘要:去年4月,我们为 Rafy 框架添加了领域模型设计器组件。时隔一年,谨以本文,简要说明该领域模型设计器的设计思想。设计目标Rafy 实体框架中以领域驱动设计作为指导思想。所以在开发时,以领域建模为首要任务。为此,我们为它开发了领域模型设计器。开发人员可以在设计器中,设计相应的领域模型,查看现有代码对... 阅读全文
posted @ 2014-04-27 22:32 BloodyAngel 阅读(7688) 评论(4) 推荐(8) 编辑
摘要:前言Rafy 领域实体框架作为一个使用领域驱动设计作为指导思想的开发框架,必然要处理领域实体到数据库表之间的映射,即包含了 ORM 的功能。由于在 09 年最初设计时,ORM 部分的设计并不是最重要的部分,那里 Rafy 的核心是产品线工程、模型驱动开发、界面生成等。所以当时,我们简单地采用了一个开源的小型 ORM 框架:《Lite ORM Library》。这个 ORM 框架可以生成比较简单的 Sql 语句,以处理一般性的情况。随着不断使用,我们也不断对 ORM 的源码做了不少改动,让它在支持简单语句生成的同时,也支持让开发人员直接使用手动编写的 Sql 语句来查询领域实体。但是过程中,一直 阅读全文
posted @ 2013-12-19 10:06 BloodyAngel 阅读(2730) 评论(3) 推荐(3) 编辑
摘要:本文将定义一个 WCF 终结点行为扩展,以在 WCF 中使用更高效的 BinaryFormatter 进行二进制序列化,并实现对是否使用传统二进制序列化功能的可配置。 介绍 实现步骤 使用方法 效果 介绍 在 OEA 框架中,是使用 WCF 作为数据传输框架。但是使用 WCF 内部的二进制序列化,序 阅读全文
posted @ 2013-06-24 18:19 BloodyAngel 阅读(4361) 评论(1) 推荐(2) 编辑