标题: SOA:进步还是革命?
Echo
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14



UID 82
精华 71
积分 5356
帖子 10100
活跃指数 335
LU金币 29960 个
LU金条 1219556 个
阅读权限 200
注册 2003-9-22
 
发表于 2004-7-8 14:37  资料  个人空间  短消息  加为好友  ICQ 状态
SOA这个缩略词现在已是频频见诸报端,似乎将引领软件世界的下一次革命,但是,如何实现SOA?我们是否应该抛弃已经掌握的各种技术转而重新学习新技术?它真的是一场革命吗?让我们走近它,看看SOA究竟是什么?
什么是面向服务的架构(SOA)?目前并没有准确的定义,也没有绝对的准则,事实上,SOA仍然在不断地成熟之中。因此,在本文中,我们会更多地讨论SOA的实现途径而不是理论。
如果一定要给SOA一个定义,那么你可以认为“SOA是一种IT系统,在这一系统里每一个应用都被当做一个服务来调用和管理”。可以看出,SOA的关键是“服务”的概念,W3C将服务定义为:“服务提供者完成一组工作,为服务使用者交付所需的最终结果。最终结果通常是使用者的状态发生变化,但也可能是提供者的状态改变,或者双方都产生变化”。
实际上,与其说SOA是一种技术,不如说它是一种哲学,是一种架构和组织IT基础结构及业务功能的方法,是一种在计算环境中设计、开发、部署和管理离散逻辑单元(服务)的模型。
SOA的目标
今天,任何一个应用系统都不是孤立存在的,需要与其他企业信息系统进行平滑的集成,这就意味着它不仅必须与现有的系统(平台和应用)进行交互,同时在设计之初还应该考虑到它可以在未来的新业务或新应用模块中得到重用。
简单来说,SOA的主要目标包括以下一些:
● 重用与合成 能够在应用之间重用模块并能在内部应用之间实现互交换;
● 松散耦合 把服务使用者和服务提供者在服务实现和客户如何使用服务方面隔离开来;
● 灵活性 每一个应用都有一定的生命周期,因此它应该可以被重新纳入新的模块,支持新的业务需求;
● 开放性和互操作性 以便能在不同平台和环境下共享模块;
● 分布式 使模块可以被远程访问并被集中管理
在这些概念中,“松散耦合”和“可重用”是SOA两个关键概念。SOA具有“松散耦合”的组件服务,这一点区别于大多数其他组件架构,大多数松散耦合方法都依靠基于服务接口的消息来实现,这种接口能够兼容多种传输方式(如HTTP、JMS、TCP/IP、MOM等)。基于消息的接口可以采用同步和异步协议实现,Web服务对于SOA服务接口来说是一个重要的标准。当使用者调用一个Web服务时,被调用的对象可以是CICS事务、DCOM或CORBA对象、J2EE EJB或TUXEDO服务等,但这与服务使用者无关。“可重用”设计原则使应用变得更为灵活,它采用通用格式提供重要的业务功能,为开发人员节省了大量时间。
SOA将给企业带来巨大的好处。它可以将IT架构抽象出来,而把IT系统实现的功能以服务形式表示出来,每种服务都清晰地表现出其业务价值,这些服务的顾客(既可能在公司内部,也可能是公司的某个业务伙伴或供应商)就可以得到这些服务,而不必考虑其后台的具体实现技术。当然,在实现SOA时,你并不一定要考虑以上所有目标,你可以采用这些理论准则,也可以彻底忘掉它们,关键是看它们能否带来新价值。例如,有时我们会在特定的平台上(.NET或J2EE)上建立应用系统,虽然牺牲了独立性,但却获得了更高的性能。
SOA与多层结构
多层结构已经广泛地用于各种应用系统中,当我们考虑SOA以及它对应用的逻辑层和物理层的影响时,我们会首先想到多层结构。让我们首先来看看经典的三层结构(图1)。
user posted image
一个典型的三层结构包括用户界面层、业务逻辑层和数据访问层,为了充分发挥这一架构的优势,在系统设计时必须充分考虑层与层之间的交互方式以及各层本身的架构。
采用三层结构最重要的目标是获得足够的灵活性和组件重用能力,要实现这一目标就必须降低各层之间的耦合程度。在一个多层结构系统中,各层之间的通信依赖于应用的物理架构,当有些层是驻留在远程机器上时,应该采用.NET Remoting或Web服务;但当所有层都驻留在同一台机器上时,在内存中直接完成层调用将获得最佳性能。
无论怎样,不同的层之间都需要交换数据而不是对象参考,为此必须遵守两条准则:
● 数据对象必须被串联成二进制字符串或文本字符串;
● 数据对象必须与其原始的数据源相分离,一个数据对象可以以多种方式存放在多个容器中,因此在数据对像中不要包括映射编码。
在三层结构中,数据访问层通过选择或修改查询完成与数据库之间的交互,因此这一层中的编码自然与特定的数据库耦合在一起。例如,针对Oracle数据库设计的数据访问层将不会兼容MS SQL Server;同样,如果数据访问层的设计是针对XML数据格式的,那么它也无法用于对LDAP目录的访问。
从图2中可以看出,BLL层只能调用某一个特定的DAL层(针对某种特定数据库的数据访问层)
user posted image

