周海汉:SOA 将迎来失败

本文探讨了面向服务架构(SOA)的理想与现实之间的差距,分析了SOA面临的规划复杂性、实现难度、系统兼容性及维护成本等问题,并通过与HTML、TCP/IP等技术的对比,说明了SOA在实际应用中遇到的挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SOA(service-oriented archtechtrue)的出发点很好,面向服务的架构,各不同服务都可以协同工作,共享数据,随取所需,随装随拆。这是一种完美化的想法,但其代价是非常大的。这就像当年w3c规划的SGML语言,定义非常完善,想法非常美好,功能非常强大。但真正开花结果的,却并不是完美的SGML,而是HTML。HTML语言不规范,但容错性好;数据和表现不分离,但写起来简单直观。结果,HTML获得巨大发展,而SGML处于一种精神上的指导地位,而没法实际应用。还有情况不完全一样的TCP/IP 四层协议和ISO的OSI七层协议框架。工业上的标准是TCP/IP,而不是标准组织的OSI。

在IT界还有想法美好但应用困难的例子,如CORBA。这也是SOA的基础之一。CORBA的想法是跨平台,跨语言,跨机器的远程调用,就跟使用本地服务一样。但是其实现的复杂性,出问题后维护的困难性,多厂商实现的不兼容性等问题,使该技术裹步不前。

再如COM和COM+,将二进制代码封装起来,提供接口给外界调用,实现代码重用和无差异的远程服务。该技术不能说他完全失败,但绝对不能说成功。许多程序人员为了开发COM组件绞尽了脑汁,结果却是不稳定,不安全,难维护,其复制性带来的坏处远远大于可重用带来的好处。

SOA的提出,是因为Java,C#和XML等语言和标准的出现,增加了人们对协作的期待。因为Java,C#(.net)都是byte级编译的,可以跨平台和语言实现调用。而XML作为格式化的可自定义的字符文档,为数据传递带来了便利。但是,SOA还是不能成功,技术提供厂商的热闹远远多于真正应用。

因为,要实现SOA,首先必须对各服务进行定义,规范和计划,而不是想到什么做什么。计划的过程是相当复杂的,因为各业务千差万别,还经常变动,要抽象接口不容易。其次,规划好后实现起来也相当困难。会碰到各差异化系统不兼容的问题。因为SOA并没有一个标准组织来制定接口。也没法定义一个都适用的接口标准。就算有了标准,还会碰到遗留系统如何同新系统兼容的问题。如数据如何转化的问题。性能瓶颈的问题,安全问题,容量问题。就算实现了这套系统,运行和维护起来也相当困难。由于系统的复制性,使用上就需要大量的培训。而就算使用者没有问题了,一旦系统出错,维护起来也困难重重。企业不得不付出很大的代价来养专门的维护人员。而这套系统一般不会只购买服务,而不购买系统。因为这牵涉到企业的机密,数据不可能让别人掌握。所以运维的巨大代价企业不得不承受。这对中小企业来说,从规划到实现到运维所付出的高昂代价,很可能是不可承受的。就算一套系统直接能够拿去用,他们也没有这个技术实力来运维一套SOA系统。

因此,虽然SOA被国外的技术提供商炒作的很热,但市场并没有真正成长起来。吆喝要多于实现。过几年可能就慢慢销声匿迹了。当然,大量的智慧投放到这个设想上,不可能完全没有影响,相信其在局部还是能够带来成功。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值