【IT168 专稿】
在前面分析了SOA架构师的重要性,下面将对各种不同类型的开发人员做出分析,并总结一个成功的SOA开发人员所应具备的特征。
传统的三层架构通常包括一个呈现层、一个中间层或应用层,和一个数据层。在某些情况下,开发人员要负责这三层的所有工作。在较大规模的公司中,可能会有专门的UI开发人员、应用开发人员和数据库开发人员等。在SOA中,除了在集成应用时,可以说应用这个概念已经与SOA毫无干系。在SOA中,我们构建的是独立于应用的业务服务。下图列出了SOA所需要的开发人员的类型。
现在来谈谈业务服务。业务服务是各层所有开发人员所做的工作的集合体。比如一个像在亚马逊上所用的“购物车”这样的业务服务,它很可能是由服务和/或寄存在这个架构中的各层组件所构成。呈现层包含最终的使用方式,也就是用户最终看到并在浏览器上使用的样子。业务过程层包含引导用户从开始到最后付款结束的整套逻辑流。业务规则层包含税收、折扣、会员等规则,而底层的数据元素和结构则是在数据层处理的。在许多情况下,由于合并、兼并、多年的遗留系统、第三方应用的购买等诸多因素,公司会使用多种数据结构提供相似的功能。数据层的存在就是为了提取这些数据结构并以相同的形式呈现出来,掩盖底层的复杂实现方式(可以想像主数据管理)。
所以,要开发这样一个购物车的业务服务,所有工作在架构中不同层上的开发人员都要全力协作,并以满足公司所采用的SOA治理中所定义的业务需求与技术需要为前提。其中的技术需要可能是:
· 遵守WS-*安全标准
· 数据加密策略
· 平台无关
· 满足具体的性能要求
为什么要说这么多呢?因为在面向服务的架构中,一个成功的开发人员需要具备以下特征:
· 灵活、变通
· 协作能力
· 可以与同僚一起检查他们的工作
· 能看清大局
· 不会固执地偏好某种特定技术
· 能接受建设性的批评
· 创新精神
那些不容别人批评自己的工作或偏好某一种技术的人可能会在SOA中遇到不少困难。SOA目标之一就是构建灵活、可维护性好、松耦合、与平台无关的软件。要构建这样一个软件就必须从软件开发转向软件工程。简单来说,我们必须从拖曳的工作方式转向计划建模的工作方式。我们必须能够接受协作、同行审查和治理。如果开发人员不喜欢这些东西,他们要么选择改变,要么选择离开。否则他们将成为巨大隐患,并且一直拖后腿。
好了,现在我们来谈谈开发人员的分类。但是在此之前需要强调一下,这里讨论的是分类,而不是个体。在小型企业里,一个开发人员可能会跨越多个分类。在大型企业中,我们可能会看到非常专业化的开发人员工作在架构中的单独一层。最后声明一点:讨论的默认前提是存在一个架构团队,并且各层中存在一定程度的标准与治理。
UI开发人员
如果公司有能力专门化,那么这会是非常棒的一层。这层的开发人员并不需要非常高深的技术。重要的是他们要明白可用性、UI标准和Web界面的非常好的实践。这些人可以从模拟开始,与业务部门或业务分析员合作分析各种情况,最终达到一致的结果。这些开发人员必须能用业务用语和业务部门交流,并且能明白商务用户如何使用网络技术进行交互。