写点什么

Web Service 同样需要系统化的设计模式

  • 2007-09-08
  • 本文字数:1150 字

    阅读完需:约 4 分钟

最近《Pattern-Oriented Software Architecture》出版了 4、5 卷,联想到现在正快速发展的 Web 服务建设,他们同样也进入到系统化设计、实施的阶段,也到了该应用模式化设计的阶段。设计模式不仅是方法论,很多时候也是实现技巧、代码重构设计思路、解决方案等。Web 服务与 GOF23 提到的面向对象设计模式本身有很大差距,因为它提供的是基于 WSDL 的一个个 API,也就是说它是“平”的,没有所谓的继承关系。

现阶段 Web 服务更多的被架构师设计为应用的“一张皮”,即便这样经过近几年数量众多的 Web 服务建设,它还是形成了很多固定的模式(为了区别于经典的模式名称,这里每个模式名称前都增加了一个“Service”):

l Service Facade:Web 服务是平台、开发语言无关的,那么为了实现无关那就需要把原有的资源包装好,这个意义上讲,Web 服务天生就有很朴素的 Facade 特性;

l Service Adapter:Web 服务间的调用越来越普遍,尤其在互操作或者与合作伙伴 Web 服务交互的过程中,如何使不同 Service Endpoint 互联本质上也是 WSDL 与 WSDL 接口间的交互,概念上适配器就是很不错的选择;

l Service DTO(Data Transfer Object):Web 服务的调用是相对很昂贵的,但客户程序很少有机会决定服务端的接口颗粒度,如果对方颗粒度很小,但自己需要的数据本身就很粗,那么如何将多次调用打包成一个,DTO 就是不错的选择;

l Service Observer:既然架构上 Web 服务被定义为 SOA 环境的普遍技术,那么设计上也更需要面向客户,无论是最终客户应用、人还是客户 Web 服务,很多情况下都需要异步根据既定内容提供消息,Observer 这时候就很有用武之地,进一步还可以扩展为 Service Subscriber / Publisher;

l Service Visitor:虽然现在绝大多数企业内 Web 服务还远没有达到形成双因素依赖的程度,但很多协作方 Web 服务间已经形成了很多基于“服务——请求”链条的双因素依赖关系,当两个服务之间“拆解”有问题的时候,恐怕就是“外来和尚好念经”了,Visitor 是个不错的思路;

l … …

概念上应用这些模式很清晰,但实现上要求架构师有几个“坎”必须跨越:

l 首先,实现上述模式的基础是解决 Web 服务依赖倒置的问题,虽然 WSDL 很好的描述了 Web 服务接口部分的抽象,但服务实体本身必须增加一个抽象逻辑层适配 WSDL 的描述,否则 WSDL 与 Web 服务实体间还是 1:1 的紧密耦合,想通过模式玩点“花样”很难;

l 其次是参数、消息内容上必须(起码是强烈建议)采用 XML 家族的技术,XSD、XSLT、XML 数据访问技术(Xpath / XQuery)等;

l 然后,标准化是时时要考虑的问题,设计模式没有提到版本问题,但 Web 服务发展的太快,为了更好的把他们服务化,供其它客户程序使用,不仅要设计上有好的规划,实现上也要处处留意标准化,因为很多时候要靠相关标准的兼容性保证自己 Web 服务的兼容性。

2007-09-08 19:491290
用户头像

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

关注

评论

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

如何选择分析型数据库?企业级选型指南与 2025 趋势解读

镜舟科技

云原生 OLAP BI 分析型数据库 StarRocks

教学资源管理系统的测试

北京木奇移动技术有限公司

软件外包公司 出版社 教学资源网

新客户 | 美妆智造全面升级:毫秒级查询 + 极致压缩

TDengine

数据库 tdengine 时序数据库

用户行为分析正在被保险行业广泛采纳-ClkLog埋点分析系统

ClkLog

开源 数据分析 画像 埋点分析

CAD背景遮罩使用方法

极客天地

教学资源管理系统的运营维护

北京木奇移动技术有限公司

软件外包公司 出版社 教学资源管理

五个信创小知识汇总-行云管家

行云管家

信创 堡垒机 国产化

3月报|DolphinScheduler项目进展一览

白鲸开源

开源 Apache DolphinScheduler

蔚来汽车智能座舱接入通义大模型,并使用通义灵码全面提效

阿里云云效

阿里云 云原生 通义灵码

CAD测量三维实体表面积方法

极客天地

暖春启幕,巨擘齐聚!2025慕尼黑上海电子展开幕首日盛况直击

极客天地

不到一首歌的时间,AppStudio助你快速搭建 AI 智能体应用!

商汤万象开发者

人工智能 AI

「摩根士丹利」最新人形机器人研报:头部人形机器人公司梳理和趋势分析(附报告)

机器人头条

科技 大模型 人形机器人 具身智能

工业数据治理范式革新:TDengine虚拟表技术解析

TDengine

数据库 tdengine 时序数据库

21日报名截止!CommunityOverCode Asia 2025议题征集倒计时

白鲸开源

开源 Apache DolphinScheduler community

金融行业数字化转型破局:WhaleScheduler如何重塑万级任务调度体系?

白鲸开源

白鲸开源 WhaleStudio 商业案例

企业数字化转型失败频率为什么这么高?

积木链小链

数字化转型 数字化 智能制造

第87期 | GPTSecurity周报

云起无垠

修改下内存配置,DolphinScheduler CPU飙升问题秒解决

白鲸开源

开源 Apache DolphinScheduler 用户案例

扫雷行动派|狄耐克服务万里不停歇,以Ai相伴到万家

新消费日报

CAD图纸中插入图块的详细步骤与技巧

在路上

cad cad看图 CAD看图王

《Operating System Concepts》阅读笔记:p700-p732

codists

操作系统

SpringAI版本更新:向量数据库不可用的解决方案!

王磊

Prometheus 性能调优:大模型和智能驾驶可观测的高基数问题

火山引擎开发者社区

AI 火山引擎

AI超级计算机来了

PowerVerse

AI nvidia 芯片

利用 DeepSeek-R1 模型和计算机视觉微调模型实现马铃薯叶片疾病识别和分类

亚马逊云科技 (Amazon Web Services)

三维模型怎么剖切?三维剖切详细教程来了

在路上

cad cad看图 CAD看图王

CloudWeGo + APMPlus:打造从开发到可观测的一站式体验

火山引擎开发者社区

分布式架构 火山引擎

互联网服务行业怎么定义?需要用到堡垒机吗?

行云管家

网络安全 数据安全 堡垒机

项目管理工具:Jira vs Leangoo

axe

Jira 项目管理工具 办公软件 leangoo

蔚来汽车智能座舱接入通义大模型,并使用通义灵码全面提效

阿里巴巴云原生

阿里云 云原生 通义灵码

Web Service同样需要系统化的设计模式_架构_王翔_InfoQ精选文章