基于46NET的保险系统再工程硕士学位论文.docx_第1页
基于46NET的保险系统再工程硕士学位论文.docx_第2页
基于46NET的保险系统再工程硕士学位论文.docx_第3页
基于46NET的保险系统再工程硕士学位论文.docx_第4页
基于46NET的保险系统再工程硕士学位论文.docx_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

硕士学位论文基于.NET的保险系统再工程摘要当今,软件系统的规模变得越来越大,结构变得越来越复杂,同时现阶段人们对于软件更新换代的频率也越来越高。如何利用现阶段已有的资源又能满足用户不断变换的需求,在这种环境下,本文提出了对原有系统再工程的概念。本系统是一个综合企业级的保单管理系统,用来管理大范围养老保险产品的综合性系统,其功能包括保单的查询、增加、删除,参加保险客户的查询、增加、删除,以及一些具体金融业务的操作的功能等。本文在对原有遗留系统分析的基础上,还对.NET 4.0的特性进行了探讨和研究,最终开发了一个基于.NET 4.0的保险系统再工程。本系统划分为四个层次,分别是表现层、通讯层、业务层和数据层。表现层包括用户界面以及一定量的数据处理;通讯层主要负责客户端和服务器端之间的通讯;业务层主要负责对数据按照一定的商业逻辑进行操作;数据层主要是屏蔽上层业务逻辑与底层数据访问,对数据进行一系列的操作。本系统不仅对以上四个层具有良好的设计,更是成功的实现了以上四层。由于本软件是欧洲各国,尤其是北欧国家的保险业的重要的软件,所以对此进行再工程具有一定的前瞻性和市场价值。而其成功开发不仅对欧洲各国,更是对国内市场有良好的参考价值。关键词:软件系统,.NET 4.0,再工程AbstractToday, the scale of the software system is becoming more and more big, the structure also more and more complex, but people get higher and higher frequency of upgrading the software. How to use the existing resources at this stage, but also can meet the changing needs of users, in this environment, this paper presents the concept of the system re-engineering.According to customers demand, the paper analyzed the original legacy system, and also discussed the features of .NET 4.0, finally, developed the insurance system which based on .NET. The system is divided into four levels, namely, the presentation layer, communication layer, business layer and data layer. Presentation layer including a certain amount of data processing; communication layer is responsible for client side and server sides communication; business layer is mainly responsible for the data according to certain business logic to operate; data layer is shield the upper business logic and the underlying data access, deal with a series of operations on the data. The system not only good design of the four layers, but also successful realization of the above four layer.This system is very important in the European, especially in the Nordic countries. So this re-engineering has certain forward-looking and market value. And its successful development not only Europe, but also on the domestic market have a good reference value.Key Words:Software system, .NET 4.0, Re-engineering 目录摘要iAbstractii目录I图目录1表目录1第1章 绪论11.1 研究背景11.2 研究内容11.3 研究的意义11.4 论文的组织结构11.5 本章小结1第2章 系统相关技术讨论12.1 .NET技术分析12.2 软件再工程概述12.2.1 认识软件再工程12.2.2 软件再工程的目标12.2.3 软件再工程的类型级别12.2.4 实施软件再工程的步骤12.3 本章小结1第3章 系统需求分析13.1 主要的业务流程需求分析13.1.1 Client错误!未定义书签。3.1.2 Policy错误!未定义书签。3.1.3 Premium & Claim错误!未定义书签。3.1.4 Intermediary错误!未定义书签。3.1.5 Offline task错误!未定义书签。3.2 主要的技术需求分析13.2.1 功能等价13.2.2 使用VBUC EE转换工具13.2.3 合理的依赖关系13.2.4 使用 Click Once 部署技术13.2.5 WCF13.2.6 Multi-Threading错误!未定义书签。3.3 本章小结1第4章 系统架构以及关键技术14.1 系统总体方案14.1.1 体系结构概述14.2 系统详细设计14.2.1 表现层设计14.2.2 通讯层设计14.2.3 业务逻辑层14.2.4 数据层设计14.3 本章小结1第5章 系统的实现和结果展示15.1 系统的部署环境15.2 系统转化的流程图15.3 系统的实现15.3.1 Client Search表现层的实现15.3.2 Client Search通讯层的实现15.3.3 Client Search业务逻辑的实现15.3.4 Client Search数据层的实现15.4 系统结果展示15.5 本章小结1第6章 新旧系统的比较分析16.1 技术取代16.1.1 XML解析16.1.2 注册表 VS 配置文件16.1.3 ADO16.1.4 KeepRecorSetFlag16.1.5 多线程16.1.6 出错处理16.1.7 可选参数与引用传值冲突问题16.2 对原有系统的优化16.3 系统达到的效果16.4 良好的开发流程16.5 本章小结1第7章 总结与展望17.1 本文完成的主要研究工作17.2 未来的工作1参考文献1作者简历错误!未定义书签。致谢错误!未定义书签。图目录图 2.1 .NET框架组件1图 2.2 一般计算机软件系统的生存周期1图 3.1 投保流程图1图 3.2 保单的组成部分1图 3.3 交纳保险费流程图1图 4.1 四层架构1图 4.2 窗体类图1图 4.3 ECI通讯图1图 4.4 业务逻辑处理1图 4.5 数据层处理逻辑1图 5.1 转换流程图1图 5.2 ClientSearch 表现层1图 5.3 数据层机构图1图 5.4 系统登录界面1图 5.5 系统登录后主界面1图 5.6 客户详细信息界面1图 5.7 保单相关信息查询界面1图 6.1 VB的配置文件1图 6.2 .NET的配置文件1表目录表格 6.1 Linq to XML in VB and .NET1表格 6.2 开发流程1第1章 绪论1.1 研究背景随着人们对自身和家庭的健康意识和风险意识明显增强,对健康的保险产品的需求也不断增加。传统的保险业行销方式已经难以解决保险销售过程中带来的 沟通、协作等多方面问题。传统的两层体系结构在实际应用中已暴露出一些问题。如:客户机直接(或通过存储过程)访问数据库,不利于安全控制,难以防止黑客的恶意攻击。并且,在现在的一些系统中,由于客户机较多,访问量和数据传输量较大,易形成网络瓶颈,影响数据库的响应速度,降低系统性能。此外, 两层应用体系结构还有维护、扩展方面的问题。为解决相应的瓶颈问题以及出于安全因素等方面的考虑,往往采用中间件组成三层(多层)结构应用体系。本文采用C# 语言对一个VB 6编写的遗留系统进行了再工程,此系统在.NET框架下应用分布式体系结构,根据.NET的工作特点,运用系统工程的思想理论方法,在.NET平台上构建分布式体系模型,提出模型架构,并在系统中实现。1.2 研究内容把原系统从Visual Basic 6.0平台移植到.NET平台并保持其功能基本一致。对原有系统的架构做一些调整,把处理业务流程的代码独立出来,方便以后的修改与扩展。对原系统的一部分处理方式和流程进行优化,提供更加灵活和高效的处理机制。通过本次的工程对于其中涉及的一些技术问题提出合理的解决方案,为以后处理类似工程提供参考。形成处理的流程,对以后处理类似工程能够有参考价值。该保险系统是为保险公司开发使用的。其目的是使金融业务的操作变得简洁高效,同时保证在所有服务区域内的数据同步。该保险系统分为两大部分,前台和后台。前台由网页或者客户端程序实现,任务是接收请求并将业务流程和数据以图形和文字的方式呈现给操作者。操作者可以是服务窗口的操作员、使用特定终端的用户等。在大型的系统中,前台用户的数量可能会以百万计,且终端类型多样,使用的服务类型多样。后台一般包括服务端和数据库。服务端负责接收前台请求,并按一定的业务逻辑进行处理,此外还会定期完成预先安排的任务。服务端是系统中最复杂的部分,需要处理大量的业务逻辑,而且要与前台和数据库进行交互,同时要保证有足够的稳定性和运行效率。一个系统的服务端采用分布式负载均衡的进行部署,以此来保证性能。数据库是用来存储各种数据,其性能取决于硬件配置、并发业务的数量以及服务端对数据库访问的频率和方式。若要提升数据库性能,提升硬件的代价比较昂贵,所以优化服务端的数据结构和算法,以及客户端和服务器端数据的通讯是一个很好的方法。本文针对保险系统以上描述的建设特点和管理现状,主要针对保险系统由原来的面向过程的开发过渡到面向对象开发的技术不同点包括体系架构的改变,客户端和服务器端之间数据的通讯,以及安全性方面的完善等方面的研究。具体内容包括:首先,对原有系统的分析和客户的交流,利用Case工具进行系统的分析和设计。其次,在关键技术参数方面:分布式可扩展的体系架构,Xml通讯(数据的输入和输出、客户端和服务器端的交互、文档的集成等),数据库的独立性,远程文档打印、以及可扩展性等。最后,文本在实现系统的基础上,进行文档总结和保留,为以后的维护打下基础。1.3 研究的意义自1987 年以来,我国的保险市场发生了重大变化,除了全国性的三家保险公司(中国人民保险公司、中国平安保险公司和太平洋公司)之外,又先后成立了区域性寿险公司17家、非寿险公司3家、香港中资公司1家。1992 年和1994 年底,先后批准美国友邦和日本东京海上保险公司在上海设立了分公司。由此可见, 我国的保险市场已初具规模1。随着改革开放的不断深入,国外的一些保险公司纷纷在我国设立分理处,他们看准中国市场准备在中国市场上大显身手,这使得国内:其一,大多数国外保险公司的保险经验比较丰富,管理体制相对健全,保险运行机制相对完善,且在保险实务中,更强调计算机的应用。其二,国外的保险公司更注重精算科学的应用,在保险实务中,更强调以精算学为基础对保险标的进行风险分析,以使自己处于有利的竞争地位。其三,在保险实务中,国外的保险公司比较注重资金的运用(对收取的保费再投资),这样做一方面通过投资可获得收益,并在一定程度上降低保费率;另一方面,保险公司可增强经济实力,降低运营风险。国外保险公司的保费率普遍低于国内保险行业的保费率。鉴于以上分析,为了增强国内保险业在保险市场中的竞争能力,必须采取更有效的措施,对保险行业进行系统化、信息化的管理,增强国内保险业在保险市场中的竞争能力。1.4 论文的组织结构论文章节安排如下:第一章 介绍了论文的研究背景、研究课题的来源、研究内容和研究意义。第二章 介绍了保险系统的相关技术讨论,了解了再工程的定义、目标及执行的步骤。第三章 结合原有VB6.0系统和客户的需求,对保险系统项目的业务需求和技术需求进行了分析和介绍,为第四章系统框架的设计奠定了寄出。第四章 介绍了系统框架的设计,首先给出了本系统四层的设计方案,分别是用户层、数据层、业务层和通讯层的设计,最后给出了本系统的整体技术架构。第五章 是本文的一个重点章节,本章开头首先给出了本系统的部署环境、转换流程,接着按照第四章设计的思路,分别实现了ClientSearch模块的用户层、数据层、业务层和通讯层。最后展示了本系统的成果。第六章 在完成了本系统后,文章给出了新旧系统之间的区别,并给出了新系统的优点。第七章 本章给出本系统完成后的总结并对系统未来的升级进行了展望。1.5 本章小结在本章中,首先介绍了保险系统的研究背景、本系统的研究内容,并介绍了本文的研究意义,最后给出了本文的组织结构。第2章 系统相关技术讨论2.1 .NET技术分析Microsoft公司的.NET框架是全新的跨语言软件开发平台,顺应了当今工业分布式计算、面向组件、企业级应用、软件服务化、以Web为中心势。它包含一个基础类库,该类库中有数百个类,这些类被用来执行文件注册表访问,安全,线程以及利用正则表达式搜索文本等常规任务。它不语言歧视,很公平地支持多种开发语言。.NET框架包含一个公共语言运(CLR),CLR支持独立的代码运行和管理环境,在确保代码安全执行的同还在操作系统之上提供一个抽象的层,这就使.NET框架中的各元素均可在操作系统和设备上运行。在.NET框架中,可以编写Internet上支持的应序,并且这些应用程序接受诸如XML,HTTP和SOAP这样的开放标准。这些使得.NET框架非常强大、可靠并且易于使用。.NET框架是创建、部署和运行Web服务及其他应用程序的一个环境,包括以下四个主要组成部分23:(1)应用程序开发技术(例如:ASP.NET,WINFORM等)(2)数据技术(例如:ADO.NET等)(3)基础类库(Base Class Library-BCL)(4)通用语言运行时(Common Language Runtime-CLR)这四个部分的基础性依次增强,较高的层使用一个或多个较低的层。图 21 .NET框架组件从图2.1中可以简要清晰的了解.NET开发框架的几个主要组成部分4:1)通用语言运行时(Common Language Runtime)。处于这个框架的最层,是这个框架的基础,为多种语言提供了一种统一的运行环境。另外它还供了更多的功能和特性,比如统一和简化的编程模型,用户不必迷惑于Win32I和COM;避免了DLL的版本和更新问题(DLL地狱),从而大大简化了应用序的发布和升级;多种语言之间的交互,例如可以在VB中使用C+编写的类;动的内存和资源管理等等。.NET框架正是基于通用语言运行时,实现了这些能。基于通用语言运行时开发的代码称为托管代码,它的运行步骤大体如下:首先使用一种通用语言运行时支持的编程语言编写源代码,然后使用针对通用语言运行时的编译器生成独立于机器的微软中间语言(Microsoft Intermediate Language),同时产生运行所需的元数据,在代码运行时再使用即时编译器(Just In Time Compiler)生成相应的机器代码来执行。2)基础类库(Base Class Library)。它给开发者提供了各种编程接口。这组基础类库包括了从输入输出到数据访问等各方面,提供了一个统一的面向对象的、层次化的、可扩展的编程接口。它使用一种点号分隔的方法,使得查找和使用类库变得非常容易。例如基础类库中的根,它的命名空间是System,提供数据访问的类库的命名空间是System.Data。在使用时,开发者只需在自己的应用中添加所需的基础类库的引用,然后就可以使用这个类库中的所有方法、属性等等。跟传统的Windows编程相比,使用和扩展基础类库都非常容易,这使得开发者能够高效、快速的构建基于下一代互联网的应用。3)数据库技术(ADO.NET)。几乎所有的应用程序都需要访问从简单的文本文件到大型的关系型数据库等各种不同类型的数据。在Microsoft.NET中访问数据库的技术是ADO.NET。ADO.NET提供了一组用来连接到数据库,运行命令,返回记录集的类库,与从前的ADO(ActiveX Data Object)相比,ADO.NET的革新主要体现在如下几个方面:首先,ADO.NET提供了对XML的强大支持,这也是ADO.NET的一个主要设计目标。在ADO.NET中通过XMLReader,XMLWriter,XMLNavigator,XMLDocument等可以方便的创建和使用XML数据,并且支持W3C的XSLT、DTD、XDR等标准。ADO.NET对XML的支持也为XML成为Microsoft.NET中数据交换的统一格式提供了基础。其次,ADO.NET引入了DataSet的概念,这是一个驻于内存的数据缓冲区,提供了数据的关系型视图。不管数据是来源于一个关系型的数据库,还是来源于一个XML文档,我们都可以用一个统一的编程模型来创建和使用它。它替代了原有的Recordset的对象,提高了程序的交互性和扩展性,尤其适合分布式的应用场合。另外,ADO.NET中还引入了一些新的对象,例如DataReader可以用来高效率的读取数据,产生一个只读的记录集等等。简而言之,ADO.NET通过一系列新的对象和编程模型,并与XML紧密结合,使得在Microsoft.NET中的数据操作十分方便和高效。2.2 软件再工程概述2.2.1 认识软件再工程软件再工程是为了以新的形式重构已存在的软件系统而进行的检测、分析、更替,以及随后对新形式的实现。这个过程包括了逆向工程、文档重构、结构重建、相关转换以及正向工程等。它的目的是理解已存在的软件系统,然后对它重新设计实现以期增强它的功能,提高它的性能,或降低它的实现难度,客观上达到维持软件的现有功能并为今后新功能的加入做好准备的目标。软件再工程是对成品软件系统进行再次开发,软件维护期的适应性维护、完善性维护和预防性维护都属于再工程范畴。与从无到有的软件开发不同,再工程面对的不是原始需求,而是已经存在的软件系统,是从已经存在的软件起步开发出新软件的过程。一般计算机软件系统的生存周期如图2.2所示56。图 22 一般计算机软件系统的生存周期重构(Reconstruction):在不改变原有系统功能的前提下,重新安排程序的逻辑流程和业务流程,使程序的复杂性降低或可读性提高。但是它无法从根本上改变软件的功能,只是对流程进行优化,不涉及到系统的数据部分,重构后的系统的程序可读性更好。逆向工程(Reverse Engineering):对已有软件系统进行分析,从源代码出发,逐层抽象,明确系统的组成部分及其相互间的关系,最后得到与具体实现无关的高层抽象结果。逆向工程不只是为了维护,也要研究原系统的算法和设计思想。目前主要的方法是反编译、反汇编以及对源程序的分析理解。正向工程(Forward Engineering):从前期工作生成的与具体实现无关的抽象描述开始,一步一步地细化,直至生成可替换旧软件系统的新系统及相关的详细文档再工程(Reengineering):是对已有软件系统进行分析,并将其重构为新形式代码的开发过程。即:再工程=逆向工程+重构+正向工程。2.2.2 软件再工程的目标软件再工程的对象是正在使用中的系统,这些系统一般缺乏良好的设计结构和编码风格,因此使软件的修改费时费力。同时,相关的公司或组织由于长久地依赖它们,不能将它们完全抛弃。而软件再工程就是对这些系统进行分析研究,利用好的软件开发方法,重新构造一个新的目标系统,这样的系统将保持原系统需要的功能并易于维护。软件再工程通过对原系统用新的设计思想的重新实现和对原有文档的更新可以进行功能追加和增强,同时通过再工程和再设计,其模块划分会更合理,接口定义更清晰,文档更齐全,从而更易维护,也提高了系统的可靠性。软件再工程将一些优秀软件移植到新的硬件平台、操作系统或语言环境,从而使它们能够利用新环境的新特性,更好地发挥作用。具体来说可以从以下四个方面进行概括78:1) 为追加、增强功能做准备。软件再工程通过对原来系统设计思想的重新 实现,并且对原来文档的更新,方便以后系统的维护和更新。2) 提高可维护性。通过不断维护复杂的系统,经过软件的再工程和再设计,从而模块更加的合理,接口定义更加的清晰,文档也更齐全,更容易维护。3) 软件的移植性更加的完善。软件再工程将一些优秀软件移植到新的硬件平台、操作系统或者语言环境,从而使它们能够利用新环境的新特性,更好地发货作用。4) 提高可靠性。软件的维护修改容易引起连锁反映、系统的不稳定性和可靠性的降低,软件再工程很好的解决了这一系列的问题。2.2.3 软件再工程的类型级别根据用户对现有软件改进要求的不同,再工程活动一般可分为系统级、数据级和源程序级三个层次910。1) 系统级。是对现有应用系统的功能规格说明进行再设计。这需要全面恢复系统的原有功能规格说明和设计说明,在此基础上根据应用要求修改设计,重新产生可执行程序。2) 数据级。从现有文件数据库的物理定义中产生概念与逻辑设计文档,并将这些文档转类成适合新要求的数据结构,有可能的话,同时产生访问这些文件7 数据库的程序。3) 程序级。从现有软件的源程序或经过反编译工具产生的源程序&中提取出设计说明,经修改设计,再进行相反的转换。这样做可避免源程序与设计说明的不一致性, 同时还降低了详细设计的要求。源程序级的再工程活动可看作是再编码(Recoding)工作,可以将结构化不良的语言(如 Basic语言) 转化为结构化语言(如Pascal语言), 将3GL过程性语言转换为4GL的 非过程性语言。2.2.4 实施软件再工程的步骤1) 确定项目范围。这包括确定软件再工程的目标,如项目有多大工作量牵涉到哪些部门,数据结构要不要重新定义,如何协调组织,采取什么样的实施流程等。另外,还应制订项目的责权分配及工作计划。2) 搜集原始材料和工具。如程序设计语言材料、旧系统源码、数据库结构定义、相关文档、Case工具等,这些材料最好架中起来,与数据仓库放在一起,以便分析使用。3) 考证原始材料。很多原始材料有这样那样的错误或者不完整,再工程人员要通过查访、分析现有的资料、测试系统输入与输出等活动来掌握实际情况,并作详尽记录,然后将它们纳入数据字典或者仓库。4) 分析程序源代码与数据。这一阶段是软件再工程的核心阶段,应尽量利用有再工程功能的Case工具来做分析工作以提高效率,但也要防止过分依赖工具,不作详尽的人工检查,人工检查必须是最后一道把关口,无论如何优秀的工具也不能代替人,软件工程师的辛勤工作仍然是软件再工程活动成功的关键。5) 产生技术文档。经过再工程后的系统一定要有完整无误的各项文件。原来有错误的文件要加以修正,原来有错误的文件要加以修正,原来缺少的材料要加以补全,对新系统制定相应的新的维护规则,并要严格遵照执行。2.3 本章小结本章首先介绍了.NET 框架,Microsoft .NET 框架是用于构建、部署和运行 XML Web services 以及所有应用程序类型(桌面应用程序和基于Web 的应用程序)的.NET平台编程模型。它提供了高效且基于标准的环境,可将现有开发人员的投入与新一代应用程序和服务相集成,同时为部署和操作 Internet 范围的应用程序提供了灵活的解决能力。软件再工程是对现有软件系统进行验证、评价,重新设计构造成为一个新的形式并加以实现,使其满足新的需要或适合于新的运行环境的软件工程活动。通常可以用这样的等式来理解软件再工程即:再工程=逆向工程+重构+正向工程11。第3章 系统需求分析3.1 主要的业务流程需求分析3.1.1 客户实体Client 是整个保险系统的核心,Client可以是一个人,也可以是一个单位。它包括被保人的姓名、性别、地址等信息。在进行保险相关的操作时,必须在数据库中存着这么一个Client,如果是一个新的Client,那么通过新建,把这个Client相关的资料输入。只有这个Client的资料齐全了,才能进行其他业务的操作,比如:查询、删除、增加其他新业务等。录入投保人和被保人身份证信息。当客户不能提供身份证号时(客户因为年龄、职业问题没有身份证),则在身份证域录入8位出生日期和一位性别(l男2女),另外要在姓名栏录入客户姓名。保险方根据客户姓名产生伪身份证号。根据身份证信息首先是到数据库查询,如果是新客户再到保险端查询,返回客户的基本信息,无身份证号的返回伪身份证号。录入保险业务的相关信息,进行有效性检查和电脑核保。按项目种类实行一票否决制即检查到错误时就返回错误号和原因,直到所有项目都通过时才会保存信息返回成功标志。可选输入项(XX代码)在只有一种选择的情况下可不输入,保险后台会根据险种属性返回相应结果,或成功返回唯一选择,或柜台上打印出保险相关信息,客户认真检查无误后签字确认金额缴纳保费一起交给柜员。如发现有误时要根据保险合同和收据上的印刷编号输入到相应栏做缴费到信息后会核对单证的合法性并与原保存的信息进行核对,核对证、生成保单号、返回打印信息。对帐前如客户发现有误时,银行方只能做撤销交易将原交易客户发现有误只能通过变更处理来修改原有信息。投保流程如图3.1所示。图 31 投保流程图3.1.2 保单实体Policy指这个保险系统相关的保单信息,它是保险公司和保单持有人之间合法的合同,是一个实体,它有一系列的子实体组成,包括产品、中介、受益人等如图3.2所示。图 32 保单的组成部分其中Policy client是保单相关的实体包括Owner保单的持有者,Life assured被保险人,Trustee保险受托人,Principal主要的保单委托人,Addressee保单相关文档信息的收件人,Beneficiary是买保险的收益人,Fund的是各类基金,Risk是风险系数。3.1.3 保险费实体保险费实体包括Premium实体和Claim实体。但是有所区别,Premium是客户给保险公司的保险金。而Claim是保险公司给客户的养老金。一般情况下客户的交纳的保险金可以按如下流程:输入身份证号或保单号后必须要求客户在密码键盘上输入相应的查询密码。当不输入密码或密码错误时,只返回与缴费相关的信息。在显示保单相关信息中会有保单的应缴期数及总金额,客户可缴期数应小于等于此期数。预期缴费是指大于应缴期数的缴费情况。如同时有续缴和预缴时可作为一个业务处理,但收据必须分开。柜员在输入缴费期数并确认时应把收据流水号同时录入,保险方会对收据的合法性进行检查。打印可作为单独的业务过程处理,在对帐前能重复打印,但对帐后如客户发现有误只能通过变更来修改原有信息。客户相关的费用交纳流程如图3.3所示。 图 33 交纳保险费流程图3.1.4 中介实体Intermediary顾名思义是中介的意思。中介分为:broker和 intermediary两种,任何保险都是通过中介买的,它是销售商,通过销售手段,它赚钱中介费,同时中介还可以帮你理财规划,推销你买基金、股票等产品。3.1.5 离线任务Offline task是保险系统的不可缺少的一部分,它的主要功能是当一些数据:比如基金的汇率折算,不能同步和系统更新时,便会启动offline task,由它在一个规定的时间(通常对系统影响最小的情况下)统一进行,从而完成整个系统数据的同步,具体的实现以及技术将在第4章中说明。3.2 主要的技术需求分析由于这是一个再工程的项目,原来有VB 6.0的版本,所以在再工程中需要兼顾一些技术需求。3.2.1 功能等价整个系统将被转移到.NET平台上,并且要功能等价。一些组件/模块在转换过程中可能需要被再调整,一些界面的外观和形式,以及一些行为需要根据.NRT的特性进行相应的调整。3.2.2 使用VBUC EE转换工具为自动帮助解决一些转换过程中的问题,用VBUC EE这个转换工具。3.2.3 合理的依赖关系所以历史遗留的依赖关系包括第3方控件在新系统中将被移除,在新系统中,只用到.NET中标准的控件、组件。3.2.4 使用 Click Once 部署技术使用该技术可创建自行更新的基于Windows 的应用程序,这些应用程序可以通过最低程度的用户交互来安装和运行。3.2.5 WCF原来VB系统在客户端和服务器端之间的通讯是采用COM+的方式进行,因为COM组件由以Win32动态连接库(DLL)或可执行文件(EXE)形式发布的可执行代码所组成。遵循COM规范编写出来的组件将能够满足对组件架构的所有要求。COM组件可以给应用程序、操作系统以及其他组件提供服务;自定义的COM组件可以在运行时刻同其他组件连接起来构成某个应用程序;COM组件可以动态的插入或卸出应用。但是现在微软把ASMX .NET Remoting,Enterprise Service,WSE,MSMQ等技术的综合到WCF上。(注:这种说法仅仅是从功能的角度。事实上WCF远非简单的并集这样简单,它是真正面向服务的产品,它已经改变了通常的开发模式。)因此,利用WCF,就可以解决包括安全、可信赖、互操作、跨平台通信等等需求12。使用WCF替代原来VB中COM+技术,实现系统中客户端和服务器之间更好的通讯。基于XML这种标准格式的通信架构,使得客户端与服务器端在技术实现上拥有更多的选择余地,同时也可以更好的利用分布式的特性。3.2.6 多线程原有的VB6只能使用单线程的编程模式,这使得原有系统在性能和用户体验上都不够完善,比如对数据库的访问效率低以及用户界面失去响应。因此在数据层以及客户端引入多线程以及异步编程模型能使新系统获得性能以及用户体验的提升。3.3 本章小结本章研究了整个项目的业务需求和技术需求,业务需求主要是介绍了保险系统领域用到的关键业务名称,包括被保人(Client)、保单(Policy)、保险金(Premium)等。技术需求主要介绍了在把原来VB6.0转化成.NET版本时所要遵守的技术要点。通过对保险系统业务需求和技术需求的分析为以后的开发,无论是开发流程还是技术架构的搭建都提供了必要的保证。同时业务需求的了解有助于在开发过程中对某个具体的业务有较好的了解,减少开发过程中的盲目性。技术需求的了解使我们在转换过程中能游刃有余,不至于遇到困难时焦头烂额。.第4章 系统架构以及关键技术在了解了相关的技术知识和保险系统需求后,本章正式开始设计系统。本系统在经典的三层框架(表现层、业务层、数据层)的基础上,加了一层通讯层,充分利用了.NET 4.0中WCF的魅力,更好的实现了客户端和服务器端的数据通讯。4.1 系统总体方案4.1.1 体系结构概述主要框架基于C/S体系结构。将系统分为四层,由上及下分别为:表现层、通讯层、业务逻辑层、数据访问层,如图4.1所示。Life AdministratorTask managementReport ManagerClient side common componentsClient side transport componentsServer side transport componentsClient ServicePolicy ServiceTask ServiceClient ComponentPolicy ComponentTasks.Data Access LayerLife data sourceRule data sourceTask data source.Life DatabaseRule DatabaseTask Database图 41 四层架构表现层:表现层包括用户界面以及一定量的数据处理。用户界面主要是响应用户请求以及展现服务器端返回的数据。而数据处理包括对用户数据进行验证,组装用户请求数据并传给通讯层已经通过通讯层获取服务器端返回的数据。通讯层:主要负责客户端和服务器端之间的通讯。业务逻辑层:主要负责对数据按照一定的商业逻辑进行操作。也就是说把一些数据层的操作进行组合。在该系统中,业务层主要是Business(业务逻辑)层。Business层主要负责与业务相关的逻辑处理,如数据合法性的检验及检索或者更新表的处理。它实际上是链接了页面层和通讯层,它向页面层提供了一些函数接口,函数内部实现了需要具体处理的业务,但Business层本身并不直接操作后台表,它是通过调用通讯层的接口函数来实现的。也就是说,页面层在做业务处理时只需要调用Business层的函数,而Business层提供了业务逻辑的具体实现,即需要做哪些处理,这些处理又需要对哪些表进行哪些操作,最终是通讯层提供了对各个表进行查询和更新的操作。数据访问层:是屏蔽上层业务逻辑与底层数据访问,使业务与数据操作无关。整个系统工作的流程是:客服端向服务器端发送请求时通过ECI端,并把自己的请求分为2部分,分别是消息头和消息主题。在消息头中指定在服务器端要调用的接口,ECI根据消息头中的内容在服务器端创建相应的组件。而除此之外,ECI可以根据多台服务器累计的响应时间来进行负载均衡(LoadBalance)1415。ECI在收到客户端的请求后会作出一些响应(Response)并以不同的类型返回(比如以XML的形式返回结果,出错的时会Fault Message的形式返回。服务器端在接到ECI端发来的消息时一般以Access的形式来存取数据(Access主要用来构建SQL语句),而当构建新的数据时,则通过xxxSource的形式进行插入、删除、更新操作。DateAccess工程对数据进行封装或者以多线程的访问等方式和数据库进行交互。而对于一些复杂的逻辑则采用xxxComp专门的组件进行相应的操作。而LDAP根据专门的LDAP Source组件进行用户操作管理。服务器端最终将操作的结果通过ECI端返回客户端完成一次完整的操作。结合这些原则理论,我们开始详细介绍系统的设计与实现,由于业务逻辑层主要是对商业逻辑的实现,这与一般系统差别并不大,所以以下介绍并不包含对业务逻辑层的详细描述。4.2 系统详细设计4.2.1 表现层设计表现层,又叫用户层层(Presentation Layer),用于用户接口的展示,以及用业务层的类和对象来“驱动”这些接口。在本系统中,主要使用了WinForm来实现,但是同时支持Web客户端的访问是本系统下一步的实现目标,由此在本系统中专门抽出了客户端通用组件层用来统一WinForm以及Web对通讯层的访问。根据3.2章提到的技术需要中,要合法的依赖关系,所以在用户层方面,本文将Form根据业务需求进行分类如图4.2所示,以BaseForm为基类,它包括了本系统中最基本行为,包括:ResetClasses, HasAccessRight, ApplyEclipseStyle, DefineValidationRules, Load Data,Submit Data, Show Error/Warning message, Localization等。图 42 窗体类图(1) BaseForm的设计1) ResetClassesECI中的一些实例、RuleGroup、Session中的一些公共信息都是存储在一个被叫作ClientDataManager的类中(这个类将属于客户端通用组件),然后被不同的窗体共享。所以在不同的窗体调用它之前要清理数据缓存,因为不同的窗体数据是不一样的。所以ResetClasses的作用就是在不同窗体调用ClientDataManager之前,重置窗体的数据缓存。2) HasAccessRight检验用户是否有访问一些控件的权限。比如,菜单的权限管理,因为不同的用户所见到的菜单内容也是不一样。3) ApplyEclipseStyle设置窗体中所有控件的字体颜色、背景颜色,所有界面控件的本地化、工具栏按钮的设置。4) DefineValidationRules窗体上一些控件再提交给服务器端之前需要进行进行一定程度的验证(例如必填项,最大/最小值约束等等),以节约服务器端的计算资源,避免无意义的计算,所以DefineValidationRules类用来添加相应的规则到各自窗口中。5) BaseForm伪代码实现protected void ApplyEclipseStyle(bool bDisplayGraphic = false)private void ReleaseAllLocksByGuid_Aid(string sUserId, string sGUID_AID, bool bDisplayErrors = true, bool bProcessWorkflow = true)protected DialogResult ShowMessages(string sMessage,string sTitle = , MessageBoxIcon nIconType = MessageBoxIcon.Error,MessageBoxButtons nButtonType = MessageBoxButtons.OKCancel)protected virtual void DoLoadForm() /响应load事件,加载服务器端返回数据protected virtual void ResetClasses()/清空本地数据protected virtual void DefineValidationRules() /定义界面控件验证规则protected virtual void CheckAccessRight()/检查用户权限,并根据权限改变控件状态(2) EclipseForm的设计EclipseForm继承于BaseForm主要是用来实现异步调用服务器的功能。主要包括:Close the form,Release lock,Multi-threading。1) Close the form释放窗体上的锁,关闭窗体、展示上一层窗体。2) Release lock释放和该窗体相关业务的锁。3) Multi-threading utility定义一些基本的属性和方法,降低修改代码以使用多线程的代价,提高再工程的效率。再本系统中使用BackgroundWorker来实现用户层的多线程。使用BackgroundWorker的好处在于BackgroundWorker使用基于事件触发的异步编程,对于调用层次较深的方法可以通过事件绑定的方式再各个层次上添加相应的响应函数,降低再工程的代价。4) EclipseForm伪代码实现/Extends from base form private void ReleaseAllLocksByGuid_Aid(string sUserId, string sGuid_Aid, bool bDisplayErrors = true, bool bProcessWorkflow = true)public void RunWorkerAsync()public DoWorkEventHandler doWorkEventHandler /异步事件,本系统中用来包装与服务器的通讯已实现网络连接的异步执行。public RunWorkerCompletedEventHandler /异步完成事件,本系统通过它来绑定用户界面的响应。protected virtual void DoPreRunAsync()/包装执行异步开始前的预处理,例如禁用所有用户界面控件protected virtual void DoPostRunAsync()/包装执行异步后的处理,例如检测控件访问权限.protected virtual void DoCloseForm() /封装标准的窗口关闭流程,删除锁(3) SearchForm的设计SearchForm继承于EclipseForm,它的主要功能是实现查找的作用,主要包括:ListView, SearchButton, TimeToMoreRecord, SelectButton, Clear, Disable OK button。1) ListView窗体中查找的结果将以ListView的形式展示出来,并且它拓展了.NET自带的ListView

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论