顶部
Echo
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14



UID 82
精华 71
积分 5356
帖子 10100
活跃指数 335
LU金币 29960 个
LU金条 1219556 个
阅读权限 200
注册 2003-9-22
 
发表于 2004-7-8 14:40  资料  个人空间  短消息  加为好友  ICQ 状态
为了保证BLL与DAL之间相对的独立性,必须采用某种抽象机制,即我们常说的“代理”机制。在这一机制中,BLL将请求发给代理,然后由代理完成对DAL的访问。
SOA与面向对象
面向服务的架构(SOA)并不是一个新概念,它与面向对象(Object-Oriented)概念有很多类似之处。你可能倾向于SOA也可能更看好OO,不过,无论观点如何,了解二者之间的异同都会对你有所帮助。
首先让我们回顾一下面向对象(OO)的概念,图3是一个面向对象模型的典型三层结构。
user posted image
从图3中可以明显地看出表现层与业务对象的依存关系:客户代码必须与业务层的对象模型交互,这就加强了二者之间的耦合并且需要在层与层之间进行大量的调用。当业务对象驻留在远程机器上时,这种相互之间的频繁调用就会带来很大的问题。同样,表现层对业务对象的操作也降低了层与层之间的独立性,使得对业务层的调用变得很困难。
现在再来看看SOA。图4是一个面向服务的架构(SOA),它所涉及的业务对象与上面所列的相同。
user posted image
从图4中可以看到,我们引入了一个叫做“服务”的抽象层。表示层不再直接操作业务对象,而是通过服务去访问它们,业务对象驻留在类库里,由服务将它们加载到内存中。此时,因为服务层和业务层都处在在同一流程中,因此对业务对象的操作就变得很容易了。你可以把“服务”看成一个“黑盒子”:它操作业务对象,然后给出结构,从而减少了层与层之间的交互。
对比两种模型,我们不难看出,“全对象”方法存在一定的局限性,与我们所期望的相反,这种局限性也包括“重用”。在“全对象”模型中,层与层之间相互耦合,只有降低耦合度并通过去除不同层中对象之间的直接调用来降低它们相互之间的依赖性后,各模块才能变得更易于重用。
在对象模型中,不同的层在对象的整个生命周期中都是耦合的,即一个逻辑层中的对象在被其上层调用过程中必须是“活的”,而在SOA中并无此要求。在SOA中,内部模块的调用必须支持异步模式或非连接模式。
那么,SOA的出现是否意味着OOP的消亡呢?当然不会!虽然微软公司Indigo的架构设计师Don Box宣称SOA将使面向对象编程方法黯然失色,但事实并非如此!实际上,我们甚至可以把SOA看成是向纯面向对象编程方法的回归。还记得对象理论吗?“对象交换消息并互相调用”,至少在C++、Java和.NET中仍然包含了这些概念,或许SOA将使它们重获新生!
SOA的优点
SOA的出现改变了人们编写应用软件的方式,它要求开发人员将应用设计为服务的集合,并充分考虑现有服务的重用以及如何让新开发出的服务能被其他项目重用。“单独的”、“独立的”、“封装完善的”服务所具有的一个关键好处是可以采用多种不同的方法重新组合它们以形成新的应用。
在应用开发中,采用SOA还会带来很多潜在的优点,其中最主要的包括以下一些:
● 编码灵活性 可基于模块化的低层服务,采用不同组合方式创建高层服务,从而实现重用。此外,由于服务使用者不直接访问服务提供者,因此服务实现方式本身也是灵活的。
● 明确开发人员角色 可以充分发挥开发人员的长处,提高开发效率。例如,熟悉BES的开发人员可以集中精力在重用访问层上;协调层开发人员则无须特别了解BES的实现,而是把精力放在解决高价值的业务问题上。
● 支持多种客户类型 借助精确定义的服务接口和对XML、Web服务标准的支持,SOA可以支持多种客户类型,包括PDA、手机等新型访问渠道。
● 更易维护 服务提供者和服务使用者的松散耦合关系及开放标准的采用使得系统的维护变得更容易。
● 更好的伸缩性 依靠服务设计、开发和部署所采用的架构模型实现伸缩性,服务提供者可以彼此独立地进行调整以满足服务需求。
SOA不仅带来了开发上的好处,它还具有管理上的优点。例如,管理员可以直接管理开发人员所构建的相同的服务,这远胜于以往管理单个应用的方式,通过分析服务间的交互,SOA可以帮助企业了解何时以及为什么业务逻辑被切实执行了,这使管理员或分析师能够有针对性地优化业务流程。
显然,SOA是一种颇具吸引力的架构,因为它具有显著增加应用敏捷性和降低应用总体拥有成本的潜力。
·相关链接·SOA的关键概念
松散耦合
松散耦合是SOA的基本概念,你会在许多场合遇到这个词。在SOA中,松散耦合要实现以下三个主要目标:
● 降低模块之间的耦合度以更好地重用模块;
● 降低平台与基础设施之间的耦合度以获得更好的互操作性;
● 降低服务客户端与该服务特定实现之间的耦合度以获得更好的灵活性。
服务
SOA中最关键的词自然是“服务”,尽管已经有很多人给“服务”下过定义,但要准确地定义它仍然不是件容易的事。在这里,我们给服务下一个简单的定义:“服务是一种可以被调用的模块,它被赋予特定的功能并且有一个定义良好的接口”。
需要注意的是,这里的“服务”并不仅仅是指“Web服务”。事实上,即使不采用Web服务,你也可以实现SOA;相反地,部署Web服务并不意味着你实现了SOA,Web服务仅仅为SOA的实现提供了一种技术手段,用消息队列方式也可以实现SOA。
服务的种类有很多,它们既可以是本地的也可以是远程的。例如,一个服务既可以在Internet上通过SOAP和WSDL产生也可以是数据库、目录等。任何一个服务都是在特定的应用中产生的(很少有人会无缘无故地发布服务),但在设计时必须充分考虑可重用性,使得它也可以用于其他场合。类似地,服务必须被设计成既能被本地调用也能被远程调用。
功能惟一
在SOA中,任何一个服务都必须提供惟一的功能。在图1中,服务A需要认证服务使用者的合法性。
user posted image
显然,这种方式并不是最恰当的,更好的方式是将认证置于该服务之外,使其本身也成为一个服务——服务B(图2)。
user posted image
如此一来,服务A就只提供业务功能,对调用者的认证就依赖于提供认证功能的服务B。这种功能细分带来的额外好处是其他服务也可以利用服务B来完成对调用者的认证(图3),从而避免了在每个服务中重复地编写认证代码。记住,在SOA设计中的DRY原则:Don’t Repeat Yourself(千万别重复你自己),在一个系统中,每一种服务都应该是惟一的和定义明确的。
user posted image
服务接口
在SOA设计中,模块的设计必须从使用者的观点出发。服务是由提供者和使用者间的契约定义的,契约规定了服务使用方法及使用者期望的最终结果,因此,服务的接口必须是简单的。另一方面,服务接口应该与服务的具体实现相分离,一种接口可以被多种实现共享,因为对服务使用者来说,他只关心服务的结果,并不关心它是如何实现的。如此一来,服务提供者就能够很方便地用一种服务替换另一种服务而不会影响与服务使用者之间的联系。

