《基于.Net的数据库对象化访问开发框架的构建与应用硕士学位论文(55页).doc》由会员分享,可在线阅读,更多相关《基于.Net的数据库对象化访问开发框架的构建与应用硕士学位论文(55页).doc(55页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于.Net的数据库对象化访问开发框架的构建与应用硕士学位论文学校代码: 10246学 号: 09222010186硕 士 学 位 论 文(专 业 学 位)基于.Net的数据库对象化访问开发框架的构建与应用院 系:软件学院专 业: 软件工程姓 名:章称指 导 教 师: 戴开宇 博士完 成 日 期: 2011年9月20日-第 48 页目 录摘 要IIIABSTRACTIV第一章 绪论11.1 研究背景11.2 论文内容及意义21.3 论文结构3第二章 ORM研究与关键技术介绍42.1 关系模型与对象模型概念42.1.1 关系模型42.1.2 面向对象模型52.2 ORM 技术产生的主要原因62
2、.3 .Net平台下ORM底层数据访问技术72.4 远程数据访问技术8第三章 ThinkWide框架需求分析与设计11 3.1 框架需求分析113.1.1 NHibernate 框架优缺点分析113.1.2 iBatis.Net 框架优缺点分析133.1.3 框架需求总结133.2 框架设计目标163.3 框架架构设计173.4 与其他主流框架功能对比20第四章 ThinkWide框架的实现204.1 框架核心系统模块的详细设计与实现214.1.1多数据库数据访问层的详细设计与实现214.1.2 数据传输服务层的详细设计与实现264.1.3 数据对象封装层的详细设计与实现314.2 框架扩展系
3、统模块的设计与实现384.2.1 通用界面组件对象层的设计与实现384.2.2 业务逻辑层的设计与实现404.2.3 用户界面层的设计与实现404.2.4 动态脚本语言层的设计与实现414.2.5 数据库对象代码自动生成工具的实现43第五章 ThinkWide框架的应用455.1 Power分销系统简介455.2 ThinkWide框架在Power分销系统中的应用475.2.1统一开放的数据交互接口475.2.2 更方便的实现BS/CS双架构应用505.2.3 统一的界面应用风格535.2.4 业务可定制化545.3 运行环境555.4 小结56第六章 结束语576.1 总结576.2 展望5
4、7参考文献59致 谢61摘 要数据库对象化访问即对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。目前基于.Net的ORMapping有很多开源架构。但是一些框架有完善的地方也有不足之处,比如NHibernate过于严谨而造成使用时不灵活,限制很多,特别是在直接使用SQL,存储过程上很不方便,对存储过程支持度差。而iB 小巧灵活但是功能过于简单,对象化程度低,开发效率也较低。另外这些框架都没有在底层直接支持对象的远距离传输功能。由于上述这些原因需要设计一种结合了各个框架优点的新的ORM框架,整个框架设计的主要特点如下:1.实
5、现了全面的对象化数据库访问,支持插件式的可扩展的多数据库访问功能。2.直接支持存储过程对象和视图对象等功能。可以灵活的使用SQL,SQL语句即可以通过管理类自动生成,也可以手动编写。3.在框架内部直接支持对象数据远程传输,而且支持多种形式的数据对象传输服务,比如Web Service,WCF,Remoting等传输服务。4.扩展了普通ORM的功能边界,在框架内直接支持业务层,界面层等功能,适应性更强,效率更高。所以该框架能够比较有效地解决灵活性和功能性上面的许多问题,使得开发人员在开发效率上面有了较大的提升,在使用上又比较得心应手。同时该框架扩展了一般ORM的概念,支持了远程数据自动传输,统一
6、的界面层等实用功能。本文最后详细阐述了一个应用实例来充分展现框架的应用特性。关键词 : 数据访问技术,ORM,O/R Mapping,.NET,数据访问框架,快速开发 ABSTRACTObject / Relation Mapping (ORM) is Object-Oriented database access, which is developed along with method of object-oriented software development. There are many open-source ORM framework designs based on .NET
7、 currently. Some frameworks are powerful but also minor fault. For example, Nhibernate is too stringent to be flexible, especially in directly usage of SQL, and is not convenient and less supportive during store process. As well, iB is flexible but too simple in function, low level of object-Oriente
8、d development, low efficiency and not simple in coding. In addition to many frameworks do not directly support the long-distance transmission object function. Due to these reasons,it needed to design the new framework which combination the advantages of each framework. The whole ORM framework design
9、 main features below:1. To realize the comprehensive Object-Oriented database access and support plug-in type extensible database access functions.2. Directly support storing procedures objects and view object, and other functions. Flexibly use SQL statements, which are created automatically by sql
10、management class, or manually.3. Directly support object data remote transmission in internal framework, also support various forms of data objects transmission services, such as Web Service, Remoting, WCF and other transmission services.4. Expand the border of ordinary ORM function, directly suppor
11、t business layer, interface layer in framework with more adaptability, high efficiency.Therefore, this framework can more effectively solve many problems about flexibility and functional. And developers can raise the efficiency of developing program through using it. Meanwhile the framework expanded
12、 the general ORM concept, it support the remote data automatically transmission, unified interface layer etc. and other more useful functions.Keywords: Data Access Technology, ORM,O/R Mapping,. NET, data access framework, rapid development第一章 绪论1.1 研究背景数据访问是通过特定函数接口从数据库中查询数据以及保存和修改数据库中的数据。一般而言,数据访问就
13、是对数据库中的数据进行CRUD操作:Create(创建)、Retrieve(检索)、Update(更新)和Delete(删除)。自从数据库技术诞生以来,数据访问技术就成为应用程序开发的一项重要技术。随着数据库技术的不断发展,数据访问技术也在不断进步1。在数据库出现的早期,开发人员只需要了解正在使用的数据库产品的详尽知识。但数据库产品和技术发展很快。从关系数据库到非关系数据存储区(如电子邮件和文件系统),数据访问技术必须始终追随技术的飞速变化。并且,随着客户端服务器及多层应用程序结构的出现,现在开发人员必须了解多种数据访问技术。大多数开发人员花了数年时间学会了许多缩写词所对应的技术,例如,ODB
14、C、DAO、RDO、OLE DB、ADO 和 RDS。现在 Microsoft 已经推出 .NET 框架,并且,随之还有另外一项新的数据访问技术:ADO.NET2。在非微软平台下,还有著名的JDBC。以上的数据访问技术是随着关系型数据库共同发展起来的。它们的一个共同的特点,都和关系数据库的处理方式保持一致,都具有表、查询和数据集等概念。然而随着软件开发技术的不断发展,尤其面向对象技术的广泛运用,数据和程序之间出现了不协调。为了解决这个所谓的“阻抗不匹配”问题,对象数据库被提了出来,解决了程序和数据不协调的问题。但是这种模式又有点类似早期的数据库访问形式类似。又出现了老问题针对不同的对象数据库产
15、品,需要学习不同数据库访问函数库。由于关系数据库的性能、稳定性、市场份额和厂商支持都要比对象数据库好得多,很多软件系统也是构建于关系数据库上的。所以,为了既获得面向对象处理数据的优点,又能保持原有数据库平台的稳定,一种新的数据访问技术被提了出来对象关系映射技术(简称O/R Mapping,ORM)。ORM在开发数据库应用的系统中能够极大的提升开发效率,特别是在分层体系结构的系统中,上层的程序执行最终结果都是要操作数据库,而数据库是关系型,不是面向对象的,正是通过对象关系的映射,使我们实现了只对上层对象的操作实现对表的操作,感觉好像没有数据库的存在,上层只需面向对象编程就可以了。方便和快捷是使用
16、ORM的主要目的之一,然而不同的ORM框架设计的目标不同,这就造成了效率和便捷程度上的差异。部分ORM框架,例如NHibernate特别注重完整的对象关系以及强制约束,这方便了程序在不同数据库之间切换和移植,但是这降低了开发的灵活性,不能全面的发挥数据库的视图,存储过程等功能的特长。其他一些ORM框架,例如iB注重开发的灵活性支持直接的SQL应用,这虽然使用方便但是需要编写大量SQL配置文件,特别是框架内部也没有提供自动产生SQL和管理SQL的功能,而且在同数据库之间切换比较麻烦需要修改大量配置甚至部分程序。另外,大多数框架都未能在框架内部集成远程跨协议,跨广域网的数据访问功能。虽然Web技术
17、能够在框架外部解决部分问题,但是随着网络的发展,特别是移动平台的发展,越来越注重系统内部的数据远程访问能力,甚至是跨CS/BS平台应用或者手机平台的框架。基于这些情况如何能够相对平衡的解决这几个方面的问题是当前ORM框架设计的一个重要方向。1.2 论文内容及意义论文以对象化数据库访问方式的构建与应用为背景,分析传统的管理信息系统开发中,编写的数据库访问部分代码运行效率低,不易于维护,代码复杂。以及即使使用了一些主流的ORM框架后,虽然有极大的提升效率,代码变得简洁。但是也因为各个ORM框架的设计目标不同,应用的场景和空间都不相同。比如iBatis.Net简单灵活适合小型系统,但是此框架不够自动
18、化,开发繁琐。而NHibernat功能强大,封装完善适用于大型系统,但是此框架不够灵活,比较复杂。另外这些框架都没有在框架底层实现对象数据的远距离传输服务。结合这些情况,提出了基于.Net的数据库对象化访问开发框架。具体来说,论文的主要研究内容包括深入的阐述了如何设计和实现插件式、可扩展的多数据库访问支持功能及其原理。支持更多的数据库比如支持主流的网络数据库,Microsoft SQL Server数据库,Oracle数据库,DB2数据库,MySQL数据库等,以及大多数文件型数据库如Access,SQLite等。即使是不知名的第三方数据库,框架也提供了可扩展的插件功能,只需使用者开发支持框架接
19、口的数据驱动程序即可实现扩展。在这一点上要比目前的大多数ORM框架更加灵活开放。并且,研究了在框架内部设计和实现透明的,自动化的对象数据传输功能、以及支持多种形式的数据对象传输服务,比如Web Service,WCF,Remoting等传输服务。这种传输服务也是可以切换和配置的,对使用者来说无需增加和修改任何代码就可以实现。这大大方便了开发人员的系统开发以及维护人员的系统维护。另外,论文扩展了一般ORM框架的边界,阐述了在框架内部直接集成通用组件层,业务逻辑层,动态脚本语言层等更多实用功能的意义。最后介绍本框架在一个分销系统中的应用,以实际例子来展示本框架的实用和高效。在当今信息化社会,数据库
20、应用系统已深深融入整个社会,随处可以见,比如出行你会使用到交通一卡通系统,消费购物要使用到销售系统、银行系统,上班你要使用考勤系统、办公系统,工厂生产需要使用ERP系统,政府机构需要电子政务系统等等。然而这些数据库应用系统都离不开数据库和数据库访问框架。数据库访问框架对于一个数据库应用系统来说也是基础和中流砥柱。所以一个适用的、高效的数据库访问框架对提高管理系统的开发效率具有比较高的价值。1.3 论文结构本文的内容结构如下:第一章 绪论。讨论了数据库访问技术发展,分析了ORM技术产生的历史背景,提出了本文的研究方向和主要内容。第二章 ORM研究与关键技术介绍。主要研究了ORM的原理,介绍了关系
21、模型和对象模型,微软的ADO.NET框架等,以及远程数据访问技术。第三章 ThinkWide框架的需求分析与设计。针对当前的主流框架的不同缺点以及分析了主流的应用需求和目的,提出了另一种应用的ORM框架架构设计思路。第四章 ThinkWide框架的实现。根据新的ORM框架的架构设计思路,对框架的核心系统以及扩展系统进行详细的设计和具体实现。第五章 ThinkWide框架的应用。充分利用框架的功能快速的开发分销系统。极大的提升开发效率和系统的性能。第六章 总结和展望。通过对目前系统的总结,提出今后工作的目标和发展方向。第二章 ORM研究与关键技术介绍2.1 关系模型与对象模型概念数据库是根据数据
22、模型建立的,因此数据模型是数据库系统的基础3。它是描述数据、数据联系、数据语义等的集合。在整个数据库系统中数据模型具有非常重要的地位。它既与数据库应用程序相关,又和数据库管理系统相关;既可用于描述应用数据,又可用于描述数据库系统内部实现方式。目前数据库系统的数据模型主要包括网状模型、层次模型、关系模型和面向对象数据库模型,其中关系模型的应用范围最为广泛3。ORM框架研究主要涉及的数据模型是关系数据模型和面向对象数据模型,下面分别介绍关系模型和面向对象数据模型。2.1.1 关系模型关系数据库都是基于关系数据模型的。关系数据模型是基于记录(元组)的。记录是属性的集合,属性是事物的特征的抽取。每个属
23、性有一个域,表示属性的取值范围。在关系数据模型中,所有属性的域都必须是原子类型。这就是著名的第一范式。它使得记录的属性不能复合和嵌套3。关系是描述对象的一种方法。关系就是笛卡儿积的有限子集3,所以关系是一个二维表。关系模式一般由属性序列和各属性对应的域组成,关系模式是相对固定的,但关系的值是可变的。关系中的属性是无序的。从形式上看,关系相当于一个二维表,并且表中不出现组合数据。表的列对应于属性,而表的行对应于元组。如果某一属性组的值唯一地决定了关系中其他属性的值,并且其任何真子集均无此性质,则该属性组称为该关系的键。一个关系至少有一个键,也可能有多个键。如果关系中的属性或属性组不是本关系的键,
24、而是引用其它关系或本关系的键,则称为此关系的外键。键是关系模型的核心。关系数据库中的关系可以分为基本表,视图表和查询表三种类型,这三种类型的关系以不同的身份保存在数据库中,其作用和处理方法各不相同。关系模型的优势和局限性。关系数据库的主要优点是开发数据关系不复杂,规模小的应用程序比较快捷。关系表达式也容易被理解,操作方式也为大多数人们所熟知,并且有一套较为成熟的关系理论支持数据分析的方法。关系模型表达能力比较强结构简单在处理结构简单的表数据上比较方便4。这些优点使得关系数据模型在许多应用领域成为主要的数据库模型。关系模型的局限性主要表现在以下几个方面。首先,关系模型查询效率比较低,没有解决应用
25、方面的弱点,这种以记录为最基本的独立数据单位,不能很好的面向对象化开发。其次,关系数据库不能以自然地方式表达实体之间地联系。比较抽象不能够更加直观的表现实体之间的联系。关系模型所表达的实体之间的联系不是显式的,而是隐含在关系的公共属性中的,这就使得用户无法方便得到全局的逻辑体系结构。再次,关系模型表达的语义不够丰富。关系模型不能由一张表表达出更加复杂对象的语义,这就限制了它在数据类型较多、较复杂的领域的应用。最后,关系模型支持的数据类型非常简单。一般只提供一些简单的数据类型,如整型、实型等一些预定义好的类型,并不提供一些特殊新类型的定义和生成能力。2.1.2 面向对象模型面向对象数据模型即是面
26、向对象方法所建立的数据模型,它包括数据模式,建立在模式上的操作以及建立在模式上的约束7。数据库系统是为了管理大量的数据而产生。传统的关系数据库使用的领域一般都具有结构统一、无嵌套数据类型、面向记录、属性字段都是原子的。但在某些应用下使用关系模式相当繁琐和复杂比如嵌套或者可以继承的对象实体等,因而在这些情况下数据库应用不能充分发挥。寻找新型的数据模型就成了数据库研究的必然方向。在某些情况中实体联系模型和关系模型都不能够方便的建立数据建模,而面向对象数据模型克服了传统数据模型的缺陷。面向对象模型的一般概念主要包括对象及其属性和行为、类及其继承与组合、对象标识、多态性与消息等7。总之,面向对象数据模
27、型比之传统数据模型的根本区别是面向对象模型是面向直接应用的。它提供了丰富的语义和自然的表达方式,方便地直接表达应用领域地事物和它们之间地联系。克服了传统数据模型的主要缺点。面向对象技术的主要优点都在面向对象数据库中得到体现。2.2 ORM 技术产生的主要原因ORM是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。ORM,是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业
28、级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,ORM一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。它能有效避免繁琐的数据访问细节,对象和关系的行列转换都由ORM完成,不需要写过多的数据访问细节代码,面向对象的概念和关系数据之间的映射可抽象成为单个组件的职责,独立于应用程序之外。所以使用O/R Mapping技术的主要优点如下:(1)数据库结构清晰,便于实现 OOP。由于实现了应用模块对象对
29、数据库对象的完全映射,数据库逻辑模型可以自然且直接地模拟现实世界的实体关系。用户所处的当前物理世界、系统开发者所抽象的系统外部功能,与支持系统功能的内部数据库 (数据结构)一一对应,所以用户、开发者和数据库维护人员可以用一致的语言进行沟通。特别是对多数不了解业务的程序开发人员来说,这种将应用对象与相应的数据对象封装在对象统一体中的设计方法,大大减轻了程序实现的难度,使他们只要知道加工的数据及所需的操作即可,而且应用程序大多雷同,可以多处继承由设计人员抽象出来的、预先开发好的各种物理级超类。(2)数据库对象具有独立性,便于维护。除了数据库表对象与应用模块对象一一对应外,在逻辑对象模型中我们没有设
30、计多重继承的泛化关系,所以这样得到的数据库结构基本上是由父表类和子表类构成的树型层次结构,表类间很少有继承以外的复杂关系,是一个符合局部化原则的结构,从而使数据库表数据破坏的影响控制在局部范围且便于修复,给系统开通后的数据库日常维护工作带来便利。(3)需求变更时程序与数据库重用率高,修改少。在映射应用对象时,除关系映射规范化后可能出现一对多的表映射外,大多数应用对象与表对象是一一对应的。我们可以把规范化处理后的、由一个应用对象映射出来的多个表看成一个数据库对象。因此当部分应用需求变更时,首先,系统修改可以不涉及需求不变更的部分。其次,变更部分的修改可以基本上只限于追加或删除程序模块或追加新库表
31、,而基本上不必修改原有程序代码或原有库表定义,从而大大减少了工作量,降低了工作难度。对象持久化的基础是对象关系映射理论,如今,面向对象思想已经普及并被普遍采用,而且业务数据的建模采用了面向对象建模方法,但是目前大多数应用系统中使用的是关系数据库,数据的存储也采用关系模型,这就需要一个从对象模型到关系模型的映射过程。本章详细介绍了关系模型和对象模型的基本概念。2.3 .Net平台下ORM底层数据访问技术ORM是一种架构在底层数据访问技术之上的中间层,在.Net平台上的ORM主要使用ADO.NET来和底层数据库交互。ADO.NET的名称起源于ADO(ActiveX Data Objects),它提
32、供了平台互用性和可伸缩的数据访问。ADO.NET增强了对非连接编程模式的支持,并支持RICH XML。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序25。ADO.NET允许和不同类型的数据源以及数据库进行交互。然而并没有与此相关的一系列类来完成这样的工作。因为不同的数据源采用不同的协议,所以对于不同的数据源必须采用相应的协议。一些老式的数据源使用ODBC协议,许多新的数据源使用OleD
33、b协议,并且现在还不断出现更多的数据源,这些数据源都可以通过.NET的ADO.NET类库来进行连接。ADO.NET提供与数据源进行交互的相关的公共方法,但是对于不同的数据源采用一组不同的类库。这些类库称为Data Providers,并且通常是以与之交互的协议和数据源的类型来命名的。ADO.NET中主要的数据操作类有6大类如下:(1)Connection 类,用于指明数据库服务器、数据库名字、用户名、密码,和连接数据库所需要的其它参数。Connection类会被Command等类使用,这样就能够知道是在哪个数据源上面执行命令。(2)Command类,用于执行查询、修改、插入、删除等SQL语句以
34、及执行存储过程等功能。 (3)DataReader类,用于读取Command对象的SELECT语句得到的结果集。(4)DataSet类,该类是数据在内存中的表示形式。它包括多个DataTable对象,而DataTable包含列和行,就象一个普通的数据库中的表。甚至能够定义表之间的关系来创建主从关系。(5)DataAdapter类,用于填充DataSet类的数据,或者将DataSet中的数据保到数据库等功能。(6)DataTable类,实际加载数据的对象类,是DataSet类的组成部分。 当连接不同的数据库时ADO.NET会使用不同的数据库操作类,比如连接MS SQL Server数据库时,使用
35、SqlConnection,SqlCommand等一组类,在连接Oracle数据库时使用OracleConnection,OracleCommand等一组类。所以直接使用ADO.NET开发的应用程序在切换不同类型的数据库时将是比较麻烦的,即使是使用了ADO.NET提供的数据库工厂类,也不是非常的方便。 2.4 远程数据访问技术远程数据访问技术经历了几十年的发展逐渐成熟,从一开始的RAD(Remote Data Access)到分布式的DCOM(Microsoft Distributed Component Object Model)等。在进入网络技术快速发展的阶段后,老的访问技术逐渐被新崛起的
36、Web Services,Remoting,WCF等技术取代,下文简单介绍一下当前主流的远程数据访问技术。1.Web Services技术Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行。也是一种新的应用程序分支,具有支持自包含、自描述、模块化的应用功能。同时Web Service是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http、XML、Soap)来访问Web Ser
37、vice,通过Web Service内部执行得到所需结果。Web Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。实际上,WebService的主要目标是跨平台的可互操作性。为了达到这一目标,WebService完全基于XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台28。2.Remoting技术Remoting,简而言之,我们可以将其看作是一种分布式处理方式。从微软的产品角度来看,可以说Remoting就是DCOM的一种升
38、级,它改善了很多功能,并极好的融合到.Net平台下。Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架。这也正是我们使用Remoting的原因。为什么呢?在Windows操作系统中,是将应用程序分离为单独的进程。这个进程形成了应用程序代码和数据周围的一道边界。如果不采用进程间通信(RPC)机制,则在一个进程中执行的代码就不能访问另一进程。这是一种操作系统对应用程序的保护机制。然而在某些情况下,我们需要跨过应用程序域,与另外的应用程序域进行通信,即穿越边界。在Remoting中是通过通道(channel)来实现两个应用程序域之间对象的通信的。首先,客户端通过Remotin
39、g,访问通道以获得服务端对象,再通过代理解析为客户端对象。这就提供一种可能性,即以服务的方式来发布服务器对象。远程对象代码可以运行在服务器上(如服务器激活的对象和客户端激活的对象),然后客户端再通过Remoting连接服务器,获得该服务对象并通过序列化在客户端运行。在Remoting中,对于要传递的对象,设计者除了需要了解通道的类型和端口号之外,无需再了解数据包的格式。但必须注意的是,客户端在获取服务器端对象时,并不是获得实际的服务端对象,而是获得它的引用。这既保证了客户端和服务器端有关对象的松散耦合,同时也优化了通信的性能29。3. WCF技术Windows Communication Fo
40、undation (WCF) 是由微软发展的一组数据通信的应用程序开发接口,它是.NET框架的一部分,由 .NET Framework 3.0 开始引入,与 Windows Presentation Foundation 及 Windows Workflow Foundation 一起成为新一代 Windows 操作系统以及 WinFX 的三个重大应用程序开发类库。在 .NET Framework 2.0 以及前版本中,微软发展了 Web Service、Remoting以及基础的 Winsock 等通信支持,由于各个通信方法的设计方法不同,而且彼此之间也有相互的重叠性(例如Remoting
41、可以开发 SOAP, HTTP 通信),对于开发人员来说,不同的选择会有不同的程序设计模型,而且必须要重新学习,让开发人员在使用中有许多不便。同时,面向服务架构 (Service-Oriented Architecture) 也开始盛行于软件工业中,因此微软重新查看了这些通信方法,并设计了一个统一的程序开发模型,对于数据通信提供了最基本最有弹性的支持,这就是 Windows Communication Foundation概念。WCF 由于集合了几乎由 .NET Framework 所提供的通信方法。 从功能的角度来看,WCF完全可以看作是ASMX,.Net Remoting,Enterpri
42、se Service,WSE,MSMQ等技术的并集。(注:这种说法仅仅是从功能的角度。事实上WCF远非简单的并集这样简单,它是真正面向服务的产品,它已经改变了通常的开发模式)因此,利用WCF,就可以解决包括安全、可信赖、互操作、跨平台通信等等需求。开发者再不用去分别了解.Net Remoting,ASMX等各种技术了27。第三章 ThinkWide框架的需求分析与设计3.1 框架需求分析对于一个ORM框架,基本的功能需求归纳起来就是创建、读、写、删除对象的操作。底层的存储机制可能是文件数据库、网络数据库等,在大多数的业务应用系统中,尤其是数据结构复杂的业务系统,网络数据库一般是首选。当前主要流
43、行的ORM框架:NHibernate和iBatis.Net。分别代表了2大类框架。3.1.1 NHibernate 框架优缺点分析NHibernate是一个面向.NET环境的对象/关系数据库映射工具,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。NHibernate的目标主要是用于与数据持久化相关的编程任务,能够使开发人员从原来枯燥的SQL语句的编写中解放出来,解放出来的精力可以让开发人员投入到业务逻辑的实现上。对于以数据为中心的程序,开发人员往往是在数据库中使用存储过程来实现商业逻辑,这种情况下NHibernate可能不是最好的解决方案,但对于那些基于.NET,并且能够实现
44、OO业务模型和商业逻辑的中间层应用,NHibernate是最有用的。NHibernate可以帮助用户消除或者包装那些针对特定厂商的SQL代码,并且帮用户把结果集从表格式的表示形式转换成一系列的对象。NHibernate是一个目前应用的最广泛的开放源代码的对象关系映射框架,它对ADO.Net进行了对象封装,使得程序员可以随心所欲的使用对象编程思维来操纵数据库。NHibernate 从数据库底层来持久化你的.Net 对象到关系型数据库。NHibernate 为你处理这些,远胜于你不得不写SQL去从数据库存取对象。你的代码仅仅和对象关联,NHibernat 自动产生SQL语句,并确保对象提交到正确的
45、表和字段中去24。NHibernate体系结构图如下:图2.1 NHibernate体系结构(1)供持久化服务(和持久化的对象)。(2)SessionFactory(NHibernate.IsessionFactory):它是Session的工厂,是ConnectionProvider的客户。可以持有一个可选的(第二级)数据缓存,可以在进程级别或集群级别保存的可以在事物中重用的数据。(3)会话(NHibernate.ISession):单线程,生命期较短的对象,代表应用程序和持久化层之间的一次对话。封装了一个ADO.NET连接,也是Transaction的工厂。保存有必需的(第一级)持久化对象
46、的缓存,用于遍历对象图,或者通过标识符查找对象。(4)持久化对象(persistent)其集合(Collections):生命期较短的单线程的对象,包含了持久化状态和商业功能。这些可能是普通的对象,唯一特别的是现在从属于且仅从属于一个Session。一旦Session被关闭,它们都将从Session中取消联系,可以在任何程序层自由使用(比如,直接作为传送到表现层的DTO,数据传输对象)。(5)临时对象(Transient Object)及其集合(Collection):目前没有从属于一个Session的持久化类的实例。这些可能是刚刚被程序实例化,还没有来得及被持久化,或者是被一个已经关闭的Se
47、ssion实例化。(6)事务Transaction (NHibernate.ITransaction):单线程,生命期较短的对象,应用程序用其来表示一批工作的原子操作,它是底层的ADO.NET事务的抽象。一个Session在某些情况下可能跨越多个Transaction事务。(7)ConnectionProvider:ADO.NET连接工厂的提供者。从底层的IDbConnection抽象而来。对应用程序不可见,但可以被开发者扩展/实现。(8)TransactionFactory:事务实例的工厂。对应用程序不可见,但可以被开发者扩展/实现。虽然NHibernate框架很强大,封装也比较全面,有它优
48、秀的地方,但是在某些方面中还是有不足的地方,以下总结了NHibernate框架的优缺点。1.主要优点(1)完全的ORM框架。 NHibernate对数据库结构提供了较为完整的封装,它将数据库模式映射为较完全的对象模型,支持封装,继续机制,功能较强大,比一般的ORM灵活性高。 开发人员可以完全按照对象模型操纵数据库。 (2)代码自动生成,减少代码和sql的开发量,使开发人员摆脱开sql,Ado.Net和事务,缓存等底层。 NHibernate的ORM实现了对象 和数据库表之间的映射,以及SQL 的自动生成和执行。程序员往往只需定义好了对象到数据库表的映射关系,即可通过NHibernate提供的方法完成持久层操作。程序员甚至不