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:按引用传递移动对象

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


没有评论: