实用型系统软件架构的简易设计与实现
- 格式:pdf
- 大小:462.27 KB
- 文档页数:6
软件2012年第33卷第3期 SOFTWARE 国际IT传媒品牌 实用型系统软件架构的简易设计与实现 肇乾张寒冰 (郑州精益达汽车零部件有限公司,河南郑州450016)
摘要:文章阐述了简易实用型Web浏览企业应用网络系统软件框架模型的创建和层次结构,分析了它的主要科技含量,指出 了它的巨大优势和市场潜力,说明了编程实现的重要技术环节,并列举了具体的实践应用。这种软件框架建模与实现:高效,简便, 实用,易行。 关键词:领域驱动设计DDD;对象关系映射ORM;控制反转IoC;依赖注入DI;面向方面编程AOP;工作单元UnitOfWork;实 体框架;窗口通信基础WCF;窗口展现基础WPF 中图分类号:TP36 文献标识码:A DOI:10.3969 ̄.issn.1003・6970.2012.03.026
Simple Design And Realization about Practicable System Software Framework KAI Zhao—qian,ZHANG Han-bing (Newland Co.L惦Beijing,100044)
[Abstract]The paper expoundsthe creation and layer-structure about a simple and practicable net—system-software・framework- module of web—browser-enterprise—application.It analyzes main science—technology content.It point out thegreat advantage and market— potentia1.It illustrates important programing links and lists a detailed example.The module feature:high performance,practicable,simple and easytouse. 【Key words]Domain Drive Design;Object Relational Mapping;Inversion of Control;Dependence Injection;Aspect Oriented Programming;Unit OfWork;Entity Framework;Windows Communication Foundation;Windows Presentation Foundation
0引言 1 总体规划设计思想 一般的Web浏览器企业应用网络软件系统,常常采用业 务数据库与B/S(Brower/Server)三层软件架构的形式,虽 然易于软件设计和编程实现,但是维护和升级起来十分麻烦, 很多时候不得不重新做起,更别提系统扩展了。这种体系, 概念混淆,术语混乱,框架与模式僵化,设计与代码很难理解, SQL(Structured Query Language)运用繁琐,编程工作量大, 软件制作效率低下,对于小中型企业系统还勉强凑合,对于中 大型企业系统就根本行不通了。现代Web浏览器企业网络软 件系统设计,迫切需要高效、实用、架构简单、易于实现、编程自 动化程序高、无关数据库设计的多层次通用性系统软件体系。 可以灵活运用“领域驱动设计DDD(Domain Drive Design)” 的编程思想,结合新出现的现代软件设计工具,达到这些目的, 使项目软件设计集中到具体的“业务行为逻辑实现”和“前端 页面丰富”方面,通过软件自动架构的方式,保证系统软件设计 的极大简化高效和运行的最大稳定可靠,同时最低化维护成本 并最强化系统的可扩展性。 根据领域驱动设计的思想,结合新出现的现代软件设计工 具插件,采用分层架构的做法,围绕具体的业务逻辑,面向对象 进行分析与设计,可以建立如图l所示的以业务领域为中心的 四层基本典型Web浏览器企业应用网络软件系统框架模型。
E1’Framew吖k电叫毫JvM(Jav矗■鲁冀机 图1 简易实用型系统软件体系框架示意图 作者简介:怯肇乾(1969一),男,河南汝州人,电子与信息技术高级工程师,嵌入式系统设计师/培训师,研究方向为软硬件体系及其网络系统软件设 计;张寒冰(1986一),男,河南汝州人,计算机与嵌入式系统应用工程师,研究方向为软硬件体系及其网络系统软件设计。
软件杂志欢迎推荐投稿:http://www.ccomsoft.corn/ ・84・ 软件 (您的文章得到院士的关注) 怯肇乾等:实用型系统软件架构的简易设计与实现 四层基本系统软件层次从上到下依次是:表现层、服务层、 领域模型层和基础框架层。 表现层主要通过用户界面向用户展示必要的数据信息,同 时接收用户的反馈。 服务层提供对“领域模型层”业务的封装,通过网络或接口 向表现层暴露粗粒度的业务服务。 领域模型层主要是展现业务领域的行为逻辑、业务处理状 态以及实现业务的规则,同时也包含了领域对象的状态信息。 该层是整个应用程序的核心部分,它可以包含的概念和内容有: 实体(Entities)、“值”对象(Value Objects)、领域服务(Domam Services)、仓储契约/接口(Repository Contracts/Interfaces)等。 基础结构层为应用程序的数据存取提供服务,它可以是 应用程序本身的持久化机制,也可以是外部系统提供数据访 问的Web Service等。它提供了能被其它各层访问的通用技 术框架,比如异常捕获与处理、日志、认证、授权、验证、跟踪、 监视、缓存等。这些操作通常会横向散布在应用程序的各个 层面,面向方面编程AOP(Aspect Oriented Programming) 关注的就是如何在不影响对象本身处理逻辑的基础上来实现 这些横切的却又必不可少的功能点。实践中通过使用一些流 行的拦截(Interception)框架(如Microsoft Unity、Castle DynamicProxy等)可以方便地实现AOP。 按照领域驱动设计的思想,领域模型建立在服务层中,能 够更好地应对复杂与不断扩展的大型企业软件应用需求,而实 际应用中更多的是繁琐并不特别复杂的业务领域行为逻辑,把 “领域模型”独立一层,即保持了领域驱动设计的复杂应对与业 务扩展的优势,又可以加速软件体系的运行效率。对于中小企 业应用,这四个层次就足够了,对于业务领域的拓展和中大企 业的应用,还可以把“领域模型层”展开为若干个层次,将基本 的四层框架扩展N层框架。整个软件框架模型,能大能小,适 应性更强大了。 还可以在基础结构层采用依赖注入IoC(称“控制反转”)、 工作单元、缓冲操作等技术,在“领域模型层”所在ORM框架 中使用实体框架(Entity Framework)、Hibernate等技术,在 服务层选用窗口通信基础WCF(Windows Communication Foundation)、Spring等技术,在应用层窗口展现基础 WPF(Wind0ws Presentation Foundation)、Struts II等技术, 规范编程,实现软件的大部分自动架构,提高软件的执行效率, 做到即用数据库又与数据库无关。 选用这种Web浏览器企业应用网络系统软件模型,项目 软件设计就可以集中到具体的“业务行为逻辑实现”和“前端 页面丰富”上面了。 2新软件体系科技分析 2.1框架模型的技术应用 架构的新软件体系,采用的主要新技术如下: 2.1.1数据库动态生成技术和ORM框架 对于ASP.NET应用,采用新版的Entity Framework 4.1 实体框架,进行code-first/model—first编程,实现数据库从代 码生成,大大提升开发阶段数据库应对业务的变化能力,对于 J2EE应用,可以采用类似的Hiberate技术。同时采用0RM 框架,隐藏数据访问的细节,使数据库交互变得简单易行,并且 完全不用考虑具体的SQL语句应用,从而实现快速开发,避免 因SQL操作而引发的各种人为问题。 2.1.2一致的网络通信服务应用 对于ASP.NET应用,服务层采用WCF,实现业务功能在 网络传输的能力,为多客户端应用场合提供统一的服务接口, 避免了重复开发,使移动或固定简易终端、个人计算机终端等 能够连网的客户端都可以访问统一的服务地址,实现系统服务 的一致性I对于J2EE应用,可以采用功能强大的Spring。 2.1.3 面向方面鳊程AOP应用 对于ASP.NET应用,采用微软企业库的PolicyInjection 模块来实现AOP。对于J2EE应用,采用集成有AOP的 Spring。AOP和IoC是进行逻辑分离和降低耦合度最主要的 方式。AOP技术,剖解封装的对象内部,将影响多个类的公共 行为封装为一个可重用模块,并将其名为“方面(Aspect)”。它 把软件系统分为两个部分:核心关注点和横切关注点。业务处 理的主要流程是核心关注点,与之关系不大的部分是横切关注 点。横切关注点,经常发生在核心关注点的多处,而各处都基 本相似。通过AOP技术,实现了诸如日志、事务管理、权限控 制等横切关注点的通用逻辑,可以专注于核心关注点,将精力 投入到解决企业的商业逻辑上来。同时这些封装好了的横切关 注点提供的功能可以最大限度地复用于业务逻辑的各个部分, 既不需开发人员作特殊的编码,也不因修改横切关注点的功能 而影响具体的业务功能。 2.1.4依赖注入及其实现 分层架构的设计,层与层之间是松散耦合的,上层不会具 体依赖于下层,只依赖于它的一个接口。这样,上层不能直接 实例化下层中的类,而只持有接口;接口所指变量最终究竟 是哪个类,则由依赖注入机制决定。对于ASP.NET应用, 采用微软的Unity2.0实现依赖注入,它包括控制反转IoC、 DI(Dependence Injection)和拦截技术。对于J2EE应用,可以 采用含有IoC等功能的Spring。 2.1.5前端页面的丰富绚丽 为使前端网页界面丰富绚丽,可以采用通用的JS(Java Script)、JQuery、Ajax、DIV(Division)+CSS(Cascading Style Sheet)、AS(ActionScript)一Flash等技术实现导航、布 局、感觉、视觉、动画、立体及其人机操作的简便和快捷。对于 ASP.NET应用,还可以采用功能强大的RIA(Rich Internet Applications)一WPF或Silverlight;对于J2EE应用,还可 以采用功能强大的struts II。