随笔分类 - 设计相关
关于“设计”的文章
摘要:Rafy 3.80.4005 添加了新功能:支持只查询部分属性的方式来查询实体。 本文记录对应的设计: 需求 测试用例 设计-API 设计-实现 代码实现 接下来就是实现内部的代码。完成之后,所有单元测试通过。
阅读全文
摘要:最近要分析好几个系统。简单总结一个学习和分析系统的方法,供大家参考。 如何去了解一个庞大的现有软件系统: 先从业务角度出发,了解产品、客户、功能、价值。 业务架构:了解这个产品中都有哪些业务组件,以及相互之间的关系如何。了解这个产品还与外部哪些业务应用有何种关系。 逻辑架构:了解整个系统划分为哪些子
阅读全文
摘要:最近 "Rafy 开源中心" 启动刚一个月,在初始的讨论会上,成员们对面向对象设计、领域驱动设计等概念展开了大量的讨论。 下面我转载一篇文章,这篇文章的详细内容我都还没看完。不过,文章的结构正是我想要的!其结构非常清晰,很好地说明了领域驱动设计相关的起源、重点、模式、经典架构,以及一些后人扩展的新概
阅读全文
摘要:看了《AutoMapper and the Static Class Debate》,记录一下自己的看法。 在进行API设计时,静态类的使用有时会为设计者带来一些烦恼。应该将某个函数暴露为静态函数还是实例方法,这一点常常会造成人们的争论。 大部分人学完设计模式后,都会尽量使用单例模式。但是,静态函数
阅读全文
摘要:本章说明如何使用额外的插件(如客户化插件)对另一插件(如产品插件)进行扩展。 使用场景 在 产品线工程 中,项目的研发分为领域工程和应用工程。这个过程中会需要对领域工程中的内容进行大量的扩展。 分层与扩展点 下图中显示了一个产品插件的逻辑分层,以及各层对应的扩展点。 可扩展的内容 实体属性扩展 可以
阅读全文
摘要:上一篇《企业 SOA 设计(1)–ESB 设计》中,写到我们的 SOA 设计分为两个层面来进行:一个是系统间的 SOA 设计,主要通过 ESB 来完成;另一方面则是单个应用系统内部的 SOA 设计,本篇将会就后者进行详细说明。平台整体结构在产品开发过程中,为了达到业务级别的较大粒度重用,我们需要把纵...
阅读全文
摘要:最近在整理框架的一些 API,觉得很有必要总结一下 API 兼容性的设计。下图是我自己当下的一些总结,慢慢维护:网上搜索了一下,一个多月前,“标点符”已经发布了下面这篇文章,觉得写得非常不错,转载于此:--------------------------------------------原文如下:--------------------------------------------到目前为止,已经负责API接近两年了,这两年中发现现有的API存在的问题越来越多,但很多API一旦发布后就不再能修改了,即时升级和维护是必须的。一旦API发生变化,就可能对相关的调用者带来巨大的代价,用户需要排查
阅读全文
摘要:在软件开发中,从需求工程到代码工程,都离不开 UML 图的绘制。今天简要总结一下我以往使用 UML 图的一些体会。 很多图,都是由原始需求到代码的一种转换,只是转换的程度不一样。在软件开发过程中,不同的阶段需要不同的 UML 图,在选择使用哪些图时,我们必须理解该图能表达一些什么,即它的主要用途,以
阅读全文
摘要:WPF 中命令的 CanExecute 执行逻辑,我一直觉得比较麻烦,画出来就清晰多了,备忘:
阅读全文
摘要:随手理了理 RoutedEvent 相关的几个知识点:
阅读全文
摘要:三个月没写日志了,比较懒散……下半年准备做OEA 的 B/S 版本,比较复杂,需要从架构设计开始认真入手。正好今天到了部门反思的时间,今天先把原来的一些设计经验总结一下,以方便将来回顾。 直入主题,这篇日志主要用于总结一些框架级别的模块设计经验。总述 一个大型的框架,必然由多个较独立的子系统/子模块构成。这些子模块如何交互,之间的接口如何定义,这是框架的架构设计的问题。而今天我主要要总结一下,针对其中的某一个子模块,应该如何进行设计。(例如,在 OEA 中有这些相对独立的模块:分布式框架、实体框架、界面生成框架、命令框架、产品线框架、分布式缓存框架、报表模块……) 我在对一个模块进行设计时,.
阅读全文
摘要:OEA框架经过几次较大的重构后,已经慢慢地变得成熟。 09年末、10年初的时候,我们发布了《OEA1.0》。至今也一年多了,中间我们并没有发布它最新的源码。所以有些朋友问到是不是这个框架已经停止开发了。 那么今天呢,我个人录制了一个简单的视频,来说明一下,OEA目前的使用方法,有兴趣的朋友也可以了解一下这个框架当前的进展。 视频中,我简单地录制了如何做一个小型的《图片管理系统》。我先随便列举几点 OEA 目前做到的功能:快过原型:在理解领域模型的基础上,要搭建整个应用程序,扣除中间的一些讲解占用的时间,完全可以在5分钟内完成。真正做到“快过原型”。基于产品线开发:能让开发项目快速转换为开发产.
阅读全文
摘要:由于之前已经尝试使用过 EF CodeFirst CTP4,所以这次在EF4.1发布的第三天,在 OEA 框架中已经支持使用它来实现数据访问层。而且,我们准备逐渐把原有的较量级ORM框架给替换掉,并且使用EF中的元数据系统来完全充当 OEA 中的 ORM 元数据,以便使用这些映射信息来实现一些更多的
阅读全文
摘要:项目组目前开发的基于OEA框架的GIX4项目,本次功能已经完成得差不多了,本次迭代的目标主要是提升产品的性能。由于GIX4是C/S结构的应用程序,所以决定实现缓存模块来提升高繁数据访问的缓存。 本篇文章主要介绍了OEA框架中的缓存模块设计与一般的缓存有什么不同,如何在OEA框架中实现缓存模块。分为以下几个小节: 一般缓存介绍 OEA缓存目标 概要设计 通用缓存框架的详细设计 OEA中集成Cache的详细设计 小结 一般缓存介绍 网上介绍缓存的文章比较多,在这里我就挑点重点说一下。 缓存是信息系统软件硬件设计中常用的设计方法:从底层硬件的CPU结构中的多级缓存,到软件中操作系统中内存
阅读全文
摘要:以下,我使用一个实例,分享一下用于简化泛型API设计的小技巧,“如何在泛型方法调用时,过滤掉可以隐式推断出的泛型参数”: 原有设计: 系统中原来有这样一个静态的泛型API:使用方法:可以看到,该方法虽然可以从参数中隐式推断出 P 的具体类型,但是无法推断出 T 的具体类型,所以需要显式指定T的类型。由于语法特性的问题,我们不能使用RegisterPropertyUser(e = e.Code)的方法来只传递一个泛型参数给API;导致在使用该方法时,不得不把所有的的泛型参数都显式指定,也就是上面的使用方法。灵光一现: 如何做到不传递第二个泛型参数呢?在N天之后,发现了以下这个方法可以简化
阅读全文
摘要:最近在学ASP.NET MVC,画了一些图,和大伙分享下:Routing 组件图1 独立的ASP.NET Routing组件MVC-Controller图2 Controller结构图3 Controller中可用的ActionResultMVC-View图4 使用的抽象工厂模式的视图引擎图5 视...
阅读全文
摘要:IT 人应具备的一些素质 设计杂谈 WPF框架使用有感: 不熟悉框架的时候,使用框架写出来的上层代码很多都是无用的、杂乱的,这也正反映了底层知识的不足。 随着不断的学习深入,逐渐地对这些上层代码进行重构。每一次精简,都是对底层知识的积累。 忽然有一天,你发现代码被重构得非常简练了,其实也会发现原来基
阅读全文
摘要:此文属转载,原文链接:http://www.cnblogs.com/viter/archive/2010/11/03/1868377.html正文如下:我承认,这个标题很沉重。我有幸使用了一个开源的项目作为小范围内的二次开发应用。这个项目其实是挺大的,开源代码仅是其中一部分,在二次开发中我对源代码作了一些改进,都是一些必要的改进以及发现的BUG;这些BUG在后续的开源参与者一一修复。我想说的是重构...
阅读全文
摘要:前不久学习了《EFCachingProvider》,该扩展包不但可以用于EntityFramework的扩展,所有与数据库连接相关的应用程序都可以使用类似的方案进行扩展。今天做个小的总结,以方便以后回顾。 总体描述 关于EFCachingProvider是什么及如何使用它,请看园子的这篇文章:《 Entity Framework 缓存处理与日志监控 》。我主要说一下内部代码实现的原理机制。 园子文章的图中,画出了EFCachingProvider所扩展的位置: 也就是说,EntityConnection不是直接使用SqlClient中间的SQLConnection,而是通过...
阅读全文
摘要:这次总结一个个人认为的反模式:“绑定子类的泛型层基类”,这个模式在一些著名的框架中也见到过,如果CSLA、BlogEngine。我自己在原来的写的框架中,也用到过。 当然了,个人认为是反模式,各们同仁并不一定这样认为,仁者见仁,智者见智了。不过我好几次都是受尽折磨,所以决定写出来给大家分享下心得。 模式介绍 “层基类”是MF提出的一个基本模式,详见:《Layer Supertype》。这种模式在经典的层次型架构设计的实现中,是极其重要的。我相信,大家一般在做三层架构时,不可能不给出基类的。至少我没见过。:) .NET2.0推出后,带来了新的语言特性:《泛型》。它实现了类型的运行时...
阅读全文