写点什么

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:491270
用户头像

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

关注

评论

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

AI与情感计算:如何让机器更好地理解人类情感与情绪?

天津汇柏科技有限公司

人工智能 AI

类似亲家相亲,亲人朋友帮忙找对象的交友/app/小程序平台开发搭建

网站,小程序,APP开发定制

在京东做AI的95后:我们这样搞定技术难题

京东零售技术

【IoTDB 线上小课 15】树表双模型,到底该怎么选?

Apache IoTDB

云上玩转Qwen3系列之二:PAI-LangStudio搭建联网搜索和RAG增强问答应用

阿里云大数据AI技术

人工智能 rag PAI Qwen3 LangStudio

不止于展“世亚人工智能展·世亚智博会”引领科技与商贸新变革

AIOTE智博会

人工智能展

商超拣货业务流程与常见模式

PeterOne

人工智能 AI 运筹规划

Nacos源码—Nacos集群高可用分析(二)

不在线第一只蜗牛

轮播图导航组件 | 纯血鸿蒙组件库AUI

华哥的全栈次元舱

开发语言 鸿蒙开发 纯血鸿蒙 ArkUI / eTS 鸿蒙组件库AUI

高性能发件箱模式(每天处理20亿条消息)

俞凡

最佳实践 设计模式

Flutter小程序与跨端组装技术:高效App开发的新范式

xuyinyin

MCP 规范新版本特性全景解析与落地实践

阿里巴巴云原生

阿里云 云原生 通义灵码

解决金仓数据库启动报错“内存不足”的问题

金仓技术

KingbaseES 金仓数据库

从彼得·蒂尔四象限看 Crypto「情绪变迁」:从密码朋克转向「标准化追求者」

TechubNews

跨端生态与AI技术协同:移动研发范式的智能重构

xuyinyin

太阳能薄膜频谱吸收率_CST软件仿真案例

思茂信息

cst CST软件 CST Studio Suite

工业计算机:工业领域的智慧大脑

极客天地

天润融通AI Agent实战营成功举办,助力企业革新客户服务模式

天润融通

e签宝智能合同Agent于数字中国重磅发布!

科技汇

天润融通开启AI Agent新时代,引领客户服务智能化升级

天润融通

AI 编程实战:如何用 AI+DevBox 三周开发出 WAF 防火墙(保姆级教程)

硅基新手村

ide AI vscode cursor

【签约快讯|天润融通签约极核电动】

天润融通

天润融通助力工业巨头,从人工派单到智能调度的售后提效之路

天润融通

『Plotly实战指南』--在金融数据可视化中的应用(上)

量贩潮汐·WholesaleTide

Python

当 CEO 患上了 AI 焦虑症(之四):NoETL,万数皆可问!

Aloudata

数据分析 数据开发 指标平台 ChatBI 智能问数

5月13日观测云发布会:这一次,我们不只是发布产品

观测云

产品发布会

【解决方案】DistilQwen2.5-DS3-0324蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践

阿里云大数据AI技术

人工智能 大模型 模型部署 PAI DistilQwen2.5

网络问题导致金仓数据库备机无法加入集群的排查与解决​

金仓技术

KingBase 金仓数据库

发件箱模式实战

俞凡

最佳实践 设计模式

0 代码,一键部署 Qwen3

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

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