我们经常在对相同业务需求和技术需求进行着重复设计和编码,每次重复的做使得开发效率低,质量也得不到保证,OpenExpressApp
就是抽取了信息系统的一些共性,用平台的方式提供大粒度的重用,增长开发效率并提高质量。
在《国内第一个开源的信息系统开发平台openexpressapp 1.0发布
》中我说过OpenExpressApp不会带给大家创新性的技术,而是将现有技术和产品中有价值的部分引入到一起,它要做的是整合别人已经实践的方法来提高我们自身的开发能力,以求快速、高质量的开发信息系统产品。
下面我将通过对现有技术和产品的参考来讲解OpenExpessApp的架构,理解这些参考技术的架构是理解OpenExpressApp架构的最好办法。
为了提高产量和代码质量,我研究过一些产品和方法,而MetaEdit+是建立在DSM方法之上的工具,能够比较好提高产量和质量。
现有技术和和产品
下面我先介绍一下MetaEdit+。
MetaEdit+是全球DSM领域内著名的产品,它能够带来以下好处:
- 缩短上市时间,开发生产力
能够提高5-10倍
- 开发人员可以集中设计和关注业务功能
,而不必用代码去写所有方面的内容
- 由于使用的是经过验证的工具,产品质量显著提高
-
可以完全控制模型和代码生成
,而不像MDA方法模型和代码生成固定,不便于特定领域开发
从上图DSM方法知道模型和生成器是DSM的核心部分,而MetaEdit+的元模型比较好,所以OpenExpressApp的建模工具中模型部分将参考MetaEdit+。(由于现在还没有开始这部分内容,所以在这里就先不介绍了。)
从上图可以看到领域框架也是重要部分,所以接下来我就需要去搜索比较好的框架来参考。在我参考一些框架之后,我觉得DevExpress eXpressApp Framework比较适合,它是.Net下的一个应用框架。
DevExpress eXpressApp Framework是一种快速业务开发平台,它可以通过一个模型同时支持C/S和B/S应用。
它主要提供以下功能:
- 一个架构,OpenExpressApp参考了这个架构。如有图所示。
- XPO,一个ORM
- 对业务应用的UI进行了抽象,形成了一个UI模型,我叫它为AutoUI
,就是通过类库以及模型自动生成界面,后面博文中我会单独解析AutoUI在OpenExpressApp的实现。
- 模块化架构
- 基础类库
- 基于角色的安全实现
- 数据验证
- 本地化支持
- 报表
- 与Visual Studio IDE 继承
OpenExpressApp名称中的ExpressApp词就来自这个应用框架,所以也暗示着OpenExpressApp参考了很多XAF的思想(架构、模块化、AutoUI等)。
XAF的基础类库建立在OO的思想上,所以我还需要一个支持OO的框架。而CSLA可以很好的支持类库开发和应用。
CSLA
是Component-based, Scalable, Logical Architecture的简写,它是由Rockford
Lhotka1999年开始编写的基于.Net的一套N-tier分布式框架。它还在不断更新,现在也支持Silverlight。
它包含如下功能:
- 支持部署为单机、局域网和广域网
- 允许生成面向对象的业务层来封装业务逻辑和数据
- n层撤销功能
- 跟踪违反业务规则以确定某个对象是否有效
- 跟踪某个对象的数据是否发生了改变(是否“变脏”?)
- 支持对于子对象的基于强类型的集合
- 针对UI开发人员的一种简单抽象模型
- 对于Windows Forms、WPF和Web Forms中数据绑定的支持
- 表驱动的安全机制
- 其他各种特性
信息系统应用模块和功能会比较多,所以框架支持模块化就显得比较重要。第一阶段OpenExpressApp将实现基于WPF的应用,而微软模式小
组编写的Composite WPF and Silverlight除了支持WPF外,也可以很好的支持模块化,所以我也使用了Composite
WPF and Silverlight。

