如何使用富JavaScript客户端与微服务交换进行信息

日期: 2015-01-14 作者:Stephen Harris翻译:邹雅玲 来源:TechTarget中国 英文

微服务可以解决一系列问题,包括对需求同步响应。 过去二十年中,分布式已经取代了中间层,而根据 RESTful服务的结构我们编写了JavaScript客户端。这种转换促使了Web应用程序的诞生,这种程序与独立的网络应用程序有许多相似之处。然而,AJAX/REST模型仍然存在许多局限性,包括无法实现需求的同步响应。

而微服务可以解决许多上述问题。尽管微服务这个词还没有一个权威性的定义,但是,它却被公认为一个非常专业化的服务,可以满足许多特定功能性需求。由于要更自然,因此,微服务需要将更多注意力集中到其他需求上,例如编排、实时信息、处理多重异步请求、服务调度和安全性问题。微服务除了是网络应用程序的必……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

微服务可以解决一系列问题,包括对需求同步响应。

过去二十年中,分布式已经取代了中间层,而根据 RESTful服务的结构我们编写了JavaScript客户端。这种转换促使了Web应用程序的诞生,这种程序与独立的网络应用程序有许多相似之处。然而,AJAX/REST模型仍然存在许多局限性,包括无法实现需求的同步响应。

而微服务可以解决许多上述问题。尽管微服务这个词还没有一个权威性的定义,但是,它却被公认为一个非常专业化的服务,可以满足许多特定功能性需求。由于要更自然,因此,微服务需要将更多注意力集中到其他需求上,例如编排、实时信息、处理多重异步请求、服务调度和安全性问题。微服务除了是网络应用程序的必要需求之外,在微服务体系结构中,各为服务业是互相关联的。例如,在现实世界中,我们要学会如何使用富JavaScript客户端来实现与多重微服务结构进行信息的双向交流。

工具

该工具包由两个开源的结构组成: Dojo工具箱和CometD信息服务器,用于创建基础的企业服务总线ESB。在该案例中,也应用到了Java程序,但是,Java又可以被归类到任何网络友好程序语言中。可以使用ESB处理微服务信息返回的程序以及路径问题。

组件

在我们的示例应用程序中,包含三个基础组件:

1)JavaScript客户端,使用Dojo编写而成;
2)CometD信息服务前期,使用Java编写而成;
3) ESB,同样是使用Java编写而成

这处理JSON平台构建过程中出现的任意操作请求,并将这些请求以信息的形式发送到信息渠道中。当渠道中(例如微服务信息渠道)的其他参与者接收到这些信息后,他们会分析并采取相应的行动策略。将信息服务器添加到正在开发的架构中会发生戏剧性的变化,让系统中的ESB或者其他接受者通过渡流程将彼此的数据和人类可读信息发送给对方,与之前的单独的简单请求相比,该模式会提供更细粒度的控制功能。

应用Dojo工具箱和Comet D的UI

掌握了浏览器所推送的实时信息,就可以接收到来自于客户端用户界面所发出的异动通讯信息。我们所创建的通讯设备,首先对一个用户起作用,然后在一系列恰当的微服务交互作用下实现查询、存储和分析市场信息的功能。应用程序的连接必须是持久、固定的,因此,模型-试图-控制器会被用于客户端中。应用程序会将发行、商议和订购信息发送到信息总线中,而此时,应用程序也可以将后续内容继续发给总线。

应用特定微服务(Java Servlet 和 json.org)

ESB中任何人都可以接受和处理信息,因此,可以非常轻松地分配负载。本案例所提到的JSON中,不会限制于某种程序语言或者某类平台之间的信息交流。应用REST可以完成微服务的开发工作,简化开发和维护工作,并确保安全性。从根本上来说, 程序需要添加一系列的属性,从而能同时应用多个微服务系统。如下例举了几个REST服务案例:

1.验证标识的确认和生成
2.通过外部微服务的访问实现信息的创建、检索、存储和分析
3.同时访问多个第三方微服务的功能

商业化微服务

许多微服务都是可以在网上免费下载的,但是,同时也会存在许多商业版微服务。例如,一些服务免除了了本地(或者企业内部网络)的数据持久性负担,将重点放在应用程序自身功能上。大多数应用程序都需要存储和检索数据,这种需求可能会即耗时又耗财(特别是针对于那种简单的概念验证),同时也可以潜移默化地决定网络应用程序的整体架构。我们所举例子的特别之处在于,它将数据存储和处理功能变得抽象化。为了完成该任务,允许终端客户选择使用合适的微服务,但是,其中并不包括体系架构中的附加持久化代码。

当使用某些外部服务时,就不可避免地涉及到某些形式的验证协议。在此,我们有可能会看到从给定REST服务中抽象出来的客户端UI的某些优势。例如,该标识具有时间敏感性。在创建REST服务和认证远程微服务的同时就可以生产该标识。在特定的环境下,不管有多少REST服务,它们都可以维护好各自的安全标识,让JavaScript客户端专注于应用程序的介绍和展示。

编排

这种开发环境的最大特点就是,所有的服务之间都是完全分离的,这样就可以从特定的微服务API中抽象出来。在你这样做时,就要遵循小型、透明化、模块化和可扩展服务的SOA原则,而这种服务在保持可扩展性的同时又要兼具分布性。最终我们将创建一种简单、快速、轻量级非线性通讯框架。这样,我们就可以通过ESB与微服务中的任何成员进行双向、多层次的对话。该成果可以让简单却又强大成熟的胖客户端执行任何类型的活动(其中包括数据的查询、存储和分析)、 发送远程流程信息、与本地内联网的其他流程进行互动,等等。

通过使用微服务和信息发送,应用程序可以在获取同步订购请求和反馈之前,就建立一种面向服务的架构。使用像CometD、Dojo 工具包和 Java程序这些工具,我们可以非常轻松地完成异步设计方案,改善用户体验,使代码的维护工作变得更容易。

相关推荐