CQRS + DDD + MDP 实现快速应用程序开发
CQRS + DDD + MDP 实现快速应用程序开发
背景
企业需要“快速的”和“高质量的”交付应用,采用传统的三层架构+数据驱动开发可以带来快速交付,但是高质量视乎无从保证,这篇文章我谈谈我准备如何应对这种需求。
思路 CQRS + DDD + MDP(元数据驱动编程)
看图解说
从读和写的角度思考一些问题。
UI层的编码量占据了整体的50%-80%(我自己的经验)之间。
UI层的主要目的是展示,即读取。
UI层团队的开发人数比例不符合他们的编码量(企业应该加大对UI层人才的投资和引进)。
UI层团队的编码水平相对较差(我自己的经验,我见过好的UI人员,月薪2W)。
UI层在代码级别相对容易抽象和重用(企业应用)。
UI是用户关注的重点。
写操作是实现读取的前提,(数据不写进去,无从读取)。
写操作是驱动业务流程的核心所在(业务模型的核心)。
写操作在代码级别不容易重用,在概念级别更加容易重用。
鉴于上边的9条现状,我决定采用如下开发模式。
整体系统采用CQRS架构。
使用MDP开发Q(读取),保证快速。
使用DDD开发C(写端),保证高质量。
简单的示例
效果图
Grid.js
1 Ext.define('Demo.user.view.Grid' , {
2 extend: 'Happy.grid.Panel' ,
3 alias: 'widget.user_grid' ,
4 requires: [
5 'Demo.user.metadata.Manager' ,
6 'Demo.user.view.Form' ,
7 'Happy.grid.action.Refresh' ,
8 'Happy.grid.action.Edit'
9 ],
10
11 title: 'user grid' ,
12
13 initComponent: function () {
14 var me = this ;
15
16 me.initTbar();
17
18 me.callParent(arguments);
19 },
20
21 initTbar: function () {
22 var me = this ;
23
24 me.tbar = [
25 Ext.create('Happy.grid.action.Refresh' ),
26 Ext.create('Happy.grid.action.Edit' , {
27 formContainer: function () {
28 return Ext.widget('window' , {
29 title: 'user form' ,
30 items: {
31 xtype: 'user_form'
32 }
33 });
34 }
35 })
36 ];
37 },
38
39 getMetadataManager: function () {
40 var me = this ;
41
42 return Demo.user.metadata.Manager;
43 }
44 });
Form.js
1 Ext.define('Demo.user.view.Form' , {
2 extend: 'Happy.form.Panel' ,
3 alias: 'widget.user_form' ,
4 requires: [
5 'Demo.user.metadata.Manager' ,
6 'Happy.form.action.Close' ,
7 'Happy.form.action.Save'
8 ],
9
10 500 ,
11
12 initComponent: function () {
13 var me = this ;
14
15 me.initButtons();
16
17 me.callParent(arguments);
18 },
19
20 initButtons: function () {
21 var me = this ;
22
23 me.buttons = [
24 Ext.create('Happy.form.action.Save' ),
25 Ext.create('Happy.form.action.Close' )
26 ];
27 },
28
29 getMetadataManager: function () {
30 var me = this ;
31
32 return Demo.user.metadata.Manager;
33 }
34 });
备注
我相信企业应用中UI层的编程可以趋于声明式,声明式本身就是一种元编程模式。不过有一点是需要注意的,本文说的这些概念,不足以真正实现快速的和高质量的产品开发,因为实现这个目的还依赖很多相关因素,如:团队、文化和组织。
相关文章: 元数据驱动界面,支持三级配置(生成期、运行期和开发期) 。
作者: Leo_wl
出处: http://HdhCmsTestcnblogs测试数据/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息查看更多关于CQRS + DDD + MDP 实现快速应用程序开发的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did45581