立即领取|华润集团、宁德核电、东风岚图等 20+ 标杆企业数字化人才培养实践案例 了解详情
写点什么

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

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

关注

评论

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

集成融云 SDK 怎么实现多端同步未读数

融云 RongCloud

融云 Web SDK 删除历史消息

融云 RongCloud

融云发送语音消息

融云 RongCloud

中关村软件园与百度飞桨启动AI人才培养计划:AI发展,人才先行

百度大脑

人工智能 百度 人才培养

如何开好每日晨会?

石云升

项目管理 28天写作 职场经验 管理经验 3月日更

微信小程序集成融云 SDK (即时通讯) 集成必备条件

融云 RongCloud

平安智慧社区解决方案,平安社区综合管理平台

13530558032

融云 AMR(Aduio) 播放 AMR 格式 Base64 码音频

融云 RongCloud

提醒小程序的产品文档——大作业心得总结

小匚

产品经理 随笔杂谈 产品经理训练营 极客大学产品经理训练营

SDK 兼容 JSON

融云 RongCloud

融云 Web 播放声音 — Flash 篇 (播放 AMR、WAV)

融云 RongCloud

最高法两会报告聚焦区块链惩治抄袭,区块链在保护网络著作权方面如何作为?

CECBC

法律

区块链如何走向云端?

CECBC

云技术

融云 Web SDK 如何实现只有一个设备登入

融云 RongCloud

使用融云 IM SDK 实现 H5 直播聊天

融云 RongCloud

融云 RTC SDK 集成实现直播,趟坑之旅~~~

融云 RongCloud

集成融云小程序 SDK 遇到的问题

融云 RongCloud

加快数字化发展 建设数字中国

CECBC

大数据

融云 Web 播放声音(AMR 、WAVE)

融云 RongCloud

融云 Web SDK 如何实现语音的收发 ?

融云 RongCloud

Web 端集成融云 SDK 如何发送正确图片消息给移动端展示?

融云 RongCloud

区块链版权保护平台--催生版权保护新格局

13530558032

集成融云 Web 音视频通话踩坑之旅

融云 RongCloud

融云 IM 那些事儿

融云 RongCloud

使用融云 Web SDK 撤回消息

融云 RongCloud

通过融云 WebSDK 简单了解 WebSocket

融云 RongCloud

结合融云 WebSDK 了解 WebSocket 基本原理

融云 RongCloud

集成融云 IM 问题总结

融云 RongCloud

区块链农产品溯源方案,区块链溯源平台

13530558032

融云 CallLib 集成遇到的问题

融云 RongCloud

融云 IM SDK 发送语音消息

融云 RongCloud

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