CQRS:CQRS + DDD + MDP 实现快速应用程序开发
2013-05-27 08:39
218 查看
背景
企业需要“快速的”和“高质量的”交付应用,采用传统的三层架构+数据驱动开发可以带来快速交付,但是高质量视乎无从保证,这篇文章我谈谈我准备如何应对这种需求。思路
CQRS + DDD + MDP(元数据驱动编程)
看图解说
从读和写的角度思考一些问题。
UI层的编码量占据了整体的50%-80%(我自己的经验)之间。UI层的主要目的是展示,即读取。
UI层团队的开发人数比例不符合他们的编码量(企业应该加大对UI层人才的投资和引进)。
UI层团队的编码水平相对较差(我自己的经验,我见过好的UI人员,月薪2W)。
UI层在代码级别相对容易抽象和重用(企业应用)。
UI是用户关注的重点。
写操作是实现读取的前提,(数据不写进去,无从读取)。
写操作是驱动业务流程的核心所在(业务模型的核心)。
写操作在代码级别不容易重用,在概念级别更加容易重用。
鉴于上边的9条现状,我决定采用如下开发模式。
整体系统采用CQRS架构。使用MDP开发Q(读取),保证快速。
使用DDD开发C(写端),保证高质量。
简单的示例
效果图Grid.js
Ext.define('Demo.user.view.Grid', { extend: 'Happy.grid.Panel', alias: 'widget.user_grid', requires: [ 'Demo.user.metadata.Manager', 'Demo.user.view.Form', 'Happy.grid.action.Refresh', 'Happy.grid.action.Edit' ], title: 'user grid', initComponent: function () { var me = this; me.initTbar(); me.callParent(arguments); }, initTbar: function () { var me = this; me.tbar = [ Ext.create('Happy.grid.action.Refresh'), Ext.create('Happy.grid.action.Edit', { formContainer: function () { return Ext.widget('window', { title: 'user form', items: { xtype: 'user_form' } }); } }) ]; }, getMetadataManager: function () { var me = this; return Demo.user.metadata.Manager; } });
Form.js
Ext.define('Demo.user.view.Form', { extend: 'Happy.form.Panel', alias: 'widget.user_form', requires: [ 'Demo.user.metadata.Manager', 'Happy.form.action.Close', 'Happy.form.action.Save' ], width: 500, initComponent: function () { var me = this; me.initButtons(); me.callParent(arguments); }, initButtons: function () { var me = this; me.buttons = [ Ext.create('Happy.form.action.Save'), Ext.create('Happy.form.action.Close') ]; }, getMetadataManager: function () { var me = this; return Demo.user.metadata.Manager; } });
备注
我相信企业应用中UI层的编程可以趋于声明式,声明式本身就是一种元编程模式。不过有一点是需要注意的,本文说的这些概念,不足以真正实现快速的和高质量的产品开发,因为实现这个目的还依赖很多相关因素,如:团队、文化和组织。相关文章:元数据驱动界面,支持三级配置(生成期、运行期和开发期)。
相关文章推荐
- CQRS + DDD + MDP 实现快速应用程序开发
- CQRS + DDD + MDP 实现快速应用程序开发
- 用JSTL实现JSP应用程序快速开发
- 用JSTL实现JSP应用程序快速开发
- 用JSTL实现JSP应用程序快速开发
- 用JSTL实现JSP应用程序快速开发
- ENode框架旨在帮助我们开发ddd,cqrs、eda和事件采购风格的应用程序。(netfocus 汤雪华)
- 在WinForm应用程序中快速实现多语言的处理(2)--开发框架模块的整合
- 用JSTL实现JSP应用程序快速开发
- 用JSTL实现JSP应用程序快速开发
- 用JSTL实现JSP应用程序快速开发
- 用JSTL实现JSP应用程序快速开发
- 基于MINA框架快速开发网络应用程序
- 【Android进阶】使用Andbase快速开发框架实现常见侧滑栏和滑动标签页组合效果
- 初创企业如何实现快速敏捷开发
- 配置实现介绍 快速开发平台
- [置顶] 游戏开发技术总结(经典之作)第三集 让图片动起来----快速切换图形实现动画
- WeText项目:一个基于.NET实现的DDD、CQRS与微服务架构的演示案例
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 访问频率限制功能实现、防止黑客扫描、防止恶意刷屏
- 基于MINA框架快速开发网络应用程序