顶部
Echo
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14



UID 82
精华 71
积分 5356
帖子 10100
活跃指数 335
LU金币 29960 个
LU金条 1219556 个
阅读权限 200
注册 2003-9-22
 
发表于 2004-7-8 14:42  资料  个人空间  短消息  加为好友  ICQ 状态
ninja.gif

面向服务架构(SOA)的原则


QUOTE
Web service已经不再是新婚的娘子。众多企业都已经创建各种实验性Web Services 项目,事实证明,这项新兴的分布式计算技术确实能够降低集成和开发的成本。另外,一些关键的Web Services标准纷纷制定,强安全(robust security)和管理方面的产品也陆续问世。对于志向远大的企业来说,他们已经在考虑下一步了。 对大多数公司来说,下一步要考虑的不再是点对点的应用,而是Web services在企业间以及业务伙伴间更为宽广的应用。这种技术的变迁需要更松散耦合、面向基于标准的服务的架构。这样一个架构要求对IT在组织中的角色有新的观点和认识,而不仅仅是一种实现方法。通过对业务的敏捷反应,企业可以得到实实在在的回报,而要达到这一点,面向服务架构设计师的角色非常关键。除此之外,潜在的回报更是不可胜数-分布计算技术能够保证对业务需求足够灵活的反应,而这种业务上的敏捷正是各公司梦寐以求而目前还遥不可及的。
分布式计算将网络上分布的软件资源看作是各种服务。面向服务架构是一种不错的解决方案。但这种架构不是什么新思想;CORBA和DCOM就很类似,但是,这些过去的面向服务架构都受到一些难题的困扰:首先,它们是紧密耦合的,这就意味着如分布计算连接的两端都必须遵循同样API的约束。打比方说,如果一个COM对象的代码有了更改,那么访问该对象的代码也必须作出相应更改。其二,这些面向服务架构受到厂商的约束。Microsoft控制DCOM自不必说,CORBA也只是一个伪装的标准化努力,事实上,实现一个CORBA架构,经常都是在某个厂商对规范的实现上进行工作。
Web services是在改进DCOM和CORBA缺点上的努力。今天应用Web services的面向服务架构与过去不同的特点就在于它们是基于标准以及松散耦合的。广泛接受的标准(如XML和SOAP)提供了在各不同厂商解决方案之间的交互性。而松散耦合将分布计算中的参与者隔离开来,交互两边某一方的改动并不会影响到另一方。这两者的结合意味着公司可以实现某些Web services而不用对使用这些Web services的客户端的知识有任何了解。我们将这种基于标准的、松散耦合的面向服务的架构简称为SOA。
SOA的强大和灵活性将给企业带来巨大的好处。如果某组织将其IT架构抽象出来,将其功能以粗粒度的服务形式表示出来,每种服务都清晰地表示其业务价值,那么,这些服务的顾客(可能在公司内部,也可能是公司的某个业务伙伴)就可以得到这些服务,而不必考虑其后台实现的具体技术。更进一步,如果顾客能够发现并绑定可用的服务,那么在这些服务背后的IT系统能够提供更大的灵活性。
但是,要得到种强大和灵活性,需要有一种实现架构的新方法,这是一项艰巨的任务。企业架构设计师必须要变成“面向服务的架构设计师”,不仅要理解SOA,还要理解SOA的实践。在架构实践和最后得到的架构结果之间的区别非常微妙,也非常关键。本文将讨论SOA的实践,即:面向架构的设计师在构建SOA时必须要做的事情。
SOA的原则
SOA是一种企业架构,因此,它是从企业的需求开始的。但是,SOA和其它企业架构方法的不同之处在于SOA提供的业务敏捷性。业务敏捷性是指企业对变更快速和有效地进行响应、并且利用变更来得到竞争优势的能力。对架构设计师来说,创建一个业务敏捷的架构意味着创建这样一个IT架构,它可以满足当前还未知的业务需求。
要满足这种业务敏捷性,SOA的实践必须遵循以下原则:
* 业务驱动服务,服务驱动技术
从本质上说,在抽象层次上,服务位于业务和技术中间。面向服务的架构设计师一方面必须理解在业务需求和可以提供的服务之间的动态关系,另一方面,同样要理解服务与提供这些服务的底层技术之间的关系。
* 业务敏捷是基本的业务需求
SOA考虑的是下一个抽象层次:提供响应变化需求的能力是新的“元需求”,而不是处理一些业务上的固定不变的需求。从硬件系统而上的整个架构都必须满足业务敏捷的需求,因为,在SOA中任何的瓶颈都会影响到整个IT环境的灵活性。
* 一个成功的SOA总在变化之中
SOA工作的场景,更象是一个活的生物体,而不是象传统所说的“盖一栋房子”。IT环境唯一不变的就是变化,因此面向服务架构设计师的工作永远不会结束。对于习惯于盖房子的设计师来说,要转向设计一个活的生物体要求崭新的思维方式。如下文所写的,SOA的基础还是一些类似的架构准则。
SOA基础
在IT行业有两个越来越普遍的发展方向,一个是架构方面的,一个是方法学方面的,面向服务的架构设计师可以从中有所收获。第一个就是MDA(模型驱动架构),由提出CORBA的OMG模型提出。MDA认为架构设计师首先要对待创建的系统有一个形式化的UML(也是由OMG提出)的模型。MDA首先给出一个平台无关的模型来表示系统的功能需求和use cases,根据系统搭建的平台,架构设计师可以由这个平台无关的模型得到平台相关的模型,这些平台相关模型足够详细,以至于可以用来直接生成需要的代码。
MDA的核心就在于在设计阶段系统就已经完全描述,这样,在创建系统的时候,几乎就没有错误解释的可能,模型也就可以直接生成代码。但MDA有一些局限性:首先,MDA假设在创建模型之前,业务需求已经全部描述,而这一点,在当前典型的动态业务环境中几乎是不可能的。第二,MDA没有一个反馈机制。如果开发人员对模型有需要改动的地方,并没有提供给他们这么一个途径。
SOA的另一个基础是敏捷方法(AM),其中非常有名的方法是极限编程(XP)。象XP这样的AM提供了在需求未知或者多变的环境中创建软件系统的过程。XP要求在开发团队中要有一个用户代表,他帮助书写测试来指导开发人员的日常工作。开发团队中的所有成员都参与到设计之中,并且设计要尽量小并且非形式化。AM的目标是仅仅创建用户想要的,而不是在一些形式化模型上耗费工作量。AM的核心思想就在于其敏捷性-处理需求变更的敏捷性。AM的主要弱点是其规模上的限制,例如,XP在一个小团队和中型项目中效果不错,但是当项目规模增大时,如果没有一个一致的清晰的计划,项目成员很难把握项目中的方方面面。
从表面看来,MDA和AM似乎是相对立的-MDA假定需求是固定的,而AM恰恰相反。MDA的中心是形式化的模型,而AM恰恰要避开它们。但是,我们还是决定冒险把这些不同方法中的一些元素提取出来,放入到一个一致的架构实践中。
在SOA中有三个抽象层次,按照SOA的第一条准则:业务驱动服务、服务驱动技术。AM将业务模型直接和实践连接起来,表现在平台相关的模型之中。MDA并没有把业务模型和平台无关模型分开来,而是把平台无关模型做为起点。SOA必须连接这些模型,或者说抽象层次,得到单一的架构方法。我们将从五个视图的架构实现方法来实现这个连接。
SOA的五视图实现方法
企业架构设计师发现他们的职业非常有竞争力并且值得骄傲,因为他们要从很多方面来通盘考虑IT系统。Kruchten(RUP的开发负责人)将这些方面提取出来,在应用到SOA时,我们称为五视图实现方法(five-view approach)。
四个方框表示对一个架构的不同审视方法,分别代表不同的涉众(stakeholder)。弟五个视图,use-case视图涵盖了其它视图,在架构中扮演的是一个特殊的角色。部署视图将软件映射到底层平台和相关硬件上,是系统部署人员对架构的视图;实现视图描述了软件代码的组织,是从开发人员角度出发的视图;业务分析人员则利用过程视图进行工作,它描述的是软件系统的运行时特性。最后,逻辑视图表示的是用户的功能需求。在SOA中,面向服务的架构必须能够以use-case视图中的用例将用户连接到服务,将服务连接到底层的技术。
为了表示面向对象的架构是如何工作在这些视图之上,让我们将他们置于SOA元模型的上下文之中。SOA中两个领域存在重叠:由业务模型和服务模型表示的业务领域和由服务模型及平台相关模型表示的技术领域(两个领域共享服务模型)。业务用户通过逻辑视图和过程视图处理粗粒度的业务服务,根据变化的业务需求,按照需要将它们安排在过程之中。另一方面,技术专家的工作是创建并维护服务和地层技术之间的抽象层。表示这些服务的中间模型,起到的是轴心的作用,业务以它为中心进行。
SOA元模型从MDA中继承平台无关模型和平台相关模型,但是添加了AM和用户交互以及敏捷的反馈这两部分,后者通过椭圆之间的双向箭头来表现。类似地,元模型通过引入由中心的服务模型提供的中间层抽象解决了AM在伸缩性方面的问题。这样,服务模型中的任何需求的变化,都会反映到用户每天的业务处理中。同样,由于底层技术是模型驱动的,技术专家也可以根据这些变化的需求迅速而有效地作出应变。
SOA实践和过去解决企业架构传统方式的不同之处就在于其对敏捷性的支持。如前所说,SOA的第三条原则就在于它总在变化之中。这种恒在的变化性环境是SOA实践的基石。如图所示,涉众(stakeholders,译者注:RUP中也有这个词,表示软件开发中涉及到的各种角色如:用户、设计人员、开发人员乃至测试人员等等。)在一个必需的基础上影响到整个架构的变化。在当技术专家在每天的日常工作中不断对变化的业务需求作出响应的这种情况下,设计阶段和运行阶段之间的界限变得模糊起来,很难清晰地分离这两个阶段。
剩下的部分
我们已经为面向服务的架构提供了一个高层次的框架,其中MDA和AM的元素帮助工具的使用者来创建和维护SOA。但是,SOA中还缺少一些内容-那就是软件开发商和专业的服务组织必需提供的。理想情况下,开发商必需提供面向服务的业务流程、工作流以及服务的协调工具和服务;另外,能够以一种敏捷的、平台无关的方式充分反映业务服务的建模工具也是必须的;技术专家必须配备可以从模型中自动生成代码,并在代码变化时更新模型的工具,最后,开发商必须提供支持SOA的软件,帮助面向服务的架构设计师以一种可信并且可伸缩的方式创建位于服务和底层技术之间的抽象层次。幸运的是,这方面的产品即将上市。
另外,最重要的就是贯穿本文的自顶而下的SOA实现方法了。今天关于Web services的大部分思考都是自底而上的:“这是如何创建Web services的方法,现在,我们来使用它们集成吧”,对Web services技术的这种方法是伟大的第一步,因为它可以惊人地降低集成的开销,这是现在的技术管理人员最乐意见到的了。但当经济进一步发展,IT走出低谷,企业会寻求IT的帮助来提高组织战略意义上的核心价值。使用面向服务的架构,IT可以提供给企业实现业务敏捷性的这样一个框架。

