写点什么

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

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

关注

评论

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

商品管理中的“DeepSeek” AI赋能零售品牌释放利润空间

第七在线

伟世通×火山引擎:端云协同让座舱更智能

极客天地

vArmor:云原生容器安全的多场景应用实践

字节跳动开源

容器安全架构 零信任隔离 运行时防护 漏洞缓解实践 轻量级沙箱

如何高效爬取淘宝天猫商品数据?【官方API与非官方接口全解析】

Geek_9dbf95

批量获取企业数据 开放 API 电商api接口 免费测试 淘宝天猫

通过Func实现告警多通道发送权重管理

观测云

监控告警

Manus哪有那么神秘,Jeecg的AI流程编排都可以实现

JEECG低代码

AIGC JeecgBoot AI流程 Manus

网易邮箱如何用大数据任务调度实现海量邮件数据处理?Apache DolphinScheduler用户交流会上来揭秘!

白鲸开源

开源 Apache DolphinScheduler Meetup

Apache DolphinScheduler项目2月份进展总结

白鲸开源

Apache DolphinScheduler Open Source

如何挑选项目管理工具:15款系统的全面对比分析

易成研发中心

项目管理工具

分布式锁—Curator的分布式锁

不在线第一只蜗牛

分布式

如何基于LLM及NL2SQL打造对话式智能BI助手

行云创新

AI智能体 NL2SQL 自动生成SQL

谷云科技iPaaS产品3月更新速递|API计费、AI助手功能持续升级

谷云科技RestCloud

AI API 数据集成平台 ipaas

SD-WAN是种怎样的网络技术?可以在哪些行业应用?

Ogcloud

SD-WAN SD-WAN组网 SDWAN SD-WAN厂商 SD-WAN厂家

未来交易,触手可及:全新交易所开发蓝图

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

DApp开发全解析:构建去中心化应用的流程与实践指南

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

初步探索SQL Server 2025 AI相关能力

伤感汤姆布利柏

同行:我所认识的女性AI从业者

脑极体

AI

以认证VMO实践者身份引领企业敏捷性新时代

ShineScrum

项目管理 敏捷、

1688商品列表API接口全面解析

代码忍者

1688API接口

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