写点什么

是时候考虑 SOA 建设的版本问题了

  • 2007-07-08
  • 本文字数:1478 字

    阅读完需:约 5 分钟

SOA 作为一个软件系统,如果说技术上有个不变的规律那就是——“总在变”,变化也向架构师们提出了如何对 SOA 实施有效版本管理的要求。最近 Boris Lublinsky 分别为微软架构师杂志(《Microsoft Architect Journal》) IBM developerWorks 撰文,介绍他的相关经验。

业务环境的变化常常需要 IT 服务的实现相应作出变化,虽然通过很多新技术或者模式化的实施经验可以帮助我们提供高质量的服务,尽量少的对实现做出变化,但是 IT 技术自身的发展——操作系统、开发工具、开发语言也常常会引发实现上的变化。SOA 自身是个可以有效适应变化的机制,因为它依赖的是抽象的“服务”而非具体的“业务处理”,因此当业务需求变化的时候,一般采用的是变化服务下面的业务处理——修改或者重建,也正因为这个原因,SOA 环境对服务的依赖丝毫不亚于组件开发中的接口。况且 SOA 中很讲究服务的自治性,也就是每个服务独立的修改和维护。当矛盾集中在“自治”与“集成”的时候,SOA 也就到了要考虑版本管理的时候。Boris Lublinsky 在文中提到 3 个引发这一问题的主因:

  1. 服务接口的变化。
  2. 消息的变化,可以进一步细分为“小”变化(“可选”/“必选”的变化、引入新的全局元素等)和“大”变化(修改全局元素、修改枚举值等)。
  3. 实现的变化。虽然理论上这个不会导致服务接口的变化,但是处理上总有些“预处理”和“后续处理”之类的操作,调用的顺序没有变化,但是上下文处理的变化一样会导致最终结果的不同。例如:增加了参数检查后,某些之前成功的调用会变成失败;安全上之前没有数据源(Data Origianl)限制,之后加上了,这样也会导致不符合安全策略调用的失败。

对于上述三种情况,Boris Lublinsky 提出了以下两种解决措施。

  1. 单一服务方法终端地址(EndPoint Address)加版本参数:也就是在调用服务的的时候,同时告诉服务终端一个版本参数,根据这个参数由服务终端决定调用哪个版本的服务方法。
  2. 不同版本服务方法有自己的终端地址:该方式下不需要服务方法前面增加一个版本调度机制,客户应用使用和自己“搭对”的服务方法。

前者虽然在引入新版本的服务方式时对客户程序影响很小,但会带来封装的复杂性,而且随着“坛坛罐罐”的增加,为每个服务方法维护这样一个 if then else 很麻烦。一个改进的办法就是把它们全都集中到一个 Broker 或者 Mediator 上,把判断版本取舍的工作推给它,不过改进方法因为要增加中间环节,所以性能上有损失。

后者实现了 Side-by-Side Execution 的目标,降低了客户程序与服务方法间的耦合。当然,这要付出代价,需要服务注册库在寻址上更加灵活,可以让 SOA 的使用者借助它找到适合它的那个版本的服务方法。

除了应用层面的 SOA 版本问题外,更复杂的是 SOA 基础环境的版本问题,包括:传输机制的修改(例如:HTTP 调用变成了队列调用)和消息编码方式的变化等,Boris Lublinsky 给出的答案很简单——Adapter。相比较“没完没了”的业务服务而言,基础环境中更多的是“相对有限”的技术机制,因此 Adapter 的开发量(或集成工作量)在一个时期内是稳定的。

虽然国内 SOA 的应用在很多企业还是起步阶段,可一旦上了这条船,后续的运行维护工作会越来越繁重,更何况对很多企业而言对 SOA 的定位就是用来“梳理”整个企业关键业务系统间的协作。为了协调好 SOA 环境,现在是该绸缪 SOA 版本管理的时候了。


