JSON の Web サービスの概念
JSON の Web サービスの背景にある概念について理解するには、このトピックをお読みください。
Web サービス
「Web サービス」は、ネットワーク上のアドレス可能なロケーションでホストされるソフトウェア機能を指す一般用語です。 このような一般的な意味では、クラウド・ベースのサービスやユーティリティー・サービス、さらに部門アプリケーションを指す場合もあります。 「Web サービス」という語は、さらに特定的な意味で使用されることもあります。例えば、WSDL 文書で記述された SOAP を使用してホストされるサービスなどがこれに該当します。 これは、通常 CICS の Web サービスという用語で示される、より具体的な意味です。 しかし、JSON コミュニティーが JSON ベースのサービスに言及するときには、多くの場合、より一般的な用語を使用します。 JSON Web サービスではこの用語が一般的な意味で使用されています。
- SOAP メッセージの内容は XML データであるのに対し、JSON メッセージの内容は JSON データです。 JSON と XML では、構造化データを記述するためのエンコード・メカニズムが異なります。 JSON のエンコード・メカニズムの方がより効率的である傾向にあるため、一般的な JSON メッセージは同等の XML メッセージよりサイズが小さくなります。
- JSON は JavaScript アプリケーションに簡単に統合できますが、XML は統合できません。 そのため、多くのモバイル・アプリケーション開発者は、JSON のデータ形式を好んで使用します。
- SOAP には、メッセージにヘッダーを追加するメカニズムがあり、サービス品質の仕様ファミリー (セキュリティー構成、分散トランザクションなど) があります。 JSON にはこのメカニズムがない代わりに、基礎となる HTTP ネットワーク・プロトコルのサービスに依存しています。 その結果、ワークロードを保護したり構成したりするためのオプションが少なくなっています。
- SOAP の Web サービスは、WSDL 文書を使用して記述されます。 JSON の Web サービスの構造はあまり形式的ではありません。疎結合の傾向にあり、例示ドキュメンテーションが主流です。
- SOAP の Web サービスには明示的なエラー・フォーマットがあり、SOAP 障害メッセージもこれに含まれます。 JSON には、これに相当するものはありません。
- JSON の CICS 実装は SOAP アーキテクチャーから派生し、多くの概念と成果物を共有します。
- どちらにもオフライン・ユーティリティー・プログラムがあり、アプリケーション・データと外部データ表現の相互マッピングを支援します。 SOAP には DFHLS2WS および DFHWS2LS があり、JSON には DFHLS2JS および DFHJS2LS があります。
- どちらのテクノロジーのデプロイメント・メカニズムでも、PIPELINE リソース、WEBSERVICE リソース、および URIMAP リソースが使用されます。
JSON スキーマ (JSON schema)
SOAP と比べて JSON が不利な点として、JSON インターフェースの構造を文書化することの難しさがあります。 SOAP Web サービスには WSDL 文書および XML スキーマという利点があります。 WSDL 文書を理解することは容易ではありませんが、WSDL 文書とともに使用できるツールが多数あります。
JSON に相当する最も近いものは、 http://json-schema.org/で入手できる JSON スキーマ仕様です。 現時点では、これはドラフト仕様ですが、IETF 標準化プロセスに進む過程にあります。 CICS JSON アシスタント (DFHLS2JS および DFHJS2LS) は、この新興仕様のドラフト 4 の部分的な実装を提供します。 DFHLS2JS を使用すると、JSON スキーマを生成でき、DFHJS2LS を使用するとそれを処理できます。
JSON スキーマを使用して、CICS に実装されている JSON Web サービスの有効な構文とコンテンツ・モデルを理解できます。 JSON スキーマ仕様には、XML スキーマ仕様と同じツール・エコシステムはありませんが、このデータ形式を使用するための新世代の JSON ツールが作成される可能性があります。
JSON ベースの Web サービスの CICS 実装
CICS は、 z/OS® Connect、要求/応答、および RESTful の 3 つのモードの JSON Web サービスをサポートします。 CICS は、アプリケーションが JSON データを COBOL スタイルのデータ・フォーマットに変換したり、COBOL スタイルのデータ・フォーマットから変換したりすることができるプログラマチック・シナリオもサポートします。
- z/OS Connect
- z/OS Connect では、 JavaScript Object Notation (JSON) インターフェースを使用して CICS プログラムを呼び出すことができます。 z/OS Connect for CICS は、CICS TS Feature Pack for Mobile Extensions で提供され、CICS TS バージョン 5.2に統合された Java パイプラインの JSON 機能の代替として最初に導入されました。 それ以降、 z/OS Connect は、追加機能を備えた z/OS Connect Enterprise Editionと呼ばれる別個の製品に成長しました。
z/OS Connect は、CICS で JSON サービスと API を実装するための IBM®の主要なテクノロジーです。 これは、3 つのバージョンで使用可能で、いくつかのデプロイメント・オプションをサポートします。 z/OS Connect for CICS は、エントリー・レベルのエディションであり、低コストのオプションですが、他のバージョンの機能拡張はありません。 z/OS Connect EE バージョン 2.0 および 3.0 は、さらに幅広い統合オプションを提供します。
z/OS Connect EE は、別途注文できる IBM 製品です。 これは、JSON サービスのサポートを含む z/OS Connect for CICS の機能に基づいて構築されています。 z/OS Connect EE により、API 開発者は JSON サービスから JSON API を構成できます。 API は、 z/OS Connect EE で提供される Eclipseベースの API エディターで構成およびパッケージ化され、 z/OS Connect ランタイムにデプロイされます。 API パッケージには Swagger 2.0 定義が含まれており、開発者はこれを使用して API をアプリケーションに簡単に組み込むことができます。 サービス呼び出しの許可セキュリティー検査、システム管理機能 (SMF) レコードの作成、RESTful サービス要求のロギングなどの主要な z/OS Connect 機能も API に適用されます。
- 要求/応答
要求/応答 JSON パターンは、CICS の SOAP ベースの Web サービスのパターンとよく似ています。 Web サービスは、CICS の PROGRAM を使用して実装されます。 PROGRAM には言語構造 (COBOL コピーブックなど) を使用して記述される入出力データ・フォーマットがあり、CICS は着信 JSON メッセージをアプリケーション・データに変換し、アプリケーションにリンクする責任があります。 アプリケーションは出力データを CICS に返し、CICS はこれを JSON データに変換してクライアントに返します。
このシナリオでは、JSON クライアントは HTTP POST メソッドを使用して CICS に接続する必要があります。
要求/応答モードの JSON Web サービスは、ボトムアップ・モードとトップダウン・モードのいずれでも開発できます。 ボトムアップ・モードでは、 DFHLS2JS JSON アシスタントを使用して、既存の CICS PROGRAM が JSON Web サービスとして公開されます。 トップダウン・モードでは、既存の JSON スキーマを使用して記述されたインターフェースを実装するための、新規 JSON Web サービスを開発できます。 トップダウン・モードでは、DFHJS2LS JSON アシスタントを使用して新規言語構造が生成されます。これらの構造を使用するために、アプリケーションを作成する必要があります。
要求/応答パターンを使用して、COMMAREA またはチャネル接続 CICS PROGRAM のいずれかをターゲットとする JSON Web サービスを作成できます。 要求/応答 JSON Web サービスは、プロバイダー・モード (CICS がサーバーとして機能するモード) でのみ使用できます。
- RESTful
このシナリオは、SOAP Web サービスのシナリオとは異なります。 RESTful JSON Web サービスの概念について詳しくは、 RESTful JSON Web サービスの概念を参照してください。 RESTful JSON Web サービスは、REpresentational State Transfer (REST) 設計パターンのアーキテクチャー規則を実装します。 この設計パターンは、既存の CICS アプリケーションにはあまり関係がないため、トップダウン・モードでのみ使用できます。
JSON スキーマを処理するには、RESTful モードで DFHJS2LS を使用します。 サービスを実装するために、アプリケーションを作成する必要があります。このアプリケーションは、着信要求に使用された HTTP メソッドに応じて異なる動作をする必要があります。
CICS は、純粋なスタイルの RESTful アプリケーションを実装します。この場合、POST (作成) GET (照会) と PUT (置換) のデータ・フォーマットは同じです。
RESTful JSON Web サービス・アプリケーションは、チャネル・ベースのプログラム・インターフェースを使用する必要があります。COMMAREA はサポートされていません。 RESTful JSON Web サービスは、プロバイダー・モード (CICS がサーバーとして機能するモード) でのみ使用できます。
- プログラマチック・モード
このシナリオでは、アプリケーションは CICS 提供プログラム DFHJSON に LINK して、アプリケーション・データを JSON データに、または JSON データをアプリケーション・データに変換するように要求できます。 例えば、アプリケーションは、リモート JSON Web サービスに送信する JSON データを生成するために、この機能を使用できます。 これを行うには、CICS WEB API を使用してリモート JSON Web サービスに接続する必要があります。
CICS にはリクエスター・モードの JSON Web サービスのサポートが組み込まれていませんが、アプリケーションはプログラマチック・モードを利用してリモート JSON Web サービスを呼び出すことができます。