顶部
无双
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14
天才猪



UID 4
精华 84
积分 5863
帖子 11390
活跃指数 0
LU金币 4248 个
LU金条 0 个
阅读权限 200
注册 2003-9-16
来自 杭州
 
发表于 2004-7-8 23:00  资料  个人空间  主页 短消息  加为好友 
感觉也是分布式技术一种
只是使用数据流与web服务的形式代替corba或dcom的对象直接调用

也就是 只要对方能够处理这个数据流就行 并不要来对方是某个对象的派生者

不知道理解的对不对





不要问我结果 我只研究过程与思路
无双客栈
顶部
无双
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14
天才猪



UID 4
精华 84
积分 5863
帖子 11390
活跃指数 0
LU金币 4248 个
LU金条 0 个
阅读权限 200
注册 2003-9-16
来自 杭州
 
发表于 2004-7-8 23:02  资料  个人空间  主页 短消息  加为好友 
dcom现在ms已经开始使用.net代替

corba由于厂商间标准兼容性差 也在慢慢失去了它的中间件角色

当然现在还有soap或是xml+rpc进行中间件调用 但它们的数据量太大 所有的处理都需要放在服务端进行 难符合对性能要求高的场合

另外还有ice,这只是以前几个corba的巨头合作开发出的结果 语法与实现上类似于corba 但是支持的语言少 只有c++ java php
不知道结果会怎样





不要问我结果 我只研究过程与思路
无双客栈
顶部
 



当前时区 GMT+8, 现在时间是 2008-7-9 16:29
乐悠LoveUnix论坛-京ICP备05005823号

Thanks to Discuz!  © 2001-2007    Power by LoveUnix.net
Processed in 0.093457 second(s), 6 queries , Gzip enabled

清除 Cookies - 联系我们 - 乐悠LoveUnix - Archiver - WAP