首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

REST Service 的最佳实践,第 2 部分 REST service 化一个数据系统-2

REST Service 的最佳实践,第 2 部分 REST service 化一个数据系统-2

以更灵活的 Mashup 的视角看业务系统Mashup 和现有的 Web 应用系统Mashup 是 Web 2.0 领域里面一个特别火的词,wikipedia 上的解释是“网络聚合应用,由一个或者多个信息源整合起来的网站或者网络应用”。从企业的角度看 Mashup,应该理解成更“灵活的数据的使用和更简单的应用的构建”。图 3 是一个“客户 360 度信息”的 Mashup。可以看出,在这个 Mashup 中包含五个服务,分别是:①以表格形式展示的客户的基本信息;②以曲线形式展示的沃尔玛的股票信息;③以时间线形式展示的沃尔玛的购买行为;④以柱状图形式展示的客户季度收入情况;⑤以 feed 阅读器形式展示的沃尔玛的新闻。可以看出,这个 Mashup 里面包含的服务来自好几个数据源:①客户的基本信息来自企业的 CRM 系统;②股票信息来自 google 财经;③客户的购买行为来自企业的采购系统;④客户季度销售额来自 google 财经;⑤新闻来自 google news。
图 3. 一个“客户 360 度信息”的 Mashup从上面的例子我们可以看出 Mashup 和现有的 Web 应用系统相比的优势:
  • 一线的业务人员通过“自服务”的方式创建应用。由此,一线业务人员可以“快速响应、快速决策、通过增强的协作”来应对快速发生的问题和变化。和传统的 IT 系统相比,这种让业务人员通过“自服务”的方式构建应用的能力使得 IT 系统的成本大大降低,并且还增强了系统的灵活性。
  • 动态组装和配置的应用满足了企业随需应变的需求。
  • 快速的、动态的创建日常工作中的情景式应用。这些情景式应用一般要求“good enough”就可以,通常都没有 long run 的需求。所以“快速的构建、快速的迭代”的能力对这种应用来说比较重要。
  • 很容易的把来自不同数据源的信息“混合”在一起形成新的洞察力。通过解锁个人桌面系统和企业信息系统的数据源,发布成可供搜索的、可消费的、可被组装的 Feeds,然后在需要的时候把这些数据“混合”在一起,组成新的数据或者应用。
Mashup 和传统系统集成技术Mashup 是 Web 2.0 领域里面一个特别火的词,wikipedia 上的解释是“网络聚合应用,有一个或者多个信息源整合起来的网站或者网络应用”。从企业的角度看 Mashup,应该理解成“更灵活的数据的使用和更简单的应用的构建”。那很多人要问了:从这个角度讲,Mashup 和传统的 BPM、BI、EII、ESB 类似的集成技术有啥不一样呢?我们来分别看一看。
  • Mashup 和业务流程管理系统(BPM)。BPM 是以流程(Process)的系统集成方式,通常需要人的参与。它通常以流程的形式解决长期的、稳定的、企业至关重要的业务。Mashup 不试图去解决这类问题,它主要以灵活组装 Web 服务的形式解决数据的灵活使用、定制化的应用的开发、随机的瞬态的业务目标。通常有浏览器端的可视化工具,使得人们可以自助式的创建这样的灵活的情境式应用。
  • Mashup 和业务职能系统(BI)。BI 是一种传统的发挥数据价值的一种手段。基于数据仓库(data warehouse)。Mashup 不需要依托于数据仓库,它的基本单元就是 Web 服务,widget,gadget。Web 服务提供数据,widget 和 gadget 提供数据的展示。很多的 BI 服务像 OLAP analysis、reporting、data mining 等都可以以 Web 服务的形式作为 Mashup 的源数据。另外 Mashup 也可以为 BI 的服务提供高质量的前端的展示,像现在 Cognos 和 Mashup 的结合就是一个很好的例子,解决了传统 BI 的数据可用性问题。
  • Mashup 和企业信息集成系统(EII)。传统的 EII 是信息集成的过程,通过数据抽象(一系列的结构和命名约定),提供企业范围内的数据的统一的接口和视图。EII 的目标是使得企业里面大量的异构的数据能够以统一的同构视图提供出来。和 BI 一样,EII 也可以为 Mashup 提供很重要的数据源。
  • Mashup 和企业服务总线(ESB)。ESB 是 SOA 里面架构师们特别喜欢采用的手段。ESB 更多的关注应用之间的交互,而 Mashup 是由最终用户创建的,只是针对当前用户的业务场景而生成的一个近似实时的应用。Mashup 可以为 ESB 提供输入,ESB 里面跑的服务也可以被 Mashup 消费。
相对于这些传统的企业集成技术,Mashup 是一种扩展和补充。Mashup 提供更灵活的数据使用和展示,主要关注情景式的、瞬态的应用,就像在引言部分 lily 买书的例子一样。传统的这些集成系统也可以以 Web 服务的形式为 Mashup 提供强大的企业数据源。
Mashup 的解决方案前面两个小节分析了 Mashup 和现有 Web 应用系统以及传统信息集成集成的优缺点,这节主要讲述以 Mashup 技术为基础的解决方案。在业务人员能够创建 Mashup 应用之前,需要把信息和服务发布成为可以 Mashup 的格式,通常而言就是 Feeds 或者 Widgets。
  • 服务化已有的系统。包括数据层,逻辑层,展示层。数据层和逻辑层以 Feeds 的形式提供出来,展示层以 widgets 的形式展示出来。
  • 创建 Mashup 的前端可视化工具。该工具提供简单拖拽、配置就能快速的构建 Mashup。
