摘要: 1 iOpenWorksSDK对VS2013-VS2017的支持插件 https://files.cnblogs.com/files/baihmpgy/iOpenWorksSDK.vsix.zip 2 iOpenWorksSDK对VS2010的支持 https://files.cnblogs.com 阅读全文
posted @ 2019-11-08 09:00 道法自然 阅读(1299) 评论(2) 推荐(1) 编辑
摘要: 在上一部分,分层架构的目的是为了将业务规则剥离出来在单独的领域层中进行实现。再回顾一下领域驱动设计的分层中应用层代码的实现。 所有的业务规则都抽象到领域对象,比如“order.pay(amount)”抽象了付款的业务规则。领域对象由状态(对象的字段、属性)和操作(对象的方法)构成,领域对象的操作用于 阅读全文
posted @ 2019-04-24 08:23 道法自然 阅读(26480) 评论(7) 推荐(20) 编辑
摘要: 反映业务规则的代码是整个软件的核心,但是它一般只占很小的一部分,在传统的基于贫血模型的分层软件架构中,业务规则可能分散到各个层、各个代码段,从而使得通过代码来还原业务规则或者保证代码与业务规则一致将变得非常困难。DDD分层架构的核心思想就是将所有业务规则的代码抽取到领域层,保证领域层的编码与领域模型 阅读全文
posted @ 2019-01-12 18:53 道法自然 阅读(12083) 评论(2) 推荐(9) 编辑
摘要: 1 为什么我要研究领域驱动设计 1.1 设计方法各样且代码无法反映设计 我大概从2017年10月份开始研究DDD,当时在一家物流信息化的公司任职架构师,研究DDD的初衷在于为团队寻找一种软件设计的方法论。作为架构师,经常参与设计评审,包括:需求评审、设计评审、代码评审。在评审过程中,有一点感受非常深 阅读全文
posted @ 2019-01-12 12:13 道法自然 阅读(10144) 评论(6) 推荐(10) 编辑
摘要: 本文介绍我开发的一个JavaScript编写的插件化框架——minimajs,完全开源,源码下载地址:https://github.com/lorry2018/minimajs。该框架参考OSGi规范,将该规范定义的三大插件化功能在Node上实现了。MinimaJS三个功能:动态插件化,服务和扩展。 阅读全文
posted @ 2017-10-25 20:52 道法自然 阅读(4451) 评论(0) 推荐(3) 编辑
摘要: 1 背景近来参与一个较大团队的项目实施,项目的金额两千万,人数近百。但是,项目实施后,暴露出以下几个问题:(1)质量不佳,团队成员水平参差不齐,软件外部质量、内部质量一致性差;(2)需求不确定,时间非常紧,代码频繁修改,越来越丑,效率变低。为了保证项目按时按质交付,质量改善刻不容缓。因此,在项目的初... 阅读全文
posted @ 2015-08-24 09:05 道法自然 阅读(9236) 评论(24) 推荐(27) 编辑
摘要: 在这篇文章我分享了如何使用分层与模块化的方法来设计一个分布式服务集群。这个分布式服务集群是基于DynamicProxy、WCF和OSGi.NET插件框架实现的。我将从设计思路、目标和实现三方面来描述。 1 设计思路 首先,我来说明一下设计思路。我们先来看看目前OSGi.NET插件框架的服务。在这里, 阅读全文
posted @ 2014-06-03 12:28 道法自然 阅读(4808) 评论(7) 推荐(14) 编辑
摘要: 本文将用尽可能简单的文字来描述插件框架原理。很多人以为插件化很复杂,所以就一直将这类框架阻挡在门外。实际上,在我们的实践过程中,从框架的使用角度来看,它非常简单,我们团队里面非正规院校毕业的女生也可以来实际使用。如果说插件框架难的地方,我反倒觉得克服人的天然惰性更加困难。我们不能习惯于墨守成规,日复 阅读全文
posted @ 2013-09-06 12:16 道法自然 阅读(33335) 评论(93) 推荐(81) 编辑
摘要: 在这个文章里面我将用一个实际的案例来分享如何来构建一个能够接受3000+个连接的GPRS通讯服务器软件。在这里,我将分享GPRS通讯服务器设计过程中面临的问题,分享通讯协议的设计,分享基于异步事件的设计,分享避免内存泄露的解决方案,分享软件的发布与升级方法,分享通讯协议的单元测试构建等。 1 GPR 阅读全文
posted @ 2013-07-08 08:24 道法自然 阅读(5585) 评论(22) 推荐(19) 编辑
摘要: 1 CLR加载器CLR加载器负责装载和初始化程序集、模块、资源和类型。CLR加载器加载尽可能少的这些资源。不像Win32加载器,CLR加载器不会解析和自动加载子模块或程序集。相反,子模块只有当它们真正需要的时候,才进行加载。这不仅缩短了程序初始化时间,而且减少了运行程序消耗的资源。在CLR,加载一般是基于类型且由JIT触发。当JIT编译器尝试将一个方法从公共中间语言编译成机器码,它需要使用声明的类型的类型定义和该类型的字段定义。此外,JIT编译器还需要使用由任何被JIT正在编译的方法的本地变量或参数使用的类型定义。装载一个类型,意味着装载包含类型定义的程序集和模块。按需装载类型的策略,意味着程 阅读全文
posted @ 2013-02-27 09:25 道法自然 阅读(8230) 评论(5) 推荐(16) 编辑