JSON Web Service 的概念
阅读本主题以了解 JSON Web Service 背后的概念。
Web service
Web Service 是在网络可寻址位置托管的软件功能的通用术语。 从这种通用含义上讲,它可暗指基于云的服务、实用程序服务或甚至是部门应用程序。 还可以在更具体的意义上使用术语 Web Service ,例如使用 SOAP 的托管服务 (使用 WSDL 文档进行描述)。 这是术语 CICS 中的 Web Service通常隐含的更具体的含义。 但是,在描述基于 JSON 的服务时,具有更通用含义的该词汇通常由 JSON 社区使用。 JSON Web Service 按其通用含义使用术语。
- SOAP 消息的内容是 XML 数据,而 JSON 消息包含 JSON 数据。 JSON 和 XML 是用于描述结构化数据的不同编码机制。 JSON 通常是更高效的编码机制,所以典型的 JSON 消息将比同等的 XML 消息更小。
- JSON 易于在 JavaScript 应用程序中集成,但 XML 不是。 这使得 JSON 成为许多移动应用程序开发者的首选数据格式。
- SOAP 提供一种用于将头添加到消息的机制,并提供一系列服务质量规范(例如,安全配置和分布式事务)。 JSON 没有提供此机制,而是依靠底层 HTTP 网络协议的服务。 因此,其提供较少的选项来保护和配置工作负载。
- SOAP Web Service 是使用 WSDL 文档进行描述的。 JSON Web Service 采用不太正式的结构;其倾向于松散耦合并偏好于通过示例进行记录。
- SOAP Web Service 具有包含 SOAP 故障消息的显式错误格式。 JSON 没有同等项。
- JSON 的 CICS 实现派生自 SOAP 体系结构,并共享许多概念和工件。
- 这两者都具有脱机实用程序,这些实用程序可帮助在应用程序数据与外部数据表示之间进行映射。 SOAP 拥有 DFHLS2WS 和 DFHWS2LS,而 JSON 拥有 DFHLS2JS 和 DFHJS2LS。
- 这两种技术的部署机制都涉及 PIPELINE 资源、WEBSERVICE 资源和 URIMAP 资源。
JSON 模式 (JSON schema)
与 SOAP 相比,JSON 的一个缺点是难以记录 JSON 接口的结构。 SOAP Web Service 同时具有 WSDL 文档和 XML 模式的优点。 虽然 WSDL 文档可能不容易理解,但是有许多工具可用于处理 WSDL 文档。
JSON 的最近等效项是在 http://json-schema.org/上提供的 JSON 模式规范。 在编写期间,这是一个草稿规范,其将会通过 IETF 标准化流程。 CICS JSON 助手 (DFHLS2JS 和 DFHJS2LS) 提供此新兴规范的草稿 4 的部分实现。 DFHLS2JS 可用于生成 JSON 模式,而 DFHJS2LS 可用于处理 JSON 模式。
您可以使用 JSON 模式来了解已在 CICS中实现的 JSON Web Service 的有效语法和内容模型。 JSON 模式规范虽然没有与 XML 模式规范相同的工具体系,但是推出的新一代 JSON 工具可能会使用此数据格式。
基于 JSON 的 Web Service 的 CICS 实现
CICS 支持三种方式的 JSON Web Service: z/OS® Connect Enterprise Edition, Request-Response 和 RESTful。 CICS 还支持编程方案,在这种方案中,应用程序可以自行将 JSON 数据转换为 样式的数据格式,也可以从 样式的数据格式转换为 JSON 数据。 COBOL
- z/OS Connect Enterprise Edition
z/OS Connect Enterprise Edition 是可在独立环境中运行的可单独订购的 IBM® 产品。
z/OS Connect Enterprise Edition 提供对 CICS, IMS, IBM MQ 和 Db2®等子系统中托管的 z/OS 应用程序和数据的 RESTful API 访问。 该框架通过公共接口提供对多个 z/OS 子系统的并发访问。
z/OS Connect Enterprise Edition 还提供了允许 CICS, IMS 和 z/OS 应用程序通过具有 JSON 格式的消息的 RESTful API 在 z/OS内部或外部访问任何 RESTful 端点的功能。
要了解更多信息,请参阅在 CICS 中运行 z/OS Connect 服务器。
- 请求/响应
请求/响应 JSON 模式与 CICS中基于 SOAP 的 Web Service 模式非常相似。 Web Service 是使用 CICS中的 PROGRAM 实现的。 PROGRAM 有输入和输出数据格式,使用语言结构(如 COBOL 副本)进行描述, CICS 负责将传入的 JSON 消息转换为应用程序数据,并链接到应用程序。 应用程序将输出数据返回 CICS , CICS 将其转换为 JSON 数据返回给客户端。
在这种情况下,JSON客户端必须使用 HTTP连接到 CICS。
可以采用自底向上或自顶向下方式开发请求/响应方式 JSON Web Service。 在自底向上方式下,使用 DFHLS2JS JSON Assistant 将现有 CICS PROGRAM 公开为 JSON Web Service。 在自顶向下方式中,可以使用现有 JSON 模式开发新的 JSON Web Service 以实现所描述的接口。 在自顶向下方式中,DFHJS2LS JSON 助手用于生成新的语言结构,并且您必须创建应用程序来使用这些结构。
"请求/响应" 模式可用于构建以 COMMAREA 或通道连接的 CICS PROGRAMs 为目标的 JSON Web Service。 请求/响应 JSON Web Service 只能在提供程序方式下使用 (其中 CICS 充当服务器)。
- RESTful
此方案不同于 SOAP Web Service 的方案。 在 RESTful JSON Web Service 的概念中更完整地描述了 RESTful JSON Web Service 的概念。 RESTful JSON Web Service 遵循“代表性状态转移”(REST) 设计模式的体系结构原理。 此设计模式不太可能与现有 CICS 应用程序相关,因此仅在自顶向下方式下可用。
JSON 模式可以在 RESTful 方式中由 DFHJS2LS 处理。 必须编写应用程序来实现该服务,并且此应用程序的行为方式必须因用于入局请求的 HTTP 方法而异。
CICS 实现纯样式的 RESTful 应用程序,其中 POST (创建) GET (查询) 和 PUT (替换) 的数据格式相同。
RESTful JSON Web Service 应用程序必须使用基于通道的程序接口;不支持 COMMAREA。 RESTful JSON Web Service 只能在提供程序方式下使用 (其中 CICS 充当服务器)。
- 程序化方式
在此场景中,应用程序可以链接到 CICS 提供的程序 DFHJSON ,并要求其将应用程序数据转换为 JSON 数据,或将 JSON 数据转换为应用程序数据。 例如,应用程序可能使用此设施来生成要发送到远程 JSON Web Service 的 JSON 数据。 为此,它必须使用 CICS WEB API 联系远程 JSON Web Service。
CICS 没有对请求者方式 JSON Web Service 的内置支持,但是应用程序可以通过利用程序方式来调用远程 JSON Web Service。