上一篇:详测:win vista beta1对p2p兼容极差 >>
.NET下基于组件的分布式系统动态配置
关键字 组件、AOP、动态配置
引言
随着分布式系统在各个关键业务中起到越来越多的作用,如银行系统、基础通信系统,而这些业务是需要长时间不间断运行的,因此对系统的演化必需是在线进行的。本文提出了一种在MS Dot Net Framework环境下实现基于组件的分布式系统的动态配置策略。
对分布式系统描述
基于组件技术的分布式系统可以描述为一个有向图,有向图中的结点表示各个组件,组件中的通信用有向的连线表示。关于这样的一个有向图可以通过XML语言来表示,例如:
| <Configuration> <Assemblies> <Assembly NAME="DataProducer" LOCATION="192.168.10.33" PORT="1234" /> <Assembly NAME="DataConsumer" LOCATION="192.168.10.34" PORT="1235" /> </Assemblies> <Connections> <Connection FROM="DataProducer" TO="DataConsumer" /> </Connections> </Configuration> |
|
图 1 分布式系统的XML描述 |
其中结点用“Assembly”标记表示,有向连线用“Connection” 标记表示。上面的这一段代码描述了一个从“DataProducer”指向“DataConsumer”的系统。
动态配置算法
动态配置要求系统在配置前后必需保持一致性,以下提出的一种策略可以实现系统前后的引用一致性,这种方法称之为“钝化法”。
钝化是指如果一个结点所产生的所有事务已经完成,并且不再会产生新的事务了,那么这个结点就可以进入一个钝化状态。但是,它必需要能够接受别的结点产生的事务,以使其它的结点也可以进入钝化状态。这样一个组件只要等待有限长的时间就可以进入钝化状态。结点Q的扩大钝化集合EPS(Q),由Q以及所有可以导致启动需要Q参与的事务的构件组成。如果一个结点Q的EPS(Q)中的所有结点都处于钝化状态的话,我们就说结点Q是静止的。
根据静止状态理论(首先由Jeff Kramer和Jeff Magee提出),如果一个结点处于静止状态的话,对它进行动态配置是不会改变整个系统的一致性的。
|
图2 |
如图2描述的分布式系统,若想要替换M,那么EPS(M) = {C1,C2,A1,A2,M},只要EPS(M)中的所有集合都是处于钝化状态的,那么M就是静止的,也就是说在M静止的情况下,对M进行动态配置前后系统会保持引用一致。
AOP技术的运用
支持动态配置功能的代码,可以理解为非功能性代码,这些代码将会独立于系统的其它功能。为了实现这一部分的功能,可以借助于面向方面编程(Aspect-Oriented Programming,简称AOP)来实现。通过AOP技术的运用可以很轻松地实现对分布式系统的动态配置功能。
在MS Dot Net Framework下,可以依靠监听的机制来实现AOP的功能。在这里需要用到了两个类,ContextBoundObject类和ContextAttribute类。
任何一个继承自ContextBoundObject的类在创建的时候都会为它创建一个Context,我们就可以利用这个Context来实现监听功能。这些起监听功能的代码将会在一个继承自ContextAttribute的类中实现(这种类我们称之为自定义属性类)。如图2中的StateAttribute类是继承自ContextAttribute的自定义属性类,在它的实现中可以加入任何我们想要的监听代码,只要将它“贴”在一个想要被监听的类的定义前面,那么这个类就会被监听,如DataProducer类。
| [AttributeUsage(AttributeTargets.Class)] public class StateAttribute : ContextAttribute{} [StateAttribute ()] public class DataProducer: ContextBoundObject{} |
通过对自定义属性类的实现,我们可以实现对目标的状态的控制,进而达到影响目标行为的效果。这样我们就可以通过AOP技术来对第3部分中提出的动态配置算法加以实现。
控制台的建立
控制台是对分布式系统进行集中管理用的,它的主要功能有以下几个方面:
⑴ 析如图1的XML语言,也就是对整个系统架构的描述和对系统结构的修改。例如,可以添加一个结点或修改一个有向连线。
⑵ 对结点状态的修改。
⑶ 实现对系统的动态配置功能,包括添加结点、删除结点、更新结点等。
评价动态配置策略
该策略通过为分布式系统每个结点添加自定义属性的方法,并在控制台的协调下,基本上实现了对结点的引用一致性的问题。
下一篇:利用数据绑定和模板创建Atlas应用程序 >>
相关文章:
- · 揭开.NET消息循环的神秘面纱
- · .NET设计模式研究之装饰模式
- · 浅谈CLR的内存分配和回收机制
- · .NET下的动态代码编译探索
- · 深入ASP.NET 2.0的提供者模型
- · ASP.NET 2.0编程小技巧两则
- · ASP.NET底层架构探索之进入ASP.NET
- · ASP.NET底层架构之从浏览器到ASP.NET
- · 商业周刊:即时通讯中暗藏的风险
- · 3ds max 7.5扩展版的新特色和新功能
- · 美国编程人员年薪同期增长8.7%为IT业最快
- · 金融时报:Web2.0成恶意代码的沃土
- · Web2.0时代,你得到什么?
- · 冯杰:Web2.0时代,你能得到什么?
- · 24日精选 个人网站站长常用网站推荐
- · 23日精选 Flash导航菜单轻松制作好帮手
- · 22日精选 QQ2006 Beta3开始内测
- · 21日精选 Web创业的十条戒律
- · 18日精选 AutoCAD阵列操作全攻略
- · 17日精选 Lava-Lava标签功能使用指南
- · 16日精选 穿透ADSL路由入侵内网另类伎俩
- · 15日精选 Linux下如何使用USB盘
- · 1日精选 Windows XP中轻松实现共享上网
- · 19日精选 在AutoCAD中快速精确多等分角
- · 18日精选 系统盘符错乱的解决方案
- · 17日精选 Vista新功能:实用的网络地图
- · 14日精选 让旧PC也能享用Win XP
- · 网络追杀:对暴力的依赖将窒息自由
- · IT精英们不断上演十大傻事
- · 博客写出WEB2.0时代赚钱蓝本
- · 监控软件网上热炒 专家称不必大惊小怪
- · Word 12 Beta1“File”菜单功能预览
- · 微软Office12 Beta1组件多达14个
- · Office 12新格式XPS 对抗Adobe的PDF
- · Office12的新增特性——商业智能组件
- · Office12将加入对PDF格式的支持
- · Office12使用XML格式存储文件 回击WPS
- · 微软Office12三项新功能图文详解
