显示标签为“分布式架构”的博文。显示所有博文
显示标签为“分布式架构”的博文。显示所有博文

2009年5月1日星期五

CSLA.NET框架数据访问门户实现

(1)、通道适配器
适配器(Adapter)是设计模式的一种,运用这种设计模式能够支持灵活的配置。通道适配器其实只是对适配器模式的一种扩展,通过适配器提供移动对象在多层中的灵活访问。先看看上面提到的第一部分图:




图9:数据门户的通道适配器
上面的中间部分就是一条一条通道,如何选择访问的通道是通过修改配置文件来实现的,而不是通过修改代码,这样是非常方便的。需要注意的是:LocalProxy通道是直接与Csla.Server.DataPortal对象直接进行通信的,因为是本地的,所以绕开了网络,直接访问客户端内存对象,其他三个就需要通过网络来访问服务端的对象。
(2)、消息路由
以前的COM和COM+技术都暴露了太多的服务端的方法,这样使得客户端必须去识别所有的方法,然后才能进行操作,这样效率是非常差的,而且在网络环境差的情况下,往往很容易出错。
CSLA.NET框架的数据访问门户在服务端只暴露出极少的方法,而客户端调用设置为消息,这些消息由消息路由器发送给移动对象,通过移动对象实现真正的数据访问。
(3)、分布式事务处理支持
微软的.NET技术提供了System.Transations名称空间,专门用来实现分布式事务处理,CSLA.NET框架在数据访问门户中充分利用了这个名称空间。再看看开始提到的那张图的中间部分:
图10:数据门户的消息路由
Csla.Server.DataPortal对象使用TransationalAttribute来决定应该为客户端提供什么类型的事务方法,最终,所有调用都通过Csla.Server.SimpleDataPortal来处理,将调用发给相应的业务对象去处理。
(4)配置信息与运行环境的无关性
要成功地使得对象能够在其他进程或者电脑上运行,就必须为业务对象提供一个一致的环境。下面通过异常数据的调用来显示对象如何在不同进程间传递:
图11:移动对象在不同进程中调用
为了支持配置信息与运行环境的无关性,CSLA.NET框架的数据访问设计了下面几个重要的支持类:Csla.Server.DataPortalContext、Csla.Server.DataPortalResult、Csla.Server.DataPortalExeption、Csla.ApplicationContext。
有了这些类的支持,客户端的Csla.DataPortal负责将客户端的配置信息传递给服务器并且在服务器配置有变化的情况下对客户端进行更新,从而实现了一致的配置信息。

2009年4月28日星期二

CSLA.NET框架实现之数据访问门户设计

数据访问门户是通过使业务对象能在客户端和服务器之间移动来实现“移动对象”,把通道适配器模式和消息路由模式合并起来,提供客户端对服务器访问的单一的入口。
业务开发人员使用Csla.DataPortal来创建、提取、更新和删除所有的业务对象数据,下表是数据访问门户业务对象要实现的方法:
表3:业务对象要实现的方法
操作
解释
Create
调用Csla.Server.DataPortal对象,然后调用DataPortal_Create()
Fetch
调用Csla.Server.DataPortal对象,然后调用DataPortal_Fetch()
Update
调用Csla.Server.DataPortal对象,然后调用DataPortal_Update()
Delete
调用Csla.Server.DataPortal对象,然后调用DataPortal_Delete()
Execute
调用Csla.Server.DataPortal对象,然后调用DataPortal_Execute ()
整个数据访问门户调用的流程如下:
图8:数据门户调用逻辑
总结上面的这张调用顺序图。首先,客户端Csla.DataPortal通过通道适配器,以四种代理方式对服务端提供的三个接口进行进程调用,以便实现客户端到服务端Csla.Server.DataPortal最终的调用;然后,服务端Csla.Server.DataPortal通过System.Transations提供的分布式事务处理技术调用Csla.Server.SimpleDataPortal中的实例;最后,Csla.Server.SimpleDataPortal利用消息路由技术最终实现对数据库的访问。
这个流程中还有一个非常重要的概念,就是“配置信息与运行位置的无关性”,意思是在客户端和服务器上配置的信息在进行数据访问的过程中拥有安全的位置无关性。下面具体地研究数据访问门户的实现。

2009年4月25日星期六

CSLA.NET框架的.NET实现

CSLA.NET框架是在.NET技术支持下开发的,它大量使用.NET提供的技术,同时也大量使用面向对象设计的思想,比如封装、抽象、继承、多态。
表2:CSLA.NET框架目录
目录
设计用处
Core
包含所有Csla.Core中的类型
Data
包含所有Csla.Data的类型
DataPortal
开发人员需要调用的数据门户
Delete
想要删除的对象
DataPortal\Client
Csla.DataPortal和Csla.DataPortalClient
DataPortal\Host
Csla.Server.Host宿主类,主要是提供不同方式的数据门户
DataPortal\Server
服务器数据门户,Csla.Server类型
Security
自定义身份验证类Csla.Security
Vlidation
规则验证类Csla.Validation
整个框架实现主要分三大部分:基础类库的实现(包含业务逻辑)、数据访问门户实现、框架支持类库实现。

2009年4月23日星期四

开源框架CSLA.NET研究之框架设计

CSLA.NET框架是一个非常优秀的框架,能够真正地实现构建大多数业务应用程序所需要的框架,特别地,这个框架在业务逻辑上面提供了异常强大的支持,包括业务逻辑N层撤销能力、移动对象、业务规则跟踪、业务授权规则、同一个对象拥有多种用户界面、Windows和Web Form的数据绑定,以及分布式事务处理的集成,而这些东西是开发人员在开发中最头痛的东西,现在CSLA.NET把这些都封装起来了,那么开发人员就可以把注意力都集中到业务需求上面来。
(1)、设计思想
开发人员最希望看到的是所有的非业务对象都已经存在了,比如数据库访问对象,UI对象、数据验证对象、字符串处理对象和权限验证等,这样就可以集中精力去创建、修改业务对象,从而能够很好地维护业务逻辑和数据访问层,应对时时刻刻变化的需求。
CSLA.NET框架把业务对象在各层的撤消能力、失效业务对象的跟踪、“脏”数据的判断、业务对象和业务对象集合的关系、自定义身份验证对象、权限规则对象、数据库写入和读取对象都封装起来,而且为开发人员提供简单调用接口,全面支持Web程序和桌面应用程序的数据绑定。上面提到的这些支持,在.NET里都有解决方案,只不过很零散,CSLA.NET框架运用面向对象设计的思想方法把他们封装起来。
(2)、框架设计
每一个框架本身是一个庞大负责的实体,由很多类组成,而对于开发人员,应该提供给他们尽可能少但又能够满足业务需求的类。CSLA.NET框架做到了这一点,整个框架由七大块组成,包括创建业务对象、数据门户访问、对业务对象在各层间的撤销能力的支持、数据验证支持、分布式事务处理支持、身份验证及授权、工具支持类,但是面向开发人员的只有业务对象中的几个类,开发人员只需要继承这几个类就可以调用框架的所有其他方法。
在上面提到的七大块中,创建业务对象、数据门户访问和分布式事务处理能力是整个框架设计最为关键的部分。
①创建业务对象
业务对象类的设计决定整个框架是否好用,这些类是开发人员最经常使用的类,下图显示了框架中关键的业务对象类:
图7:业务对象最常用的六个类
在开发基于CSLA.NET框架下的分布式应用程序开发时,开发人员就只需要继承这几个业务对象类,便可以调用到CSLA.NET中提供的方法和享受到它的分布式处理能力。
②数据门户访问
数据门户为服务器提供了一个单一的访问和设置入口,负责管理业务对象在服务器上进行数据访问代码的时候与其通信,CSLA.NET框架的数据门户设计是很好的,它提供了一致的访问模式、把客户机和服务器直接的通信方式抽象出来、能够对本地和远程运行的程序进行单点控制。以下是数据门户几个重要的组成部分:
(1)、客户端DataPortal
数据门户继承架构的主要入口,供业务开发代码使用
(2)、客户端代理
客户端通道适配器模式,将下层网络协议从应用层抽象出来
(3)、消息对象
想服务器发送并传回数据
(4)、服务端宿主类
为服务器宿主,包括远程调用、企业服务、Web服务
(5)、服务器DataPortal
实现分布式事务处理技术,与数据存储层打交道
业务对象在客户机与服务器之间有四种操作模式,即查询、创建、修改、删除,都要通过数据门户来执行。

2009年4月22日星期三

基于CSLA.NET的分布式架构

(1)、物理N层架构与逻辑N层架构

在软件开发行业,对架构探讨最多的是物理N层架构和逻辑N层架构,一个良好的物理N层架构可以带来高性能、可扩充性、容错能力强和很好的安全性;而一个良好的逻辑N层架构可以带来这些好处:逻辑的组织代码、更易于维护、更好的代码重用、更好的团队开发体验和更高的代码清晰性。

其实,物理架构依赖于逻辑架构,良好的逻辑N层架构都会带来一个好的物理N层架构,因为物理架构重点在于部署,如何部署都取决与应用程序逻辑架构的支持。

(2)、支持逻辑四层架构的CSLA.NET分布式架构

CSLA.NET框架是一个良好的逻辑四层架构,并且能够支持分布式事务处理,还可以很好地支持开发WindowsWebWeb Services清晰的接口。下面是CSLA.NET支持的四层架构的示意图:

3CSLA.NET框架逻辑架构

①表现层:表现层的职责是搜集用户在页面输入的信息,定制用户界面的外观、导航指示和解释用户输入的逻辑,这一层的设计涉及到艺术性的东西,良好优雅的表现层能够吸引用户,特别向Web这样展示在外面的程序。

②业务逻辑层:微软公司对业务逻辑的定义是:一个包含数据验证、登录确认、数据查找、策略方针和算法转换的集合,它定制了企业做业务的方式。业务逻辑层职责在于数据验证、数据操作、数据处理、负责的业务规则和应用程序安全性设置。这一层是最为复杂、也是最令开发人员感到头痛的,业务逻辑会随着需求变化。

CSLA.NET框架对业务逻辑提供异常强大的支持,所以它是一个对开发人员非常友好的分布式架构。

③数据访问层:数据访问独立于业务逻辑,为访问数据库提供统一的调用接口,这样极大地降低了业务逻辑于数据访问的耦合性;CSLA.NET在数据访问层中支持了分布式事务处理能力;

④数据存储和管理层:负责数据在一个持久的数据存储中的物理创建、查询、更新和删除,这一层的功能一般由数据库服务厂商提供。如何对数据库的部署则是构建分布式架构非常重要内容,这取决于数据访问层的分布式事务处理能力。

CSLA.NET在逻辑四层架构的基础上,集成.NET分布式技术支持和作者的设计,非常好地将分布式架构应用到框架中去。

(3)、在分布式架构上对业务逻辑的强大支持

表现层和业务逻辑层之间、业务逻辑和数据访问层之间、数据访问层和数据存储层之间都存在数据验证和数据处理,而为了实现分布式事务处理,这些层中的对象可能会运行在不同的计算机进程中,如何维护他们的统一性,这是是否能够实现分布式架构的关键之一。

为了解决这个问题,CSLA.NET引入了“移动业务对象”这一重要概念,下图是在CSLA.NET中设计的业务对象图:

4:业务对象图

上图4 说明:所谓的移动的业务对象就是指可以在不同的进程或电脑之间移动的对象,它把每一个实体类的属性、字段、方法进行封装。在.NET应用程序中,创建“移动对象”非常方便,就是在类的前面加上[Serializable()],如下面所示:

[Serializable()]

Public class MobileClass

{ }

这是.NET提供的序列化方法。有一点需要注意:不能为移动对象添加太多的数据,否则在网络上面传输将会特别缓慢,最好使用简单的XML数据格式。

CSLA.NET设计了两种方式来传递移动对象,即程序设计中经常谈到的“值传递”和“引用传递”,下面是两种方式的图解:

5:按值传递移动对象 6:按引用传递移动对象

如不需要修改数据,应采用值传递的方式,否则应使用引用传递,引用传递的性能比值传递要差。


2009年4月18日星期六

关于CSLA.NET分布式框架的论文之选题背景和意义

(1)、选题背景
计算机和互联网技术迅猛发展, 而硬件水平远远不能够满足需求,人们越来越依赖于分布式系统,因为分布式系统可以将很小的资源进行汇聚,运用软件设计来解决硬件发展的瓶颈。
我在公司实习的时候,公司的网站在整合时就遇到了技术上的问题,即无法将几个子系统很好的融合起来,因为原来大量的子系统独立地分布在不同的服务器上,现在要统一起来非常困难。要解决目前的问题,可以选择购买高性能服务器,可这样做代价是昂贵的,而且没有可扩充性。公司的高层也马上想到了通过分布式架构来解决这个问题。我结合自己的情况和公司的资源,将研究分布式架构作为实习的一个任务,也当作毕业设计和入职前的锻炼。
不仅仅是网站,在未来的计算机软件领域,对分布式的研究和应用会变得越来越普遍,特别是当硬件的发展面临无法跨越的瓶颈时(目前CPU的频率已经接近极限),人们将会愿意花更多地的人力和物力到分布式系统研究中去。
(2)、课题意义
分布式应用程序是分布式系统一个非常重要的部分,无论是企业软件的开发,还是互联网开发,都大量地运用分布式应用程序,企业内部的大型系统都靠分布式架构支持,国内外许多大型网站也都是基于分布式架构下开发的,比如百度、Google、MSN、亚马逊网站等。
Microsoft公司的.NET平台提供了方便的分布式应用开发技术,包括.NET Remoting、企业服务和Web Services,而CSLA.NET是一个基于.NET平台下开发分布式应用程序的开源框架,它是微软地区总监、微软最有价值专家Rockford Lhotka开发的,该架构大量地运用.NET技术、面向对象思想、以及分布式架构。
下图显示了基于CSLA.NET框架的应用程序基本框架:

图1:基于CSLA.NET框架的应用程序基本架构
CSLA.NET本身是一个非常优雅的开发分布式应用程序的架构,它把在分布式开发过程中需要运用到的底层技术封装到业务对象中,这样要实现分布式架构只需要对业务对象进行调用,那么开发人员就可以集中解决复杂的业务逻辑。目前,已经有许多企业运用CSLA.NET来开发分布式应用程序,从现在的发展趋势看,CSLA.NET在基于.NET框架下的分布式应用开发中将会非常有前途。

一篇关于CSLA.NET分布式框架的论文摘要

摘要
本文主要研究CSLA.NET分布式框架和分析如何开发基于这个框架的分布式系统。首先,通过查阅文献,总结得到基于分布式架构的程序必须满足:程序至少有一部分能够运行在另外一台远程计算机的进程中;并分析出:CSLA.NET框架被设计成一个逻辑四层的分布式架构,它引入了“业务对象”(见图3说明)来维护运行在不同进程或电脑上的程序的一致性。然后,通过阅读CSLA.NET框架的说明文档和分析其源码结构,发掘出了CSLA.NET开源框架分布式架构的特点,整个架构分为三大部分:⑴业务逻辑类库,主要设计了最重要的业务逻辑方法;⑵数据访问门户类库,运用通道适配器模式和消息路由模式,实现了客户端访问服务器只有一个单一的访问和设置入口,从而实现对分布式事务处理的支持;⑶支持类库,主要运用面向对象方法把.NET提供的零散技术封装起来,方便开发人员使用。最后,在CSLA.NET开源框架支持下,结合我在方正阿帕比公司实习的工作,开发了一个小型的分布式应用程序——方正阿帕比项目管理系统,该系统充分利用CSLA.NET框架提供的功能,并大量运用了设计模式、软件工程、UML建模、数据库设计、面向对象设计等知识。

关键字:CSLA.NET框架、分布式架构、分布式应用程序、业务对象、数据访问门户

分布式架构简介,本科毕业论文

在软件开放领域,当软件工程被纳入软件开发的组成部分后,人们就开始关注软件体系架构。软件架构经历了几个发展阶段:客户端/服务器架构(简称CS架构)、传统B/S架构和基于分布式的架构。
(1)、客户端/服务器架构
客户端/服务器架构(简称CS架构)是人们曾经运用最多的,并且一直是软件开发领域的主流应用程序结构。在C/S架构下每个客户端运行单独的应用程序实例,因而不能够适应简单的客户端交互;而且当客户端达到成百上千用户同时使用的时候,服务器的数据库立即成为瓶颈,这是非常可怕的,顷刻之间就可以使服务器崩溃。就算现在系统运行非常良好,可是当需求扩大时这样的架构就要全部重新设计和部署。而随着人们对计算机软件需求的不断提高以及面对越来越复杂的业务逻辑,加上地域的限制,传统的CS架构逐渐暴露出来问题,比如性能下降、无法扩充等。
(2)、传统B/S架构
传统B/S架构中的Web服务器既要负责执行服务器端脚本来完成日趋复杂的网络管理逻辑,又要为浏览器请求内容的需求服务,负载不断加重,已经逐渐成为阻碍系统高效运行的瓶颈。同时,传统的B/S架构在编程逻辑、软件质量、功能实现、执行速度、系统安全、开发效率等诸方面也日益表现出明显的局限性。这些都是传统B/S架构不能解决的问题。
(3)、基于分布式的架构
分布式架构为客户端/服务器架构面临挑战的扩张性问题提供了解决方案,同时也解决了B/S架构面临的性能问题。基于分布式架构下的应用程序独特之处在于:程序的每一个部分能够运行在另外一台远程计算机的进程中,它把软件模块化成一组跨越不同计算机进行通信的对象,提供诱人的可扩充性。下面是分布式架构的模式:

图2:分布式架构调用进程
图2中的服务器进程还可以根据需求不断增加,这样就可以把不同任务分别加在不同的组件中,并且把这些组件部署到不同的服务器上。这样,大型系统的子程序就可以部署在多台服务器上面,当需要增强服务器能力的时,只需要添加新的服务器,可扩充性得到了很大的提高;并且,如果一台服务器出现了问题,不会影响到其他服务器的工作,可靠性也得到了保证。
最后需要指出的是,也要慎重使用分布式架构,虽然分布式架构在解决复杂问题都时有很大的优势,但是分布式架构下的应用程序的开发及部署也是复杂的。
许多开发工具提供商和个人为分布式应用程序提供了许多良好的框架,比如微软的.NET技术提供了.NET远程调用、XML Web服务和企业服务COM+技术,下一节将要讨论的CSLA.NET就是在.NET支撑下抽象出来的一个开发分布式应用程序的框架。