用例建模-SOA(二)

一.简介

用例建模-SOA(二)_第1张图片

       面向服务的体系系统设计是由多个自治的服务组成的分布式软件体系体统。由于这些服务是分布式的,因此他们可以在不同的节点上运行并由不同的服务者来提供。面向服务的体系结构使用标准的协议来支持服务之间的通信与信息交换。为了使应用能够发现服务并与服务进行通信,每个服务都有一个服务描述。这些服务描述定义了服务的名字、服务的位置以及服务的数据交换要求。服务意在自包含和松耦合,这就意味着服务之间的以来尽量最小化。当需要访问多个服务并且对这些服务的访问需要进行排序的时候,可以使用调度服务而不是让一个服务直接依赖另一个服务。服务设计的几个原则:

  • 松耦合:服务之间应该相互独立。
  • 服务锲约:提供输出和输出参数,通过服务体系可以调用服务。
  • 自治:每个服务都是自包含的,这使得服务能够在不需要其他服务的情况下独立运行。
  • 抽象:隐藏服务细节。
  • 可复用性:设计可复用的服务。
  • 可组合性:服务被设计成能够组合成更大的复合服务,在一些情况下,一个复合服务也需要提供各个服务之间的协调。
  • 无状态性:在可能的情况下,服务几乎不保持任何关于特定客户端的信息。
  • 可发现性:通过服务发现被发现。

二.三种软件体系结构

2.1 代理者模式

       在代理者模式中,代理者扮演客户端和服务之间的中介角色。服务向代理者注册,客户端通过代理者定位服务。在代理者代理了客户端和服务之间的连接后,客户端和服务之间的通信可以直接进行或者通过代理者进行。

  • 服务注册:服务向代理者注册服务信息,包括服务名称、服务描述和提供服务的位置;如果服务重新定位,它需要向代理者重新注册并提供新位置。
  • 代理者转发:客户端请求服务,代理者收到请求后,将信息转发给该服务,该服务被调用后代理者将结果转发回客户端。
  • 代理者句柄:代理者返回客户端一个用于和服务之间通信的句柄,而不是转发每条客户端消息给服务。
  • 服务发现:客户端发送一个查询请求给代理者,请求给定类型的所有服务。代理者回复满足客户端要求的所有服务列表,客户端选用一个服务,代理者返回该句柄,客户端用这个句柄直接和服务通信。

2.2 事务模式

     事务是客户端对两个或者更多操作组成的服务请求,这些操作属于同一个逻辑功能,并且全部完成或者全部不完成(回滚)。

2.2.1 复合事务

     一个事务包含几个扁平的事务,其中某个扁平服务失败不影响其他的扁平服务。

2.2.2 长事务模式

       长事务是一种需要很长时间甚至可能无限长时间来执行的任务,这是因为每个行为是不可预知的,它可以将一个长事务分成多个单独服务,使得人的决策发生在连续的事务之间。

2.3 协商模式

       在某些面向服务架构中,服务之间的协调机制中包含软件主体之间的协商,从而使它们共同做出决策。在协商模式中,一个客户主题提出一个服务提议后,服务主体向客户主体提出与客服主体相近的选项,客户主体可以选择其中一个选项也可以拒绝。

三.服务协调

       设计到多个服务的面向服务的体系结构应用通常需要在这些服务之间协调,为了确保服务之间的松耦合,将协调的实现细节和各个服务分离比较好。在涉及多个服务的过程,需要通过协调机制控制对各个服务的访问顺序。协调机制包括编制和编排。

四.服务复用

      服务设计好之后就可以复用了,尽管一个服务可以调用另一个服务操作。但这样会会导致该服务依赖其他服务,从而降低服务复用性。所以建议服务只有服务接口没有请求接口。

你可能感兴趣的:(方法论)