网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 软件工程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
本月文章推荐
.软件工程的七条基本原理.
.SOA:构建更好的企业应用架构.
.利用iTextSharp生成Pdf一个小例子.
.如何配置软件测试环境.
.协议型网络游戏外挂制作之外挂窗.
.Apache APR可移植运行库简介(4).
.SOA的进化(二)标准组织与贡献厂商.
.技术专家带你您走出SOA六大误区.
.质量管理的十三项步骤和八项原则.
.Sun 称Indiana项目并非Linux Copy.
.浅析软件项目管理中的10个误区.
.探讨软件工程概念模型.
.消息与.Net Remoting的分布式处理.
.关于异常的使用心得.
.极端编程的特点及讨论.
.为什么要用UML建模之建模原理.
.动态连接库(DLL).
.要意识到僵尸网络日益增长的威胁.
.利用社会工程学 揭开网络钓鱼(Ph.
.面向对象软件开发的十大原则.

.NET下基于组件的分布式系统动态配置

发表日期:2008-3-23


摘要 动态配置为基于组件的分布式系统提供了一种在线演化的强大机制。本文提出了一种在MS Dot 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>
.NET下基于组件的分布式系统动态配置(图一)
图 1 分布式系统的XML描述

  其中结点用“Assembly”标记表示,有向连线用“Connection” 标记表示。上面的这一段代码描述了一个从“DataProducer”指向“DataConsumer”的系统。

  动态配置算法

  动态配置要求系统在配置前后必需保持一致性,以下提出的一种策略可以实现系统前后的引用一致性,这种方法称之为“钝化法”。

  钝化是指假如一个结点所产生的所有事务已经完成,并且不再会产生新的事务了,那么这个结点就可以进入一个钝化状态。但是,它必需要能够接受别的结点产生的事务,以使其它的结点也可以进入钝化状态。这样一个组件只要等待有限长的时间就可以进入钝化状态。结点Q的扩大钝化集合EPS(Q),由Q以及所有可以导致启动需要Q参与的事务的构件组成。假如一个结点Q的EPS(Q)中的所有结点都处于钝化状态的话,我们就说结点Q是静止的。

  根据静止状态理论(首先由Jeff Kramer和Jeff Magee提出),假如一个结点处于静止状态的话,对它进行动态配置是不会改变整个系统的一致性的。

.NET下基于组件的分布式系统动态配置(图二)
图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语言,也就是对整个系统架构的描述和对系统结构的修改。例如,可以添加一个结点或修改一个有向连线。

  ⑵ 对结点状态的修改。

  ⑶ 实现对系统的动态配置功能,包括添加结点、删除结点、更新结点等。

  评价动态配置策略

  该策略通过为分布式系统每个结点添加自定义属性的方法,并在控制台的协调下,基本上实现了对结点的引用一致性的问题。
上一篇:Linux编程之多线程常用函数使用实例 人气:1007
下一篇:.Net Framework 2.0范型的反射使用 人气:545
浏览全部软件工程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