EricFan的随笔

导航

对SOA的一些思考

        在国内一家大型的通讯设备制造企业的IT部门工作的3年,让笔者对企业应用软件有了更深的了解。在我门公司,IT部门自主开发和维护着支撑企业业务的大多数软件系统,少量外购的软件,也要由我们进行二次开发以适应公司的特殊情况。目前IT部门开发和维护的软件系统总数有数十个。这些系统绝大部分采用J2EE和.NET开发。早几年的时候,公司还没有统一数据库,各系统自主选择,Oracle、DB2、SQL Server都有,现在基本上都统一到Oracle上了。我刚进公司的时候,各个系统之间的数据交换和互操作还不是太多,基本上是独立应用。到最近几年系统之间的数据交换越来越频繁。由于公司统一了数据库平台,这种数据交换基本上都是在数据库层面进行,通过对外公布视图,或建立DB Link进行远程操作。笔者负责的几个系统,涉及与外系统的数据交换,目前基本上都是采用这两种方法。
        最近看了不少关于SOA的文章,我就在想,如果把SOA应用到我们公司,会是什么样子呢?我们公司的情况与很多大公司一样,有应用多年的非常复杂的软件体系。妄想在一夜之间把整个企业应用体系转向SOA可以说是 Impossible Mission。如果由我来规划,我会首先把各系统共有的一些功能抽象出来,采用SOA构建。一个最明显的例子就是:身份验证与权限控制,这是所有系统都免不了的。另一个例子是工作流(审批流)。有意思的是我们的IT部门曾经想统一工作流调用,为专门成立了平台项目组,结果他们输出的产品是一套.NET装配件,可想而知,这是个失败的尝试,根本没有人费力去使用。如果构建基于SOA的平台系统,则整个身份验证与权限控制,或工作流都表现为一系列的Web Service,应用系统只需要按约定调用这些服务即可。
        实现平台功能的SOA化是整个企业应用结构转向SOA的第一步,下一步则是逐步把各个具体的应用也实现为Web Service。如果整个企业的所有应用都转向了SOA,那么从客户端看,应用系统之间的界限就已经消失。通过在客户端调用不同的服务,可以非常灵活的组合功能,以满足用户多变的需求。这对于IT部门来说,是一个巨大的进步。从笔者的切身体会来看,任何一个企业应用在生命周期中都会遇到频繁的业务流程重组、业务逻辑变化,而SOA的出现为我们提供了灵活重组业务,改变业务逻辑的强大手段。
        到最后的阶段,我们可以把公司对外的接口提供为Web Service,并要求我们的合作伙伴对我们提供Web Service,把SOA延伸到整个供应链。

posted on 2006-05-27 10:50  Eric Fan  阅读(207)  评论(0编辑  收藏  举报