《ARC320基于NetFramework20企业应用框架设计和实现》由会员分享,可在线阅读,更多相关《ARC320基于NetFramework20企业应用框架设计和实现(51页珍藏版)》请在金锄头文库上搜索。
1、ARC320ARC320基于基于NetFramework20NetFramework20企业应用企业应用框架设计和实现框架设计和实现课程内容概述我们试图通过实际的企业应用框架的设计开发我们试图通过实际的企业应用框架的设计开发过程,跟大家分享三件事情。过程,跟大家分享三件事情。第一开发适合自己企业的基础框架,可以极大第一开发适合自己企业的基础框架,可以极大提的高生产率和软件质量;提的高生产率和软件质量;第二讲述我们基于第二讲述我们基于DotNet2.0DotNet2.0开发自己企业应用开发自己企业应用框架的故事;框架的故事;第三探讨企业应用框的架设计和实现。第三探讨企业应用框的架设计和实现。课程
2、内容安排为什么我们需要应用框架为什么我们需要应用框架企业应用框架介绍企业应用框架介绍企业应用框架的设计企业应用框架的设计企业应用框架的实现企业应用框架的实现企业应用框架实施企业应用框架实施为什么我们需要应用框架问题?在我们的项目开发中是否经常遇到这些问题:在我们的项目开发中是否经常遇到这些问题:一些基础的功能在不同的系统中总是重复开发?一些基础的功能在不同的系统中总是重复开发?譬如:数据访问,事务管理,用户认证,权限管譬如:数据访问,事务管理,用户认证,权限管理等等。理等等。不同的程序员总是出现同样的错误?譬如:没有不同的程序员总是出现同样的错误?譬如:没有释放资源,异常没有处理等等。释放资源
3、,异常没有处理等等。功能相似的代码在多个地方出现?功能相似的代码在多个地方出现?每个项目启动都要搭建一套基础框架?每个项目启动都要搭建一套基础框架?在组织级没有技术积累,项目的成败很多时候决在组织级没有技术积累,项目的成败很多时候决定于几个关键成员?定于几个关键成员?问题?(续)没有体系结构的代码随处可见,大家风格各异,没有体系结构的代码随处可见,大家风格各异,维护性差?维护性差?系统的扩展性差,没有成员愿意动以前的代码,系统的扩展性差,没有成员愿意动以前的代码,常常更愿意重新做?常常更愿意重新做?系统的模块、单元职责不清,紧密耦合,很难重系统的模块、单元职责不清,紧密耦合,很难重用?用?如何
4、解决这些问题?引入应用框架是一种行之有效的方法。引入应用框架是一种行之有效的方法。让软件开发工作变为一种荣誉感和成就感企业应用框架介绍框架在建筑行业框架指的是支撑其它物体的结构,或在建筑行业框架指的是支撑其它物体的结构,或者说是建筑物的基础支撑骨架。者说是建筑物的基础支撑骨架。软件的框架是一个软件的支撑结构,是经验的积累,是失败的教训,是一种创新,是一组可重用的设计和代码 为何使用应用框架从已有的框架分析:从已有的框架分析:MVCMVCMFCMFCDotNetDotNetJAVAJAVASpringSpring基于框架开发可以极大提高生产率和软件质量。基于框架开发可以极大提高生产率和软件质量。
5、使用框架可以使我们摆脱前面所述使用框架可以使我们摆脱前面所述“ “问题问题” ”的困的困扰。扰。使用框架还有更多的优点。使用框架还有更多的优点。使用框架的优点(1)模块化模块化把应用分割成多个组件或者模块,分而治之。把应用分割成多个组件或者模块,分而治之。隔离变化的影响范围。隔离变化的影响范围。降低系统的复杂性。降低系统的复杂性。 可重用可重用框架为项目提供可重复使用的,稳定、成熟、可靠的组框架为项目提供可重复使用的,稳定、成熟、可靠的组件。件。极大的提高系统的开发效率。极大的提高系统的开发效率。不仅仅是代码,组件的重用,而且重用了以前的设计、不仅仅是代码,组件的重用,而且重用了以前的设计、经
6、验、教训。经验、教训。站在巨人的肩上。站在巨人的肩上。使用框架的优点(2)简洁性简洁性不是框架简单了,是应用程序开发者的工作变得简单快不是框架简单了,是应用程序开发者的工作变得简单快乐。乐。通过框架封装了基础的处理流程和控制逻辑,开发者可通过框架封装了基础的处理流程和控制逻辑,开发者可以透明的使用,极大的提高开发效率,节约成本。以透明的使用,极大的提高开发效率,节约成本。可维护可维护是我们的应用系统可以是我们的应用系统可以“ “随需而变随需而变” ”的一种能力。的一种能力。由于框架被多个应用所共享,代码已有一份,所以只需由于框架被多个应用所共享,代码已有一份,所以只需修改一次,所有的地方都保持
7、一致。修改一次,所有的地方都保持一致。使用框架,业务规则被抽象出来作为一种扩展机制实现使用框架,业务规则被抽象出来作为一种扩展机制实现业务规则的修改只需要修改配置或者提供一个扩展实现业务规则的修改只需要修改配置或者提供一个扩展实现即可。即可。使用框架的优点(3)可靠性可靠性系统持续正确的运行,不间断的提供服务的一种能力。系统持续正确的运行,不间断的提供服务的一种能力。框架是开发工作长期的积累,是经过实践稳定下来的一框架是开发工作长期的积累,是经过实践稳定下来的一组可重用的设计和代码,它是经过实践检验的,可以提组可重用的设计和代码,它是经过实践检验的,可以提供极高的可靠性。供极高的可靠性。可扩展
8、可扩展框架可以非常方便增加自定义的功能,以适应特定的业框架可以非常方便增加自定义的功能,以适应特定的业务需求。务需求。在框架设计中很关键的是在应用可能发生变化的地方增在框架设计中很关键的是在应用可能发生变化的地方增加系统的扩展性和灵活性。加系统的扩展性和灵活性。使用框架的不足开发成本开发成本框架的设计开发需要大量的人力资源和物质资源。框架的设计开发需要大量的人力资源和物质资源。开发高可用性和高可靠性的框架,需要业务领域的专家开发高可用性和高可靠性的框架,需要业务领域的专家和软件设计开发领域的专家。和软件设计开发领域的专家。框架的开发是一种长线的投资,适用于有多个应用的大框架的开发是一种长线的投
9、资,适用于有多个应用的大中型企业。中型企业。学习成本学习成本要在项目中应用框架,所有的开发者首先要学习框架的要在项目中应用框架,所有的开发者首先要学习框架的使用。框架提供了一种新的编程模型,新的使用。框架提供了一种新的编程模型,新的APIAPI,新的,新的服务和配置项,需要开发者掌握更多的开发技术,才可服务和配置项,需要开发者掌握更多的开发技术,才可以高效的构建应用系统。以高效的构建应用系统。框架的分类业务应用(业务应用(Business ApplicationBusiness Application)实现具体业务应用的框架。实现具体业务应用的框架。应用框架(应用框架(Application
10、FrameworkApplication Framework)应用系统的支撑体系结构,应用系统的半成品。应用系统的支撑体系结构,应用系统的半成品。特定领域框架特定领域框架针对特定领域的业务逻辑构建的专有组件。针对特定领域的业务逻辑构建的专有组件。跨领域的框架跨领域的框架不包括业务领域知识的共享组件。不包括业务领域知识的共享组件。基础框架(基础框架(Foundation FrameworkFoundation Framework)应用框架和业务系统构建的基础,软件开发商提供的开应用框架和业务系统构建的基础,软件开发商提供的开发工具:发工具:DotNetDotNet、JavaJava、MFCMFC
11、,SpringSpring,StrutsStruts。框架的开发过程和其它项目一样,框架开发也包含下面几个阶段:和其它项目一样,框架开发也包含下面几个阶段:分析分析确定框架的目标和范围。确定框架的目标和范围。设计设计确定架构的通用点和扩展点,设计框架的蓝图。确定架构的通用点和扩展点,设计框架的蓝图。实现实现编码实现框架。编码实现框架。稳定稳定开发者验证框架实现,开发开发者验证框架实现,开发DemoDemo项目和文档。项目和文档。企业应用框架的设计框架设计蓝图框架设计解析(1)ZTE Framework ZTE Framework 统一的基础平台,包括系统各个统一的基础平台,包括系统各个层次需要
12、的基础功能。如:数据访问组件,事务层次需要的基础功能。如:数据访问组件,事务管理组件,日志记录组件,异常处理组件等。管理组件,日志记录组件,异常处理组件等。ZTE Business Block ZTE Business Block 各种商务应用模块集合。例各种商务应用模块集合。例如:采购管理模块,合同管理模块,库存管理模如:采购管理模块,合同管理模块,库存管理模块,财务管理模块,计划模块,块,财务管理模块,计划模块,MRPMRP模块,车间管模块,车间管理模块,供应商管理模块,销售管理模块,客户理模块,供应商管理模块,销售管理模块,客户管理模块等等。每个块都是产品化的系统模块管理模块等等。每个块
13、都是产品化的系统模块, , 可以方便的可以方便的Plug-InPlug-In到系统框架,通过到系统框架,通过ZTE ZTE Management Studio Management Studio 配置后,可以满足各种典型配置后,可以满足各种典型的商务应用。的商务应用。框架设计解析(2)ZTE Business FlowZTE Business Flow 工作流工作流组件。支持组件。支持ZTE ZTE Business BlockBusiness Block之间的工作流控制和管理。之间的工作流控制和管理。ZTE Management StudioZTE Management Studio 框架框
14、架产品的管理、配置、产品的管理、配置、监控平台监控平台。ZTE Business ClientZTE Business Client ZTE ZTE业务客户应用模块,用业务客户应用模块,用户可按户可按CSCS模式使用,也可按模式使用,也可按BSBS模式使用。模式使用。Visual Studio.NetVisual Studio.Net 框架框架的开发工具,支持用户使的开发工具,支持用户使用用Visual Studio.NetVisual Studio.Net开发新的模块,注册到开发新的模块,注册到 ZTE ZTE Business BlockBusiness Block中,扩展系统的功能,满足
15、自定中,扩展系统的功能,满足自定义的业务功能扩展。义的业务功能扩展。ZTE Framework设计通用类库(通用类库( CommonCommon )应用层类库(应用层类库( ApplicationApplication )业务层类库(业务层类库( BusinessBusiness )资源层类库(资源层类库( DataAccessDataAccess )工具库(工具库( ToolsTools )通用类库( Common )系统通用的组件集合系统通用的组件集合数据访问组件数据访问组件事务管理组件事务管理组件异常管理组件异常管理组件日志管理组件日志管理组件缓存管理组件缓存管理组件数据加密组件数据加密
16、组件服务通讯组件服务通讯组件自动更新组件自动更新组件应用层类库( Application )系统应用层通用组件集合系统应用层通用组件集合客户端主框架客户端主框架WebWeb主框架主框架WinFormWinForm用户管理用户管理WebFormWebForm用户管理用户管理业务逻辑层类库( Business )系统业务层可重用组件集合系统业务层可重用组件集合系统主框架服务系统主框架服务用户认证服务用户认证服务用户管理服务用户管理服务数据访问层类库( DataAccess )系统资源访问层可重用的组件集合系统资源访问层可重用的组件集合系统主框架数据访问组件系统主框架数据访问组件用户认证数据访问组件
17、用户认证数据访问组件用户管理数据访问组件用户管理数据访问组件工具库( Tools )自动更新配置工具自动更新配置工具文档生成工具(文档生成工具(NDoc2.0NDoc2.0)查询生成工具查询生成工具密钥生成工具密钥生成工具企业应用框架的实现通用类库实现(1)数据访问组件数据访问组件扩展扩展Enterprise LibraryEnterprise Library中的中的DataAccessDataAccess模块模块添加添加SqlMapperSqlMapper功能功能添加添加DbRefCursorDbRefCursor功能功能OracleOracle返回游标。返回游标。事务管理组件事务管理组件基
18、于数据访问组件实现,使用线程静态的上下文类保持基于数据访问组件实现,使用线程静态的上下文类保持用户的数据库链接状态和事务状态。用户的数据库链接状态和事务状态。自动绑定参数。自动绑定参数。通用类库实现(2)异常管理组件异常管理组件扩展扩展Enterprise LibraryEnterprise Library中的中的ExceptionHandlingExceptionHandling模块模块定制了两种类型的异常处理策略定制了两种类型的异常处理策略定义系统基础异常定义系统基础异常处理数据库异常(常见的错误码替换为用户异常)处理数据库异常(常见的错误码替换为用户异常)日志管理组件日志管理组件扩展扩展
19、Enterprise LibraryEnterprise Library中的中的LoggingLogging模块模块定义自己的日志配置,简化了日志写出动作。定义自己的日志配置,简化了日志写出动作。通用类库实现(3)缓存管理组件缓存管理组件直接使用直接使用Enterprise LibraryEnterprise Library中的中的CacheCache模块。模块。数据加密组件数据加密组件直接使用直接使用Enterprise LibraryEnterprise Library中的中的CryptographyCryptography模块。模块。通用类库实现(4)服务通讯组件服务通讯组件包装包装Do
20、tNetDotNet中的中的RemotingRemoting和和WebWeb服务的类库,通过配服务的类库,通过配置实现切换。置实现切换。添加服务基础类,用户上下文信息。添加服务基础类,用户上下文信息。自动更新组件自动更新组件扩展扩展Update Application BlockUpdate Application Block模块。模块。添加按定义的模块,角色下载部分的应用程序。添加按定义的模块,角色下载部分的应用程序。自动更新配置工具。自动更新配置工具。应用层类库实现(1)客户端主框架客户端主框架包括系统主界面,用户登陆窗,基础窗体,版本信息等包括系统主界面,用户登陆窗,基础窗体,版本信息等
21、用户登陆全过程(认证,系统初始化)用户登陆全过程(认证,系统初始化)用户权限透明校验用户权限透明校验用户菜单加载用户菜单加载通过配置文件动态加载业务窗体通过配置文件动态加载业务窗体WebWeb主框架主框架MasterPageMasterPage、基础、基础WebFormWebForm,用户登陆,系统版本信,用户登陆,系统版本信息息用户登陆认证过程。用户登陆认证过程。用户权限数据的加载,系统初始化用户权限数据的加载,系统初始化通过配置动态加载业务应用界面。通过配置动态加载业务应用界面。应用层类库实现(2)WinFormWinForm用户管理用户管理用户创建,修改,分配角色等用户创建,修改,分配角
22、色等UIUI界面实现界面实现角色创建,修改,授权的角色创建,修改,授权的UIUI界面实现界面实现WebFormWebForm用户管理用户管理用户创建,修改,分配角色等用户创建,修改,分配角色等WebWeb窗体实现。窗体实现。角色创建,修改,授权的角色创建,修改,授权的WebWeb页面实现。页面实现。业务层类库实现系统主框架服务系统主框架服务按用户的权限取用户的菜单项,构建用户的菜单树。按用户的权限取用户的菜单项,构建用户的菜单树。取的用户取的用户ProfileProfile数据。数据。用户的自定义的桌面,与我有关。用户的自定义的桌面,与我有关。用户认证服务用户认证服务提供内部认证和外部认证方式
23、。提供内部认证和外部认证方式。认证的方法可扩展。认证的方法可扩展。用户管理服务用户管理服务用户权限模型实现用户权限模型实现RBAC0RBAC0模型实现模型实现RBAC2RBAC2模型实现模型实现数据访问层类库实现系统主框架数据访问组件系统主框架数据访问组件用户权限数据读取,用户菜单数据,角色数据等。用户权限数据读取,用户菜单数据,角色数据等。用户用户ProfileProfile数据,用户桌面数据。数据,用户桌面数据。用户认证数据访问层用户认证数据访问层访问数据库读取用户身份认证的数据。访问数据库读取用户身份认证的数据。用户管理数据访问层用户管理数据访问层用户数据读取,修改。用户数据读取,修改。
24、角色数据读取,修改。角色数据读取,修改。用户角色关联数据读取,修改。用户角色关联数据读取,修改。角色权限数据读取,修改。角色权限数据读取,修改。工具库(1)自动更新配置工具自动更新配置工具使用使用UAB UAB 中的配置工具扩展,生成按模块或者角色的方中的配置工具扩展,生成按模块或者角色的方式下载部指定部分的模块。式下载部指定部分的模块。文档生成工具(文档生成工具(NDoc2.0NDoc2.0)当时没有当时没有NDoc2.0NDoc2.0版本,我们用版本,我们用NDocNDoc提供的源码,升提供的源码,升级到级到DotNet2.0DotNet2.0版本。版本。修改中文修改中文XMLXML处理乱
25、码问题。处理乱码问题。工具库(2)查询生成工具查询生成工具用户使用工具定义界面元素,指定数据库查询过程。用户使用工具定义界面元素,指定数据库查询过程。使用数据库保存用户定义的元数据。使用数据库保存用户定义的元数据。使用解析引擎解析界面的元数据,动态生成界面元素。使用解析引擎解析界面的元数据,动态生成界面元素。绑定数据库过程返回结果集到界面。绑定数据库过程返回结果集到界面。企业应用框架的实施框架给大家的是什么?一个安装包一个安装包基础类库集合。基础类库集合。系统开发、支持的一些工具。系统开发、支持的一些工具。一份开发说明文档一份开发说明文档开发规范。开发规范。用户手册。用户手册。SDKSDK一个
26、一个DemoDemo项目项目一个一个DemoDemo项目提供给开发者学习用。项目提供给开发者学习用。通用类库使用(1)事务管理组件事务管理组件异常管理组件异常管理组件日志管理组件日志管理组件缓存管理组件缓存管理组件数据加密组件数据加密组件服务通讯组件服务通讯组件自动更新组件自动更新组件通用类库使用(2)通用类库使用(3)通用类库使用(4)应用层类库使用客户端主框架。客户端主框架。WebWeb主框架。主框架。WinFormWinForm用户管理。用户管理。WebFormWebForm用户管理。用户管理。“ “即拆即用即拆即用” ”,拿来即可使用。,拿来即可使用。业务层类库使用系统主框架服务。系统
27、主框架服务。用户认证服务。用户认证服务。用户管理服务。用户管理服务。“ “即拆即用即拆即用” ”,拿来即可。,拿来即可。框架实施项目一框架实施项目二参考资料Developing Application Frameworks Developing Application Frameworks in .Netin .Net Xin Chen Xin ChenApplying UML and PatternsApplying UML and Patterns Craig Larman Craig Larman Enterprise Library Enterprise Library填反馈表结束结束