C2 的新世界

原创 2002年06月17日 09:15:00
 

最近一段时间一直在做基于DCOM 的构件组装工具,学习的过程不忘与大家共同进步,所以这里将介绍一种构架(Architecture)语言的风格。该种风格由ICS of University of California, Irvine  提出并且实现。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

C2 Component and Connector )是一种基于组件和消息的架构风格(既然是风格就应该有许多种,C2 只是其中的一种),该风格对于构造灵活且扩展性强的软件系统是大有陴益的。C2的最大的特点就是组件之间(between Components )的交流一定要通过消息的传送即连接器所提供的功能才能达到。

 

在一个特定的构架之中,所有的组件都会处于一种严格的等级制度之中,象中世纪的欧洲一样,骑士必须对领主忠诚,而领主必须队国王忠诚。在C2的构架之中,一个组件只能感觉到等级高于自己的组件提供的服务,而感觉不到等级低于自己的组件的服务。正是这种单向的传递性使得用C2 风格组装起来的系统变得易于维护和扩展。这个问题很好理解,如果构架之中存在回路的话,那么一个组件所要求的服务也可能就是它自己提供的服务,而这本身就不可能。

 

也可能还有些问题读者没有弄太明白,我先解释一些,但是我这里只是一些简单的说明,如果读者有兴趣,就可以看我在文章后提供的一些网址。

 

什么是构架?在我看来就是软件系统在开发者眼中的一种高级抽象结构,形式化以后就是ADL Architecture Description Language)。这种语言用于对于系统的粗粒度的组件和组件之间的联系的一种高层抽象。粗粒度就是指这里的组件可是是单个组件,也可以是一个组件包。构架描述语言真正地减少了系统设计者的负担(设计者会说,我所提供的设计是用描述语言来写的,这很规范而且清晰,不是吗?),因为系统设计者的工作就是系统级别的设计,任何逼迫他或她去做本来应该是程序员做的事情的方式都是不恰当的。

那么有人会说,这样不是同样增加了程序员的负担了吗?因为他们又要花时间去学习理解ADL 了,这确实是个问题。但是我们正在致力于解决这个问题,通过利用对于ADL 的包装和分析 以及我们即将开发的可视化的自动组装工具,我们的目标在于你只要在工具的客户区按照你的需求拖动和组装你所需要的组件,该工具就可以帮你自动组装这些组件甚至能够生成软件系统。

 

让我们重新回到C2 的世界,先让我们来看看 C2 到底有什么风格?C2 的架构风格用来支持那种具有图形化界面的应用程序,但同时也具有支持另种类应用程序的潜力。

 

l         基于组件的风格。我们可以用各种各样的语言写组件,比如 C++ , Object Pascal, Cobol, Perl 。在架构之中组件很容易就可以重用或者取代。

l         可升级性。组件可以在分布式的环境下运行,既不需要在一个地址空间内运行。

l         灵活性。概念上的架构和实现上的架构是不同的,多个实现上的架构可以实现一个概念上的架构。

 

下面再说说C2 的两个主要方面的规则:

1.  组装规则

C2 中有两种基本模块:组件和连接器。一个C2 的架构就可以简单地说成是一系列并发的由连接器连接的组件。组件和连接器都有顶端和底端。它们以下面的方式发生关系:

l         组件的顶端必须对应连接器的底端。

l         组件的底端必须对应连接器的顶端。

l         一个连接器原理上可以连接无限的组件或者连接器。

l         当两个连接器发生关系,它们必定是顶端对应底端。

 

2.  交流规则

所有的C2 构架中的组件必须也只能通过消息来达到交流的目的。每个组件有个顶端和底端。顶端向上发服务要求或者响应上面的通知。底端向下发通知或者响应下面的服务要求。这是一种半工状态因为一个组件只能感觉到等级高于自己的组件提供的服务,而感觉不到等级低于自己的组件的服务。

 

最后强调一点,C2 专注于系统的概念构架而不是实现构架。UCI 已经用C++ JAVA实现了C2 的实现构架。构架是动态地被构造的。

 

 

下面是一个关于 C2 的网址

http://ftp.ics.uci.edu/pub/c2/publications.html 里面是些关于C2 的论文,很全。

 

《美丽新世界》读后感

《我们》、《一九八四》和《美丽新世界》并成为反乌托邦三部曲。《我们》饱满,《一九八四》激越,但《美丽新世界》或许更深刻,更接近可能的未来。作者预言了这样一个世界:从二战的动荡与秩序混乱过渡到秩序井然有...
  • ajksunke
  • ajksunke
  • 2016年11月04日 19:53
  • 179

【NOIP2016复赛模拟赛】朋友

问题描述 mxy 即将前往新世界。 在前往新世界的过程中,ta 遇见了两种人。一种是只和lowb 做朋友,即当且仅当自己 的能力值大于对方时他们会成为朋友,另一种是大神我们做朋友,即当且仅当自己...
  • Fallen_Angel001
  • Fallen_Angel001
  • 2017年05月17日 20:01
  • 199

[编程题] 创造新世界

题目来源:牛客网[编程题] 创造新世界 众所周知计算机代码底层计算都是0和1的计算,牛牛知道这点之后就想使用0和1创造一个新世界!牛牛现在手里有n个0和m个1,给出牛牛可以创造的x种物品,每种物品都...
  • Cathy1994
  • Cathy1994
  • 2017年03月30日 14:51
  • 333

【读书】时代的变换,互联网构建新世界

本书作者是腾讯学院培训专家徐昊和腾讯移动互联网事业群副总裁马斌两位大大,另还有马化腾的推荐序。同事买了这本书,就借过来一周看完了。 这本书从科技、媒介、人文三个维度对互联网的发展脉络及其变化进行了梳理...
  • VIPToby
  • VIPToby
  • 2015年01月27日 11:13
  • 422

[Music]a whole new world

a whole new world i can show you the worldshining, shimmering, splendidtell me, princess, now when d...
  • stdotleo
  • stdotleo
  • 2004年10月22日 17:12
  • 933

【NOIP2016复赛模拟赛】楼层

问题描述 mxy 感觉新世界的大门打开了。 ta 决定要在新世界的旅馆中找间房住。已知新世界每天都有一个高能的数字t,这个 数字在楼层中是不会出现的。我们以t=3 为例,则3,13,31,33 ...
  • Fallen_Angel001
  • Fallen_Angel001
  • 2017年05月17日 19:53
  • 200

E5 2670 V1 C1 C2版本区别

The Intel Xeon E5-2670 V1 is an 8 core 16 thread chip that supports up to 1600MHz DDR3 RDIMMs and du...
  • loveanao
  • loveanao
  • 2016年01月22日 12:10
  • 43153

JTAG/C2 接口定义

JTAG/C2 接口定义 C8051F的JTAG接口是如何定义的? JTAG接口如下:(适用型号C8051F00x C8051F01x C8051F02x C8051F04x ...
  • u010980705
  • u010980705
  • 2016年11月15日 11:35
  • 501

url包含特殊字符串%C2%A0

String uri=  http://uk.louisvuitton.com/eng-gb/products/zippy-wallet%C2%A0-epi-000924#M60964 在游览器访问...
  • w903068063
  • w903068063
  • 2016年11月14日 10:04
  • 1398

c2a0 这样的空格 NO-BREAK SPACE

ascii中的空格,编码是 32, 040 或者 x20。在UTF-8编码里面存在一个特殊的字符,其编码是“0xC2 0xA0”,转换成字符的时候表现为一个半角空格,跟一般的半角空格(ASCII 0x...
  • u012063703
  • u012063703
  • 2016年01月22日 12:52
  • 1613
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C2 的新世界
举报原因:
原因补充:

(最多只允许输入30个字)