本文已挪至   http://www.zhoujingen.cn/blog/1458.html

软件=商业+架构+过程+组织,前一阵子谈论的Scrum更多包含的是过程和组织,这篇主要关注的是架构。

作了开发多年,期间也参考了业界一些著名的软件厂商的产品,现在已经开始实现一个适合信息系统的平台,本篇将从总体上介绍一下OpenExpressApp是什么。OpenExpressApp没有创新性的技术,它更多的是将现有技术和产品中有价值的部分引入到一起。

在讲解现在OpenExpressApp的情况前,我先罗列一些开发的选择,这些就如同敏捷的价值观一样,决定了我开发这个框架的总体思路和方向。

  • 从单项目开发到基于领域工程

  信息系统存在很多共性,而领域工程是解决产品族的一个有效方法,它通过把领域工程和应用工程作为两个独立的开发流程来看待。《软件工厂方法》和软件工厂方法(二):软件工厂应用中已经介绍过了领域工程的一些知识。

  开发架构时,从基于单项目开发到基于领域工程来开发,会考虑到如何快速方便开发,如何做定制化,因为设计的时候就会考虑应用工程时如何通过配置来实现功能。

  • 从代码为中心到模型驱动

基于信息系统的共性抽取,建立一系列的模型(如领域模型、报表、UI等)来表达系统,通过代码生成器生成部分代码或者直接在框架之上运行模型,开发人员更多的关注于编写业务代码,如本篇最下面的编写Command。这样可以从框架级别进行复用。

  • 从面向数据库到面向对象

代码中遍布表和记录的操作,还有业务逻辑遍布在SQL中,在处理简单应用时,这无疑是一种快速方便的方法,但是随着系统的复杂化,这将使得可维护性很差。而面向对象是已经验证的很好解决复杂问题的方法,而系统系统时一旦深入开发就会遇到复杂的业务,所以面向对象的使用将是一种必然。

  • 软件复用层次

大家经常在开发软件时会谈到软件复用,我认为从实现来看复用包含以下三个级别:函数/类、模块/引擎和应用包/框架。在开发过程中,我们应该尽量多考虑大粒度的复用元素,在不同层次都关注复用。

  • 参考

在目前设计和实现的过程中,主要参考了ExpressApp Framework(应用框架),MetaEdit+(元模型工具),使用了CSLA作为分布式业务对象框架,Composite WPF作为UI框架,还使用了其他一些代码(如 LiteORM、Flee等)。这些参考的产品本身就含有比较多的思想和模式,建议没有看过的或者简单了解的可以再去研究一下,这样对框架的设计非常有好处。

  • Roadmap

OpenExpressApp不同于以往独立的开发工具和框架,是为业务分析人员、软件设计和开发人员提供的一种集成的开发平台,它基于业务模型驱动开发 指导思想,提供报表、流程、元数据等基础引擎,具有业务建模、领域建模和应用建模等模型,并提供权限、报表等多个通用应用模块。为了支持软件开发,还提供 基于敏捷思想的软件项目管理工具、快速原型工具和测试支持。

简单地说就是使用DSM方法进行模型驱动开发,作为信息系统的开发平台,支持B/S、C/S、Mobile,支持局域网和广域网。

  • 现状


借鉴ExpressApp的AutoUI和扩展的思想,这里的UI层也是通过模型自动生成。
以下为现在的代码组织。OpenExpressApp为框架代码,GIX4开头的为项目组应用框架时写的类库和扩展Command等代码。目前只支持WPF,还不支持B/S。


现状模型只是实现了通过类的属性来实现,还未实现模型编辑器。例如下面在类上定义属性可以自动在主界面生成导航项,双击后可以打开模块,模块界面也是自动生成。现在界面都只是根据模板生成,还不支持通过设计器来设计界面。

以下是一个通过在代码中WPFListViewCommand继承下来的一个命令,在命令上写上属性内容后,就可以在界面自动生成按钮,这样开发人员可以更多关注业务逻辑,而不用关注界面的变化了。

这是OpenExpressApp的主要内容,后续有时间会更详细的介绍,也会发布一些代码。

更多内容: 开源信息系统开发平台之OpenExpressApp框架.pdf

欢迎转载,转载请注明:转载自周金根 [ http://www.zhoujingen.cn/blog/ ]

OpenExpressApp架构-信息系统开发平台相关推荐

  1. 信息系统开发平台OpenExpressApp - 应用模型ApplicationModel

    下图为OpenExpressApp的系统架构图,其中在应用模型是作为一种元数据贯穿于整个架构,应用模型运行在OpenExpressApp框架之上.应用模型是OEA的核心,理解好应用模型才能更好的使用O ...

  2. 信息系统开发平台OpenExpressApp - 数据权限

    功能权限一般放在一般是放在MVC的controller层,在<信息系统开发平台OpenExpressApp - 功能权限>介绍了OEA基本的功能权限,我们是通过统一配置的.作为数据应用产品 ...

  3. 信息系统开发平台OpenExpressApp - 功能权限

    在<信息系统开发平台OpenExpressApp - 用户权限模块设计>中对RBAC以及在OEA中的涉及进行了简要介绍,上篇<信息系统开发平台OpenExpressApp - 用户管 ...

  4. 信息系统开发平台OpenExpressApp -如何部署OEA应用

    BloodyAngel 把智能部署写的比较清楚了<信息系统开发平台OpenExpressApp - ClickOnce智能部署>,我在这里再进行一些补充. 如果用过OpenExpressA ...

  5. 开源信息系统开发平台之OpenExpressApp框架 1.1 春节飞虎版发布

    自 信息系统开发平台openexpressapp 1.0发布后到现在有4个月了,中间陆续发布了一些内容介绍的blog. OpenExpressApp不会带给大家创新性的技术,而是以务实的态度,将现有技 ...

  6. 信息系统开发平台OpenExpressApp - 支持日志功能

    一般信息系统都有审计功能,现在给OpenExpressApp增加简单的日志功能,主要就是记录用户的一些操作(如登录.打开模块.查看数据.点击按钮等)或者系统操作时的一些信息收集(比如保存错误等).为了 ...

  7. 信息系统开发平台OpenExpressApp - ClickOnce智能部署

    这里讲的是OpenExpressApp的部署方案.主要使用的是ClickOnce作为实施方案来实现:智能部署和智能客户端.不过,这里的使用方式跟以往的不太一样-- 部署概述 OpenExpressAp ...

  8. 信息系统开发平台OpenExpressApp:【OpenTest】 之 如何实现自动化测试框架

    本文更新版本已挪至   http://www.zhoujingen.cn/blog/4549.html ------------------------------- 在OpenExprssApp的R ...

  9. 信息系统开发平台OpenExpressApp:【OpenTest】 之 语法及其使用介绍

    在OpenTest 之 运行环境准备中介绍了运行自动化测试需要做的一些准备工作,本篇将继续给大家介绍OpenTest的脚本语法以及使用方法,通过学习后读者应该能够开始动手编写UI自动化测试脚本了. 关 ...

最新文章

  1. 【SICP练习】110 练习3.23
  2. Github在windows7环境下使用入门
  3. boost::hana::value用法的测试程序
  4. android shareUID
  5. IIC总线的操作时序
  6. oracle大作业_最累人7大专业
  7. 新手安装Ubuntu操作系统
  8. android layout wrap_content,android-如果高度为WRAP_CONTENT,则不显示VideoVi...
  9. 《Python语言程序设计》——1.3 程序设计语言
  10. c语言作业班级管理系统,班级信息管理系统(C语言)
  11. jade安装及基本语法使用
  12. 区块链专利申请量断崖式下降:阿里腾讯跌出十强 网心逆市晋身前四
  13. Pandas处理和转置excel数据
  14. Jersey是一个什么框架,价值在哪里?
  15. (附源码)基于Python音乐分类系统 毕业设计 250858
  16. 关于SOC、态势感知,5种常见的关联分析模型
  17. 只有 assignment、call、increment、decrement 和 new 对象表达式可用作语句
  18. C#串口编程基础入门
  19. 计算机ctrl加什么作用,计算机中快捷键ctrl加什么是返回上一步
  20. Maven2的相关知识[zt]

热门文章

  1. vue多个根节点上的属性继承
  2. jmeter mysql数据库_jmeter连接mysql数据库
  3. php定时备份mysql,Windows服务器中PHP+MySQL设置定时备份
  4. 设备 esp32_低功耗ESP32手持式袖珍显示屏
  5. java lazy_Java AtomicLong lazySet()用法及代码示例
  6. oracle视图用法,oracle视图大全
  7. Android使用Glide框架加载网络图片(解决无报错图片不显示问题)
  8. 多个浏览器同时访问mysql_48- 多线程启动多个不同浏览器
  9. jediscluster的maxAttempts的理解
  10. 关于上篇文章的okhttp中对于onFailure回调的异常捕获