【VB开源代码栏目提醒】:网学会员--在 VB开源代码编辑为广大网友搜集整理了:Linux环境下应用Mono的分布式多层应用系统的研究与实现 - 硕士论文绩等信息,祝愿广大网友取得需要的信息,参考学习。
西南交通大学 硕士学位
论文Linux环境下应用Mono的分布式多层应用系统的研究与实现 级别:硕士 专业:计算机应用技术 指导教师:李允 20070501 西南交通大学硕士研究生学位
论文第1页 摘要 本文的主要构想是如何在基于Linux服务器的条件下糅合各种技术构建和实施分布式多层应用系统. 多层分布式应用是在客户端和服务器之间加入了一层或多层应用服务程序。
随着多层分布式应用在J2EE、.NET等框架下的应用不断成熟,笔者尝试实现一种既能跨平台又较好的应用现有技术的多层分布式应用系统。
当前,对于应用日益广泛的Linux操作系统而言,大部分的应用程序都是通过C、C++、JAvA等语言写成.C#因其优良的特性和.NET的支持而被众多的Windows程序员所使用.Mono一个内括.NETframework的
开源平台允许开发人员使用C#构建和部署基于Linux、Unix等系统上的应用,作为一种新的技术应运面生。
能否构建一个分布式多层应用系统,既能部分应用传统的成熟技术(如COM)又能部分应用新兴的Mono技术? 本文正是在此思路下在适用于Mono平台的基础上开发了采用分布式软件体系结构设计,根据具体的需求划分为数据处理层、数据访问层、业务逻辑层、业务外观层的小型c/S应用系统.各层采用不同的编程语言来实现:数据处理层采用C#实现Mono技术应用,从而可以一次编译多平台(Linux、Windows)分发运行;数据访问层采用c实现并运用COM组件技术;业务逻辑层、业务外观层采用c#实现运用合适的软件结构模型如桥接模式,将数据合理的封装.从而逐步实现Linux环境下应用Mono的应用系统的开发和实施。
关键词:分布式多层系统;.NET;Mono:Linux操作系统; 西南交通大学硕士研究生学位
论文第1I页 Abstract ThispaperfocusesOnhowtousethepropertechnologytodesignandimplementthemulti—tiersapplication.Multi-tiersmeanthatthereareoneormoretiersbetweenclientandserver.Duetothemulti—tierssystemwassuccessfuluseduponJ2EEor.NET,theauthortriestodesignonesystemwhichcanbepartlydeployedbothuponLinuxorWindows. Now,mostoftheapplicationcanbeimplementedbyC/C++/J avaonLinux.C#and.NETalsohavemanyfansontheWindowssystem.Monowhichcanwork1ike.NETuponLinuxorUNIX,allowthedevelopertocodetheprogramusingC#intheLinux.Canweimplementthiskindofdistributedmulti-tierssysteminwhichwecanusenotonlythematurecodingtechnology(e.g.COM)butalsothenewtechnologylikeMono? Justliketheanalysisbefore,thispaperdesignth ec/ssystemasfourtiersandonetierusingMono.TheyareDatahandlingtier,Dataaccessingtier,logictier,andGUItier.TheDatahandlingtiercanusingC#andMono.itmeansweneedcompliedtheapplicationonetimeandthenthisfunctioncanrunonwindowsandLinuxusingMonoand.NET:DataaccesstierisrealizedbyClanguageandC伽technology:ThelogictierandGUItiercanbefinishedbyC#,atthesametimethiSsystemapplyingtheproperdesignpatterntosystem’Sdesign.Soitcanrealizethemulti—tiersystemstepbystep.Keyword:distributedmulti—tierssystem,.NET,Mono,LinuxOperatorsystem 西南交通大学硕士研究生学位
论文第1页 第1章绪论1.1课题研究背景1.1.1课题的背景 当软件的复杂度急剧增加,
代码级复用已经不能满足要求时,框架级复用就摆上了前台.框架级的复用是基于平台的。
2000年6月,微软发布了c#语言和。
NET平台Ⅲ。
c#语言是一种强类型的,面向对象的语言,它具有语法简单、表达力强的特点,而.NET平台则是构成微软的“.NET计划”的基石..NET平台的核心包括两方面,一方面就是著名的通用语言运行机CLI(CommonLanguageRuntime)…;另一方面就是通用函数库,这些库函数可以被多种语言(包括c#、vB、vC++等)调用,并且通过编译都产生一种共同的中间语言(IntermediateLanguage)啪.随着.NET技术应用的不断发展,.NET平台被越来越多的开发人员接受并使用。
C#也因其优良的特性和.NET的支持而被众多的程序员所使用.但无法回避的问题是:由于CLI需要操作系统的支持,所以绝大部分.NET程序都是运行在MS—Windows操作系统之上,而对于应用日益广泛的Linux等操作系统而言,大部分的应用程序都是通过C、JAvA等语言写成,广大的C#程序员迫切需要一个在Linux等操作系统上的类似.NET的平台. Linux作为自由软件,越来越受到青睬,现被选为我国政府上网工程的操作系统平台….Linux现在不仅是一个内核,而且已经成为一种包括系统管理工具、完整的开发环境、开发工具和应用软件在内的用户很容易获得的操作系统。
Linux操作系统有它先天的优越性“】,其一是可以免费获取源码,爱好者可以按照自己的需要自由修改、复制和发布内核程序的源码,并公布在Internet上:其二是获取操作系统的成本较低,并且它也具备图形用户界面,操作性较高。
具有可扩展性、可靠性、开放性和网络功能超强等一系列优良特性。
如何能够利用Linux和.NET的优点?Mono应运而生. Mono,一个基于.NETframework的
开源开发平台,允许开发人员 来构建Linux和跨平台的应用。
Mono’S.NET是基于ECMA的C#标准(Ecma一334)和CommonLanguageInfrastructure(Ecma~335.htm)”….Mono含有支持.NET客户端和服务器端应用的开发工具和架构。
目标是成为基于Linux的应用、开发的优先选择,并支持多种硬件平台。
最重要的一点是:Mono 西南交通大学硕士研究生学位
论文第2页是
开源软件。
1.1.2课题的提出 当前大部分的企业都采用基于多层架构的开发模式“1,各大厂商也推出各种平台环境例如MS的.NET、SUN的J2EE.多层架构的开发模式可极大提高软件复用,关注的重点在于框架级的软件复用,
代码级的软件复用己不再是重点”1.而基于平台的开发模式由于站在巨人的肩上将组件的复用提高到一个新的水平.由于MS的封闭性,强大的.NET只有在WINDOWS平台上运行,而Windows相对Unix以及Linux的不稳定性极大的打击了.NET在高端市场的战斗力.J2EE跨平台、跨系统的优势使得J2EE在现阶段Linux上应用的竞争中占优. 目前部署一个.NET分布式系统的流行傲法是server端部署于Windo ws服务器,而客户端亦只能布局于Windows之上吲埘.考虑到J2EE真正的跨平台和广泛应用。
笔者曾经多次考虑到能否将.NET应用布局于Linux之上,从而实现跨平台应用. 当前.NET平台的市场占有率不断上升,现今己经成为商业应用软件炙手可热的Windows上的开发平台,有着众多的程序员工作其上.VisualStudioC#的易用性使得你不由得遐想:如果能在Linux上跑C#,或者干脆在Windows上编译成功的C#二进制
代码能直接在Linux上运行? Mono提供了这种可能,尽管它现在并不完美。
本文的选题正是结合Linux和.NET这两个热点领域在研究对比了现有的分布式平台的开发和实现,分析出各种系统的优势和劣势;在此基础之上,扬长避短,借助Mono和.NET框架开发出一个跨平台的分布式应用系统。
本
论文结合实际系统的需求设计了一个新型的实际应用的分布式多层应用系统,该系统建立在支持多线程、多进程上的客户端/服务器架构之上,采用多层架构将用户界面同企业逻辑分离,把信息系统按功能划分为表示、功能和数据三大块,对应的软件层为数据处理层、数据访问层、业务逻辑层、业务外观层。
业务外观层、业务逻辑层由Vs.c#来实现,数据访问层由C和ESOL来实现,数据处理层由VS.C#来实现并可以应用到Mono和.NET框架。
西南交通大学硕士研究生学位
论文第3页1.1.3可行性研究 以下从本系统各层分别进行阐述: 业务外观层、业务逻辑层由vSc#来实现这是没有问题的,数据访问层由C和ESQL/C来实现并生成DLL也可以做到。
数据处理层由VS。
C#来实现并可以应用到Mono和。
NET框架倒是一个全新的课题。
我们可以仔细分析一下:从原理上看,设计者在设计.NET框架的时候,就考虑到了平台的无关性.他们在操作系统的基础^PI之上封装了一层类库,其实现的机理与Java虚拟机是类似的01,MS自己出于商业因素的考虑,没有开发非Windows平台上的.NET框架,并保密大部分。
NET框架源
代码.Mono己经完成了大部分MS.NET的功能.140no的开发是模仿MS.NET框架进行的。
目前^40no项目已经实现了.NET框架的大部分类库;并支持.NET上运行的二进制文件在^40no上运行“oJ.所以,将基于.NET的数据处理层构建在基于Linux的Mono平台上己经具备了条件.1.2国内外研究现状1.2.1分布式多层系统的发展 架构设计是软件开发的基础,并往往决定一个项目的成败。
分布式多层结构是目前流行的架构设计模式,它是在由Buschmann等提出的。
层模式”…1基础上发展起来的。
所谓分布式系统,它是支持分布式处理的软件系统是在由通信网络互联的多处理机体系结构上执行任务的系统。
它规定了系统内数据访问和数据处理的组织方式。
伴随着信息技术的发展,分布式应用体系结构经历了单层结构、两层结构、以及多层结构(三层以及三层以上)等三个阶段。
传统客户机/服务器的两层应用在很长一段时间内满足了人们的应用需求,但由于它的局限性,多层结构应用系统应运而生.它的基本思想是将用户界面同企业逻辑分离,把信息系统按功能划分为表示、功能和数据等几大块,对应的软件层根据具体的需求可划分为数据访问层,数据实体层、数据维护层、业务逻辑层、业务外观层、web层等。
它通过分解来管理问题的复杂性,同时还可以有效地重复使用业务逻辑并保留与昂贵资源(如数据库)的重要连接“1〔121.而架构设计所基于的主要平台是.NET和J2EE。
西南交通大学硕士研究生学位
论文第4页 WEB 业务外观层fI业务规则层 封装功能II实现业务规 I-1”1则和逻 年.特挥喜 ,数据维护层V IE主要把针对数据实体层的种类 操作进行封装1.存储 浏览器 T过程 (可数据实体层 数据实体对象. 选) 数据访问层-上一触发器I 为业务规则层提供数据服务lI 7l系轨性策 I应用程序配置,异常处理, l系统日志 图卜1应用系统各层关系图 如图卜1所示。
现对其各层进行分析. 数据访问层:该层完成了对开发平台提供的数据访问对象的高层抽象和封装,统一了数据库的访问方式,可以访问不同类型的数据库.这样在具体开发时,可以不用考虑同数据库的连接等闯题,可以方便地更换数据库,而不用修改原有的
代码,大大简化了开发和部署工作。
数据实体层:系统体系结构通常将实体分割为数据实体和实体控制两个对象,数据实体对象主要体现实体对象的静态特征,起数据容器的作用.而实体控制对象完成对数据实体的控制,通过抽象得到的程序实体类与数据库的一张或多张数据表进行映射.因此,数据实体层实现了数据表示方式。
实体控制层:实体控制层对数据的存取方式进行封装.由于分离了数据实体和实体控制,所以实体控制层针对数据实体层的各类操作,根据其功能实现特点封装成各自具体类,这样可以单独修改实体结构和对实体数据的操纵。
业务逻辑层:业务逻辑层用来处理系统核心业务逻辑,主要是将业务逻辑独立实现,从而不依赖于其他各层,当业务逻辑需要作出改变时仅仅改动业务逻辑层即可。
西南交通大学硕士研究生学位
论文第5页 业务外观层:业务外观层作为业务流程的界面,将用户界面与各种业务功能的实现隔离开来.业务外观层根据各个模块的需要,对业务规则迸高层次的封装n”. WEB表示层:该层的主要功能是同用户交互,向用户提供服务,提供HTML页面,接受用户的输入,调用业务功能等,完成用户的需求。
根据实际需要,以上各层并不需同时出现,可将某些层的功能合在某一层来实现。
1.2.2当前分布式多层应用系统国内外现状 当前大规模应用的分布式多层系统的都是基于某一应用平台之上的(跨应用平台的十分少见).如图1-2所示. 业务外观层 业务逻辑层分布式多层应用 框架 数据层 应用平台 操作系统 硬件平台 图卜2平台结构模型 不同的操作系统所适用的应用平台是不一样的,不同的应用平台所采适用的分布式多层应用框架相似但实现技术不尽相同。
目前主要的应用平台有基于windows的.NET平台、跨操作系统平台的J2EE平台、以及新兴的Mono平台等。
以下将从应用平台的层面对当前的分布式多层应用系统实施状况做一个介绍。
1.2.2.1基于.NET的分布式多层应用系统 当前流行的.NET多层应用系统有C/S(客户端/服务器)、B/S(浏览器/服务器)模式,都是应用在Windows之上,如图1--3所示。
西南交通大学硕士研究生学位
论文第6页 WEB表示层(ASP.NET) 业务外观层(FCL组 件、C#等) 分布式多层 业务逻辑层(FCL组 应用框架 件、c#等) 数据层(ADO.NET) 应用平台(.NETFRAMEWOR K) 操作系统(Windows) 硬件平台 图1—3.NET多层应用系统 当采用c/s模式时,一般业务界面层、业务逻辑层由FCL组件为基础来实现,数据层由ADO.NET技术来实现. 当采用B/S模式,即Browser/Server模式时。
只是WEB表示层 由ASP.NET技术来实现,业务外观层由WEB表示层取代,其他各层实现技术相同。
1.2.2.2J2EE平台及J2EE的分布式多层应用系统 1)J2EE平台 J2EE是一种利用Java2平台来简化企业解决方案的开发、部署和管理相关复杂问题的体系结构“”,可以用于开发大型的、多层次的以及分布式的企业级应用系统.J2EE采用分层结构,层与层之间相互独立,每个层面提供特定服务。
在分层结构中,任何一层只要其提供的接121不变,实现发生变化对其他层面没有影响。
分层后不仅使各层功能变得简单且易实现,而且具有更好的可维护性和可扩展性。
‘ J2EE的体系结构通过把表现逻辑、业务逻辑和后端的数据服务分割开来,提供了一种基于组件的设计、开发及部署企业应用程序的模块化方式和高性能多线程的环境。
它的分布式组件恩想,适于电子商务系统的开发。
西南交通大学硕士研究生学位
论文第7页 2)基于J2EE的分布式多层应用 基于J2EE的电子商务开发模型一般分为四层,分别是业务外观层或Web表示层、业务层和数据层.其中,业务层中间层又分为两层,即Web服务器层和业务逻辑层。
Web服务器层使用Servlet和JSP组件把客户端的请求发送给业务逻辑层的EJB组件处理,并把处理结果发送给客户端.业务逻辑层由若干运行在EJB服务器中的EJR组件组成。
负责处理客户端的请求.EJB是一种面向对象的组件,主要用来开发、实现和部署分布式逻辑。
由于J2EE具有跨平台性,故可以部署于Windows、Linux等 上. J2EE各层的实现技术与.NET相比有很大的差异,各层的实现技术如图卜4所示. WEB表示层(JSP) 业务外观层(EJB) 分布式多层 业务逻辑层(EJB)应用框架 …… 数据层(JDBC) 应用平台(J2EE) 操作系统(Windows/Linux 等) 硬件平台 图卜4J2EE多层应用系统1.3
论文研究内容和组织结构1.3.1
论文研究内容 本系统的设计目标是设计一个小型的采用分布式多层应用系统的卡管理系统。
该系统建立在支持多线程、多进程上的客户端/服务器架构之上,采用多层架构将用户界面同企业逻辑分离,把信息系统按功能划分为表示、功能和数据三大块,对应的软件层为数据处理层、数据访问层、业务逻辑 西南交通大学硕士研究生学位
论文第8页层、业务外观层。
业务外观层、业务逻辑层由vs.c#来实现,数据访问层由C和ESQL来实现,数据处理层由vS.C#来实现并可以应用到Mono和.NET框架。
主要完成的工作如下: ●应用技术的理论分析和比较,可行性研究. ●系统的需求分析和总体设计.通过研究具体需求,确定其边界, 明确系统责任.在总体上,从系统易用性、易维护性的角度划定 各层功能模块及交互关系,采用分层体系结构. ●具体各层的实现.整个系统采用的是C/S模式,支持多线程、多 进程.分别实现了数据访问层、业务逻辑层、业务外观层及数据 处理层. ·在安装有Mono和.NET平台的系统上的安装、配置.1.3。
2
论文组织结构 第一章介绍课题背景、国内外现状及
论文研究内容与方向,提出了结合Mono和COM组件技术的跨操作系统、跨平台的分布式多层处理系统的设想。
第二章介绍本文所采用的技术以及其原因和相关技术的比较. 第三章介绍系统的需求分析和构建此系统的总体设计,总体框架的搭建,具体模块的划分等. 第四章介绍系统的具体实现,以框架中的各层为目标,逐一介绍各层的。
第五章介绍系统的安装和调试。
Mono平台、.NET平台以及开发程序的安装和测试工作. 西南交通大学硕士研究生学位
论文第9页 第2章开发技术的选择和分析2.1NET技术2.1.1.NET平台 .NETFramework是Microsoft为开发应用程序而创建的一个富有革命性的新平台.是为众多高级语言(如C#,ManagedC++和VB.NET)和各种类型应用程序(如Windows窗体程序、ASP.NET程序和XMLWebService)提供 .各种服务的平台嘲“”r16〕 在下一个版本的Windows中将包括.NET框架“”. Ms已经发布了MS.NET框架1.0,MS.NET框架1.1和MS.NE T框架2.0这三个版本“”.本文以MS.NET框架1.1版本作为讨论对象. .NET最主要的思想是从JvM(JavaVirtualMachine)得 来的,换句话说,就是使用一种。
中间层”来代替原本的PE可执行文件格式.CIL (CommonIntermediateLanguage)一般来说都是已 经编译好的,是用JIT (Just—In-Time)动态执行 ““.MS.NET框架目前支持很多种应用程序的开发,如Web窗体、控件库、XMLWeb服务和基于GDI+(GraphicsDeviceInterfacePlus)Windows窗体等等啪. .NET架构主要分为通用语言运行时(CLR)、CommonTypeSys tem(其中包括CommonLanguageSpecification)、框架基础类库((FCL)三部分。
这三层从高到底,越高代表越接近应用程序,越低代表越接近内核.CLR负责程序集(Assembly)中
代码的执行,它通过JIT(JustinTime)编译器将.NET应用程序编译成CIL(原先CIL被命名为MSIL—MicroSoftIntermediateLanguage),生成PE可执行
代码。
cTs层提供一般常用的数据类型,而其中的CLS模块包含所有的.NET应用程序都需要共享的数据类型;FCL包括了各种基本类型的定义和各命名空间下的基本类库01,它提供对系统功能的访问,是建立NETFramework应用程序、组件和控件的基础。
FCL主要包括了如下功能03: ASP.NET一支持各种ASP.NET技术和基本控 件。
ADO.NET一支持对数据库的操作。
XML支持对)(ML文件的操作。
Security一提供公共语言运行库安全系统的基础结构。
I/卜支持对IlO和文件的 操作。
西南交通大学硕士研究生学位
论文第10页 Net一为当前网络}使用的多种协议提供了简单的编程接口. Remoting--提供远程处理相关技术的支 持。
Threading---支持对线程的各种操 作。
Instrumentation提供Helper函数来公开事件和数据以便进 行管理. Collections--包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。
2.1.2.NET对COM的支持 COM组件是微软曾经力推了很多年的一种
代码复用的技术框架。
COl{利用了接口的标准,通过接口,客户机
代码可以与组件类进行对话。
由于客户机
代码只能通过标准化的接口与组件类进行通信,因此客户
代码可以不必知道关于那些组件类如何执行专门语言的细节问题.,例如,使用COM接口作为媒介,VB用户可以应用由c++编写的c删组件.从而实现跨语言的通信。
在这些年里COM技术也得到了极大的发展和应用,但它的弊端却也日益明显,我们不锝不面对众多的COM组件之间的版本控制和令人恐怖的DLL地狱,还有注册表、GUID等等。
在我们安装一个软件的同时,也带来了大量的我们所未知的版本繁多的COM组件到我们的操作系统中.但是,COM组件的技术优势也是明显的,在很大的程度上实现了Windows平台下的
代码复用. 在.NET中并没有抛弃对CON{的支持,相反.NET和COM是可以互操作 的。
由于我们将使用到如何在.NET组件中调用COM组件,故而只介绍.NET对COM的支持. .NET在设计之初就考虑到了如何方便的利用现有的各种技术资源,这也是微软的一贯作风,.NET的强大之处也可见一斑。
.NET提供了大量的类库来方便的实现同COM的相互操作,其中很重要的一个名称空间就是System.Runtime.Interopservices。
通过这个名称空间的名字我们也可以从字面上看出,“互操作服务”。
System.Runtime.InteropServices这个名称空间提供了一系列的类如DllImport来对COM对象进行操作。
西南交通大学硕士研究生学位
论文第11页2.1.3.NET的局限性 .NET平台有很多优点如;采用面向对象的编程、推出了强大的编程语言C#、多语言的支持、良好的向后兼容性(支持COW等)、数据访问等.这些都为我们编程提供了很多的便利。
.NET也有其局限性,比如不适用于时间性要求高的情况。
但最大的局限性还是在于其操作系统平台的局限性。
.NET可以说是跨平台的,但这里的平台指WindowsCE,用在PDA等 设备上的同属微软的Windows操作系统上.微软也提供了一个供FreeBSD上的.NET平台源
代码。
从.NET的类库上和编译器的编译参数上看,微软的.NET是可以做到跨平台的.但是微软却没有提供对
开源平台如Linux等的支持.这一点从商业上来看也许是对微软有利,但是给.NET的普及,特别是在Unix、Linux等系统上的普及带来了很大的障碍。
2.2Mono和Do-tGNU技术 Mono和DotGNU都是可以运行于Unix、Linux等非Window s操作系统之上的新型应用平台,它们的出现,填补了微软的空白.2.2.1Mono平台 2001年7月在Ximian的MigueldeIcaza领导下开始开发M ono项目。
NET。
用以实现跨平台的. 旨在使开发者能够编写同时在Windows和Linux上运行的.NET程序,令Linux用户也能够享受到.NET平台的巨大好处m1. Mono’S.NET是基于ECMA的C#标准(Ecma-334)和Common LanguageInfrastructure(Ecma-335.htm)。
Mono含有支持.NET客户端和服务器端应用的开发工具和架构“”.它的目标是成为基于Linux的应用开发的优先选择,它包括了C#编译器、EClIA—compatibleruntimeengine(theCommonLanguageRuntime,orCLR)和库函数.这些库函数包括Microsoft.NET的兼容库(ADO.NET、System.Windows.Forms和ASP.NET)以及Mono自有的和第三方类库。
用户还可以将Mono运行时(runtime)嵌入.