浅谈Abp vNext的模块化设计】的更多相关文章

abp的模块化给我留下深刻的印象,模块化不是什么新概念,大家都习以为常,但是为什么要模块化,模块化的意义或者说目的是什么?也许我们思考得并不深入.难得的是abp不仅完美的阐述了模块化概念,而且把模块化落地得十分优雅,并且进行了开源. 模块化内涵? 模块分类 根据粒度大小的不同,模块具有各自的概念,我们从小到大来看一下模块都有哪些内容. 零件--class(最小) 组件--component(较小),软件的最小部署单元,比如jar,dll等 模块--module(更大),具有独立命名空间,可独立开…
今天继续谈模块化的问题.这个想慢慢写成个系列,但是不一定连续写.基本是想起来了,就整理点思路出来.主要还是为以后集中整理做点铺垫. 我们都知道,层次分明的代码最容易维护.你可以轻易的换掉某个层次上的某个模块,而不用担心对整个系统造成很大的副作用. 层次不清的设计中,最糟糕的一种是模块循环依赖.即,分不清两个模块谁在上,谁在下.这个时候,最容易牵扯不清,其结果往往是把两者看做一体去维护算了.这里面还涉及一些初始化次序等繁杂的细节. 其次,就是越层的模块联系.当模块 A 是模块 B 的上层,而模块…
说明 Abp vNext基础篇的文章还差一个单元测试模块就基本上完成了我争取10.1放假之前给大家赶稿出来,后面我们会开始进阶篇,开始拆一些东西,具体要做的事我会单独开一个文章来讲 缘起 本篇文章缘起于dyAbp大佬们在给夏琳儿(简称:小富婆)讲解技术的时候发起,因为多用户设计和用户扩展属性设计在社区已经是一个每天都会有人来问一遍的问题,这里浅谈一下我的理解,源码是根据EasyAbp作者Super写的代码,根据我自己的理解去分析的想法. 扩展属性 先从我们单用户系统来讲,如果我该如何扩展用户属性…
在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所有这些客户端的需求,实现前后端的分离,一种最常见的做法是,编写WebService API来为以上客户端提供数据.近年来越来越多的企业或者网站支持Restfull方式的WebService,比如当当网开源Dubbox,扩展Dubbo服务框架支持REST风格远程调用,这个是Java版本的,在.NET中…
python开发,有时候需要设计单例模式保证操作的唯一性和安全性.理论上python语言底层实现和C/C++不同,python采取的是引用模式,当一个对象是可变对象,对其修改不会更改引用的指向,当一个对象是不可修改对象,对其修改会改变引用指向. 可变对象和不可变对象 不可变对象 该对象所指向的内存中的值不能被改变.当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址. 可变对象 该对象所指向的内存中的值可以被改变.变量(准确…
zygote服务是Android启动和服务APK的核心服务,每个APK都是通过zygote启动,今日阅读它的源码学习到一个不错的设计思路. 首先看看一个APK通过zygote的启动流程: 按照一般的设计思路,既然每个APK都是由单独的dalvik启动和运行,那么直接通过dalvikvm启动main不就完了吗?为啥还要搞得这么长一串流程.其实关键就在于这个Fork.我们看看对于linux启动一个进程的一般流程: 内核创建一个进程数据结构 内核从指定的程序文件读取程序代码并装载到设定的内存地址 内核…
一.为什么要学习领域驱动设计 如果你已经设计出了优雅而万能的软件架构,如果你只是想做一名高效的编码程序员,如果你负责的软件并不复杂,那你确实不需要学习领域驱动设计. 如果用领域驱动设计带来的收获: 能够规范设计过程,使设计过程更加规范. 有了规范的设计就有了核心而稳定是领域内核,当产品有了领域内核,领域知识的更利于传递. 领域驱动设计强调团队与领域专家的合作,能够帮助团队建立良好的沟通. 领域驱动设计的思想.原则与模式有助于提高团队成员面向对象设计能力与架构设计能力. DDD分为三个单词简写,分…
目录 ABP概念简述 ABP在[事务操作]上的简便性 ABP在[关联查询]上的“美”和“坑” ABP的[参数验证]方式 ABP概念简述 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称.它基于DDD的经典“分层架构”思想,开发了便捷的功能模块. ABP在[事务操作]上的简便性 以一个最简单的学生选课为例,包含学生.课程.选课结果三个实体. 在学生选课过程中,当学生选课后,会进行两个操作: 1.增加学生选课记录. 2.增加课程班级人数. 这两个过…
其实这类帖子并没有多少的设计理论,对于策划的提升和帮助也并不大,原因其实在于其适用性太窄,当我要设计XX象棋的时候,它就滚一边去了. 废话不多说切入正题: 游戏中的BUFF/DEBUFF我们见过很多,我见到的玩得比较泛滥的就属WAR3.魔兽世界.九阴真经.仿DOTA类的如LOL. 总体上来说,BUFF/DEBUFF都属于“临时的技能效果”,因此它们可以沿用绝大部分的技能逻辑对角色进行程序处理. 设计一个BUFF/DEBUFF机制,需要考虑这么几个要点(没有需求,就没有设计的方向性指导,没有需求,…
关于这篇文章早在去年年初的时候我就想写一片关于模块化的文章,但是推到现在才来完成也有很多好处,巩固之前对Node的理解.毕竟在我目前的项目中还没有一款项目是用到了Node开发,所以导致我对Node的一些基本知识已经忘记. 一.什么是模块化 现实生活中的模块化例子, 手机组装: 摄像头.话筒.听筒.显示器.电池...... 非模块化开发的问题 : 1.命名冲突,比如全局污染...: 2.文件依赖,团队变大后,维护大量的文件依赖关系非常困难,公共模块的维护.升级很不方便团队变大后,维护大量的文件依赖…