图 4. 基于 Mashup 的解决方案概念图最佳实践— REST 服务化现有系统RESTify 数据层这一节主要讲述识别、创建和发布数据服务的方法。
识别数据服务
识别数据服务是最关键的一步,主要解决针对一个数据系统,应该提供哪些数据服务。根据该系列的第一篇文章“REST Service 的最佳实践 第一部分:重新解析 REST Service”,读者已经知道,RESTful Web 服务的核心是以“资源”为中心,而这里实体 - 关系图中的“实体”和“资源”在语义上有很大的关联性,所以这里提供一个基于 E-R(Entity-Relationship)模型的识别数据服务的方法论。实体 - 关系图是一个在数据库设计时帮助架构师进行思考的重要的概念图,反映出信息系统的实体以及实体和实体间的关系,因此实体 - 关系图一个很好的手段去发现曝露出去的资源。图 5 是一个在线购物网站的 E-R 图,我们将以此为例,讲述识别服务的方法。
图 5. 一个在线购物网站的实体 - 关系图识别数据服务的步骤如下:
  • 把实体 - 关系图中的“实体”发布成数据服务如图 5 中所以,黄色的方框表示的是“实体”。本质上,这些“实体”对应的是系统的“资源”,可以看出,一个在线购物网站,需要提供的资源包括:买家、卖家、供货商、商品、订单、账单、快递单、购物车、买家评价、分类
  • 把实体 - 关系图中的“关系”发布成数据服务实体 - 关系图中定义的“实体”之间的“关系”为“一对一”、“一对多”、“多对多”的关系。把实体 - 关系图中的“关系”发布成数据服务,这里所说的“关系”不是实体之间的数量对应关系,而是语义上数据依赖、相似关系。实体之间的语义关系有几种,如图 6 所示。
    图 6. 实体之间的语义关系图下面分别来阐述图 6 所示的关系对应的数据服务。
    相同属性
    “相同属性”指的是“实体 A 和 B 有相同属性”。在“在线购物”的这个场景中,由“相同属性”找出来的数据服务可能包括:具有相同“收获地址”的订单;具有相同“风格”的商品,具有相同属性“打折商品”的商品,等等。一个应用场景是:当用户浏览一件 T 恤的时候,假如“T 恤”这个实体的属性有:风格、面料、尺寸、品牌这四个属性,我们可以识别出来跟实体“T 恤”相同属性的数据服务有两类:一类是相同实体类型的,如相同“风格”的“T 恤”,相同“面料”的“T 恤,相同“尺寸”的“T 恤”,相同“面料”的“T 恤”;还有不同实体的具有“相同属性”的数据服务包括:相同“风格”的“裤子”,相同“面料”的“裤子”,相同“尺寸”的“裤子”,相同“面料”的“裤子”等等。
    从技术来讲,“相同属性”这种识别出来的数据服务其实就是给在 1)中识别出来的实体创建了很多不同的查询条件。通过“属性”,把数据服务关联了起来。通过本系统的第一篇文章,读者已经知道了 REST 的一个核心思想是创建相互联系的服务,而“相同属性”识别数据服务的方法,一方面我们可以得到很多数据服务,另一方面,这些数据服务天然的就相互联系在一块,和 REST 的核心思想一致。
    从用户的角度来讲,“相同属性”是一种导航的线索,通过“相同属性”的关系识别出来的数据服务,使得人们获得一种灵活查询数据的能力。
    操作
    “操作”关系是指“实体 A 对实体 B 做了什么操作”。比如在“在线购物”的这个场景中,“买家”是一种类型的实体,“商品”是另一种类型的实体,“买家 A ‘购买’了商品 B”就是“操作”关系的一种实例。
    通过“操作”关系,可以定义的数据服务包括:买家 A 购买的商品列表,买家 A 浏览的商品列表,买家 A 评价的商品列表等等。
    和通过“相同属性”识别的数据服务类似,通过“操作”关系识别出来的数据服务也天然的符合 REST 的约束。
    实体 A 的实例和实体 B 有相同的关系
    “实体 A 的实例和实体 B 有相同的关系”指的是同种类型的实体的不同实例和第二种类型的实体有相同的关系。还是拿“在线购物”为例,买家 A“购买”了商品 C,买家 B 也“购买”了商品 C,那么可以提供一个数据服务为“同时购买商品 C”的买家列表。细心的读者已经发现,这种关系和“相同属性”的关系有相似之处,不同点在于“相同属性”的关系不依赖于第二种实体,而这种关系依赖于外来的实体,识别数据服务的规则是一样。
    和前两种通过“关系”识别出来的数据服务一样,通过“实体 A 的实例和实体 B 有相同的关系”的关系识别出来的数据服务也天然的符合 REST 的约束。
  • 把实体 - 关系图中隐含的“实体”发布成数据服务通过前两种通过“实体”和“关系”的方法,我们已经得到了很多 RESTful 的数据服务,但这并没有把所有的数据服务都找到,还有一类隐含的数据服务。在“在线购物”的场景中,“买家”(一种实体 - 关系图中的实体)可以对“商品” (一种实体 - 关系图中的实体)进行“评价”(一种实体 - 关系图中的关系),过程中产生了一个隐含的实体“评价内容”。
    也就是说,在实体 - 关系图中的“关系”,除了像 CRUD(创建、查看、更新、删除)这些直接作用在另一个实体的关系以外,还有像“评价”、“打分”等关系,这些关系会产生一些新的实体。我们需要分析实体 - 关系图中的关系,识别出这些隐含的数据服务。
佛山思海网络  十八年优质运营商
佛山联通G口大带宽常年优惠促销!
品质服务器托管、租用大特惠!
稳定流畅 24*7售后技术在线
欢迎咨询QQ:983054746
广东佛山电信千兆独享服务器租用低至16999/月!数量有限,赶快抢购 !-思海网络
返回列表