对SEDA,SOA 与 P2P 的哲学分析

SOA,WEB SERVICE, CORBA, EJB, 工作流,面向对象的局部性与面向服务的全局性和松耦合性。

松耦合性的需要来源于对业务变更的灵活性需求。

软件系统应用之初,人们认为软件使得电脑可以象人一样工作。于是把所有的权力都给了它。后来在使用过程中,才逐渐发现,软件其实并不能胜任所有的工作。它也许真的可以拥有智能,但却永远也不可能取代人的决策者地位。这一点是由两个重要因素决定的:

一,软件能接收与理解的信息是有限的。基于有限的信息,很难做出正确的决策。一个不能做出正确决策的行为主体,当然很难赢得信任。所以说,信任是第一个问题;

二,一个在能力上不能被信任的人,当然就不能担当太重大的责任。所以,当软件最终被发现是个白痴的时候,人们要求收回它做决定的权力。

更重要的是,即使软件有朝一日真的能拥有人的智慧,我们仍然需要掌握一定程度上的决策权。因为这个原因,工作流被从以往被认为是万能的软件系统中抽取出来,以使人们重新掌握对业务的控制能力。

在SPRING里面,也有个相似的东西叫做“控制反转”即IOC。与工作流的产生背景一样。人们喜欢权力。

在编程方法中,要求尽量将定义与实现分离。这样的目的是为了提高系统的应变能力。这种方法其实也是最初的SOA思想来源。

与软件的可变性相似的一个概念为可扩展性。

可扩展性与可变性意思是不同的。可变性是针对现有系统而言的,意指现有系统应该可以随时被改变以提供新的业务层服务。而可扩展性是指,系统的设计应该使新元素的加入变得非常简单。

但是,SOA作为一种最抽象的软件架构方法,真的可以做到完全意义上的“可变性”吗?

答案的关键在于“可变性”到底是怎么被定义的。

软件是虚拟现实。这由软件本身的物质性所决定。从人类的认识论来讲,现实世界是由空间与时间组成的。之所以这样说,是因为对宇宙本身来说,存在的只有物质以及物质的运动而已。所有别的东西,都是词语而已。但现在不是讨论哲学本身的时候,现在我们需要做的是借用哲学的手段来解决哲学以外的问题,所以才提一下。回到正题。空间这个词的产生是因为我们看到物质。时间的产生则是因为我们看到物质的变化。而物质的变化本质上又是物质运动的体现。这就是带有被动性的唯物认识论基础。

当我们开始用软件来虚拟现实的时候,带有被动性的唯物认识论开始阻挠我们的思维,于是转而采用唯心主义的思维来考虑软件问题。这里提一下,事实上,到今天为止,小到西方科学的产生和发展,几乎全部是唯心主义的功劳。大到整个人类全部文明成果,也都是在唯心主义思维方式下的成果。甚至,唯物主义本身其实也是唯心主义的一部分。不过,这个是题外话,暂时不表。

主动性的唯心认识论认为人是主宰。人们通过行为改变这个世界。

其中的“行为”与“世界”,反映到软件系统,在OO的思想中,是对象与方法;在SO的思想中,就是状态与服务。

这样,终于又可以回到主题了。前面提到,软件作为一个独立的行为体,基本上已经被证明没有决策的能力,所以决策权必然要被回收。事实上,这在软件学的很多领域中正在发生。控制反转与工作流的思想应用,都是控制权回收思想的体现。

在研究方向上,三者的研究方向是不同的。

SOA研究的是如何在基于服务的基础上构建大规模或复杂应用。因为服务本来就是一个抽象的概念,这使得SOA具有

SEDA研究的是在本地(本机)如何利用有限的时间资源(处理器周期)与空间资源(内存)最大限度地发挥系统本领。

与SEDA名字相似但差别甚大的另一个概念是EDA,意为事件驱动架构,是工作流思想的原型。它在往工作流的方向发展的同时,往另一个方向发展成了SEDA,也即它最终走向两个完全不同的方向。一个是高性能,一个是业务层流程管理。

P2P研究的是如何在一个分布的环境中进行计算工作或者内容分发等工作。P2P的工作环境是整个网络,这跟SEDA的工作环境没有任何交集。

但使用了SOA的架构以后,SEDA可以通过SOA使用外部的计算资源。而P2P可以为非集中的计算或内容分发过程提供近乎完美的性能与用户体验。

你可能感兴趣的:(对SEDA,SOA 与 P2P 的哲学分析)