XAF框架中不仅有类库,还有报表支持,而报表在信息系统中是不可缺少的,所以我还需要找到一个比较好的报表系统。我几年前研究过一阵子报表,润乾报表是我觉得模型最好的一个。感兴趣的可以参考我以前写的《研究润乾报表的实现
》,在《软件工厂方法(二):软件工厂应用
》中我也介绍过研究的一些方法。
- 类 Excel 报表设计模型
- 非线性报表模型
- 多源填报模型
- 强关联语义模型
以上主要说的是框架主要部分参考内容,框架思路选定后还需要一个集成环境来开发,所以我又去找了几个基于模型驱动开发的软件平台,目前准备参考Mendix
和Novulo



依据以上参考和个人经验,确定了如下一些架构指导思想。这个在《OpenExpressApp架构-国内第一个开源的信息系统开发平台
》也有所介绍
架构总体思想
-
基于单项目开发 - 基于产品线开发
-
以独立技术为中心 - 以业务集成平台为中心
-
代码 - 模型
-
面向数据库开发 - 面向对象
-
不同复用层次: 函数/类 - 模块/引擎 - 应用包/框架
OpenExpressApp架构


以上对OpenExpressApp架构的起源以及参考的现有产品进行了简单介绍,后期我会对我如何使用这些产品或者采用这些产品思想分别进行介绍。如果大家对OpenExpressApp内部比较感兴趣的话,则理解这些已有产品将会有很大帮助。
相关文章链接:
开源信息系统开发平台OpenExpressApp 之 订单示例(Getting Started)
国内第一个开源的信息系统开发平台openexpressapp 1.0发布
OpenExpressApp架构-国内第一个开源的信息系统开发平台
分享到:
相关推荐
开源信息系统开发平台OpenExpressApp是一个专为IT专业人士设计的强大工具,它允许开发者快速构建和部署企业级的信息系统。这个平台的核心理念是开放源代码,鼓励社区参与和共享,旨在降低开发成本,提升开发效率,...
### 开源信息系统开发平台之OpenExpressApp框架 #### 前言与总体介绍 《开源信息系统开发平台之OpenExpressApp框架》是一篇详细介绍OpenExpressApp框架的文档,旨在为开发者提供一套完整且易于使用的开发工具,...
### 开源信息系统开发平台之OpenExpressApp框架 #### 前言与总体介绍 《开源信息系统开发平台之OpenExpressApp框架》是一篇详细介绍OpenExpressApp框架的文档,它旨在为开发者提供一个高效、灵活且可扩展的信息...
【OpenExpressApp:一个开源的信息系统开发平台】 OpenExpressApp是一个开源的开发平台,旨在提高开发效率、确保软件产品的质量,并提供高度定制化的可能性。它借鉴了“偷师学艺”的理念,即从已有的优秀架构中吸取...
OpenExpressApp是一个强大的开源信息系统开发平台,其核心框架OpenExpressApp1.1春节飞虎版是专门为开发者设计的,旨在简化企业级应用的构建过程。这个框架提供了丰富的功能和工具,帮助开发者快速、高效地创建复杂...
OpenExpressApp是一款面向.NET Framework 4的开源信息管理系统开发平台,旨在为开发者提供一个便捷、高效的应用构建工具。它集成了多种开源框架,使得开发者能够快速地开发出符合业务需求的应用程序,降低开发成本,...
"OpenExpressApp" 是一个国内首个开源的信息系统框架,它为开发者提供了构建企业级应用的基础。这个框架的设计目的是为了简化信息系统开发的过程,提高开发效率,同时也允许开发者根据具体需求进行定制化开发。以下...
插件化业务模块积累、客户化二次开发、实施配置平台。 3. 一套代码,可同时生成并运行 C/S、单机版、B/S 三种应用程序。 C/S版本 与 单机版 代码重用率 100%。 C/S版本 与 B/S版本 重用服务端代码(重用服务层以下...