作者简介:王翔,全国海关信息中心高级架构师,从事海关主要广域分布式系统的设计和实施,多次参与各业务系统的优化。此外,作为信息安全工作组副组长,他还一直致力于应用密码技术和公钥基础设施保障海关业务的安全运行。此外,他还是《程序员》杂志的专栏作者。

2007-07-08 23:05792
用户头像

发布了 61 篇内容, 共 11.6 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

AI 大模型微调训练营毕业总结

gigifrog

基于Java+SpringBoot+Vue前后端分离毕业就业信息管理系统设计和实现

hunter_coder

后端开发

基于Java+SpringBoot+Vue前后端分离癌症患者交流平台设计和实现

hunter_coder

后端开发

autodeskautocad2024序列号【mac/win】

理理

Autodesk AutoCAD 2024 cad2024序列号 AutoCAD2024破解版

基于Java+SpringBoot+Vue前后端分离毕业论文管理系统设计和实现

hunter_coder

后端开发

基于Java+SpringBoot+Vue来访管理系统设计和实现

hunter_coder

后端开发

强大的BT下载工具 uTorrent for Mac 体积小,安装速度超快

理理

BT下载工具 uTorrent

设备指纹市场分析及未来展望

芯盾时代

终端安全 移动安全 风控系统

法律服务机构启用电子签章网上签署法律文书,省时省力提效率

Geek_2a38d5

户外LED显示屏具备哪些性能?

Dylan

广告 LED显示屏 全彩LED显示屏 户外LED显示屏 led显示屏厂家

Avid Sibelius Ultimate(西贝柳斯乐谱软件) v2023.8激活版 西贝柳斯终极解锁版下载安装

理理

Navicat Premium软件下载 Navicat Premium中文版 跨平台数据库软件

理理

id2024下载 Adobe InDesign 2024最新破解版【mac/win】

理理

InDesign 排版设计

PDF密码清除软件 Cisdem PDF Password Remover for mac v5.0.0激活版

理理

PDF pdf文件密码打不开 pdf密码清除

基于Java+SpringBoot+Vue汽车服务管理系统设计和实现

hunter_coder

后端开发

基于Java+SpringBoot+Vue旅游管理系统设计和实现

hunter_coder

后端开发

实战攻略:如何用 TDengine 轻松搞定时序数据建模

TDengine

4K Video Downloader Plus Pro for Mac(4K视频下载器)v1.8.0激活版

理理

MATLAB R2023a中文版安装教程 MATLAB许可证密钥分享 Mac/win

Rose

数学软件 MATLAB R2023b破解版 MATLAB 密钥 MATLAB 安装教程

Microsoft Remote Desktop v10.9.5中文直装版 微软远程工具

理理

mac多媒体影音库:Emby for Mac 中文版下载

你的猪会飞吗

mac软件下载 mac破解软件下载

阿里云 EMR Serverless StarRocks OLAP 数据分析场景解析

阿里云大数据AI技术

大数据 数据分析 OLAP EMR

macs fan control pro中文破解版下载(macs fan control pro序列号)

理理

macOS 14 Sonoma系统下载安装 苹果最新14系统离线安装包

Rose

极限科技荣耀入选《中国数据库产业图谱(2024年)》,引领搜索与分析型数据库新篇章

极限实验室

信通院 极限科技 搜索型数据库 中国数据库产业图谱

基于Java+SpringBoot+Vue美发门店管理系统设计和实现

hunter_coder

后端开发

Maplesoft Maple 2024 for mac/Win:专业的数学计算软件

理理

【最新LR2023安装包】lightroom classic 2023-一键安装-永久使用-中文简体

Rose

AI视界周刊第 1 期:最具性价比 GPT-4o mini 发布、大模型集体失智、语言模型安全漏洞

战场小包

人工智能 行业资讯

基于Java+SpringBoot+vue前后端分离保信息学科平台系统设计实现

hunter_coder

后端开发

DataBuilder2.3.2重磅发布,核心功能全面升级,引领数据治理新高度!

数造万象

数据治理 数据资产 数据开发 DataOps 版本升级

是时候考虑SOA建设的版本问题了_SOA_王翔_InfoQ精选文章