マイクロセミLGOO

マイクロセミ AN1256 Web プログラマー向けアプリケーション

マイクロセミ-AN1256-Web-プログラマー-アプリケーション-PRO

導入

JSON(JavaScript Object Notation)はオープンスタンダードです file データ交換に人間が読めるテキストを使用する形式です。非同期のブラウザ/サーバー通信に使用される一般的なデータ形式です。
新しい web ページデザインでは、JSON形式は元のAJAXスタイルの代わりに使用できます。AJAXと比較すると、JSONを使用すると、 Web 実装がより簡単かつシンプルになります。開発者は web ページデザインと Web JSONアクセスメソッドは各言語で既にサポートされているため、ハンドラの実装は省略できます。 WebStaX ソフトウェア モジュール。
この文書は、ソフトウェアエンジニアが開発する必要があるプログラマー向けのガイドです。 Web ページはJSON経由で表示されます。詳細な手順と例amp次のセクションにも含まれます。

JSONデータアクセスフロー

以上view
これは、クライアント (ブラウザ) から HTTP 接続が開始される JSON データ アクセス フローです。サーバー (DUT) 側から受信した JOSN データに応じて、HTML テーブルが動的に作成されます。マイクロセミ-AN1256-Web-プログラマー-アプリケーション-図1

図1. クライアントとサーバー間のアクセスフロー

リクエスト/レスポンスJSONデータ
JSON リクエスト パケットは HTTP リクエスト POST メソッドに基づいており、コンテンツは MSCC JSON 形式に従う必要があります。

  • リクエストJSON構文:{"方法":" ”,”パラメータ”:[ ], “id:”jsonrpc”}
  • 応答 JSON 構文: {"エラー": 、"結果": , “id:”jsonrpc”}

次のスナップショットは、ブラウザと DUT 間の JSON コンテンツを示しています。マイクロセミ-AN1256-Web-プログラマー-アプリケーション-図2

図2. クライアントからのHTTPリクエストのスナップショットマイクロセミ-AN1256-Web-プログラマー-アプリケーション-図3

図3. サーバーからのHTTP応答のスナップショット

MSCC JSON仕様
メソッド、パラメータ、説明などを含む完全なJSON情報を取得するには、「http://」と入力します。ブラウザのアドレスバーに「/json_spec」と入力してください。JSON メソッド名「jsonRpc.status.introspection.specific.inventory.get」を介した別のアクセス方法があり、これは特定のメソッドに使用されます。マイクロセミ-AN1256-Web-プログラマー-アプリケーション-図4

図4. JSON仕様のスナップショット web ページ

Web フレームワーク

の Web フレームワーク WebStaX ソフトウェアは、オープンソースの MooTools に基づいています。これは、MIT ライセンスによる JavaScript ユーティリティのコレクションです。(http://mootools.net/license.txt) メニューバーとほとんどの web ページはフレームワークに基づいています。AJAX と JSON アルゴリズムの両方がすでにそのユーティリティに統合されています。
その上、 WebStaXソフトウェアはJSONに役立つ他のユーティリティも提供しています web ページデザイン。

  • json.js – JSON 構文を使用して動的データを送受信するには、 for を使用します。
  • dynforms.js – HTML テーブルを動的に作成するために使用します。
  • 検証.js – HTML フォームの検証に使用します。

完全な JavaScript ライブラリは、ソース ツリー ディレクトリの下にあります。 webスタックス2\ vtss_appl\web\html\lib.

JSONのガイドライン Web ページデザイン

このセクションでは、 web MSCC JavaScriptライブラリに基づくページ。ミラーグローバル設定を使用します web ページは元ampここに示します。非同期通信は HTTP JSON アクセス メソッドに基づいており、グローバルに構成されたすべてのパラメータが 1 つの動的 HTML テーブルにリストされます。
の web ページのレイアウトは以下にリストされており、完全なソース コードはソース ツリー ディレクトリの下にあります。 webstax2\vtss_appl\mirror\html\mirror_ctrl.htm。より一般的な web ページ参照については、付録のセクションを参照してください。

ミラー&Rミラー構成表マイクロセミ-AN1256-Web-プログラマー-アプリケーション-図5

図5. Exampグローバル構成テーブル

編集 Web ページ

HTML ヘッダー
HTMLに必要なJSライブラリを含める tag.

動的テーブルリソースを初期化する

  • HTML ドキュメントの準備ができたら、DynamicTable() を呼び出して動的テーブル リソースを初期化します。
  • DynamicTable() は、JSON データを受信した後に動的テーブルを作成するために使用されます。
  • 次に、requestUpdate を呼び出して JSON コマンド フローを開始します。
  1. window.addEvent('domready', 関数() {
  2. // JSON データを受信/送信するためのテーブル本体を含むフォームを作成します
  3. myDynamicTable = 新しい DynamicTable(“myTableContent”, “config”, “plusRowCtrlBar”);
    4
  4. リクエスト更新();
  5. });

リクエスト/レスポンスJSONデータ

  • HTML ドキュメントの準備ができたら、requestJsonDoc() を使用して JSON リクエスト「mirror.config.session.get」を送信し、構成されたセッションに関する情報を取得します。
  • 「mirror.capabilities.get」の JSON データが受信された後、コールバック関数 requestUpdate() が処理されます。関数 requestUpdate は次に「mirror.config.session.get」を呼び出して現在の構成を取得します。現在の構成が受信されると、関数 processUpdate が呼び出され、表示されるテーブルが構築されます。
  1. 関数 requestUpdate()
  2. {
  3. // テーブルの内容を復元する
  4. myDynamicTable.restore();
    5
  5. // このテーブルには 2 つの JSON データがあります。
  6. requestJsonDoc(“mirror.config.session.get”, null, processUpdate, “config”);
  7. }

受信したJSONデータを処理する

  • 関数 processUpdate() は、JSON データを受信した後に動的テーブルをレイアウトするために使用されます。
  • addRows()はテーブル行を追加するために使用されます。myDynamicTable.update()レイアウト
    テーブル行のデータに応じた HTML テーブル。
  1. 関数 processUpdate(recv_json, name)
  2. {
  3. // データが受信されない場合はプロセスを無視します
  4. 場合 (!recv_json) {
  5. alert(“動的データの取得に失敗しました。”);
  6. 戻る;
  7. }
  8. // 受信したJSONデータを保存する
  9. myDynamicTable.saveRecvJson(“config”, recv_json);
  10. // テーブル行を追加する
  11. var table_rows = addRows(recv_json);
  12. myDynamicTable.addRows(table_rows);
  13. // この動的テーブルを更新する
  14. myDynamicTable を更新します。
  15. // リフレッシュタイマー
  16. var 自動更新 = document.getElementById(“自動更新”);
  17. 自動更新の場合、自動更新がチェックされているとします。
  18. if (タイマーID) {
  19. タイムアウトをクリアします(タイマーID);
  20. }
  21. タイマーID = setTimeout('requestUpdate()', settingsRefreshInterval());
  22. }
  23. }

表の行を追加する

  • addRows() 関数では、JSON 形式を使用して、テーブル行の各グローバル構成パラメータを入力します。
  • すべての HTML フィールドは JSON 配列 (“table_rows”) にリストされており、テーブル フィールドの構文は次のとおりです。

構文:
テーブル行:[ 、 、… ] : { 、 、… }
: {"タイプ": , “パラメータ”:[ 、 、…、 ]}

  • この場合、各行には「セッションID」、「モード」、「タイプ」、「VLAN ID」、「リフレクタポート」の5つのフィールドがあります。例:ampル、
セッションID (名前フィールド: int32_t) 1 (ミラーセッションのID)
モード (名前フィールド: vtss_bool_t) 真実 (ミラーセッションが有効になっていることを意味します)
タイプ (名前フィールド: 列挙

{ミラー、rMirrorSource、rMirrorDestination}

Rミラーソース (これはリモートミラーセッションのソースです
VLANID (名前フィールド: uint16_t) 200 (ミラーリングに使用されるVLAN)
リフレクターポート (名前フィールド: vtss_ifindex_t) ギ 1/1 (ミラーリングされたトラフィックが送信されるポート
  • myDynamicTable.addRows() は JSON データを HTML 形式に変換し、HTML テーブルを出力します。
  1. 関数 addRow(キー, 値)
  2. {
  3. var none_map_val = 0xFFFFFFFF、none_map_text = “なし”、none_interface_text = “なし”;
  4. var tunnel_mode_suffix = val.TunnelMode == “useglobal” ? ” (” + oTTunnelMode[oVTunnelMode.indexOf(global_conf.tunnelMode)] + “)” : “”;
  5. var row = {フィールド:[
  6. {タイプ:”link”, パラメータ:[“cr”, “mirror.htm?session_id=” + キー, キー]},
  7. {タイプ:”テキスト”, パラメータ:[oTMode[oVMode.indexOf(val.Mode)], “c”]},
  8. {タイプ:”テキスト”、パラメータ:[oTType[oVType.indexOf(val.Type)], “c”]},
  9. {type:”text”, params:[val.Type == “mirror” ? “-“:
    val.RMirrorVlan, “c”]},
  10. {type:”text”, パラメータ:[val.Type == “rMirrorSource” ?
    val.ReflectorPort: “-”、“c”]}
  11. ]};
  12. 行を返します。
  13. }
  14. 関数 addRows(recv_json)
  15. {
  16. var 行、empty_colspan = 7;
  17. var table_rows = 新しい配列();
  18. // テーブルヘッダーを追加
  19. テーブル行にヘッダーを追加します。
  20. // 1行追加
  21. Object.each(recv_json, 関数(レコード) {
  22. table_rows.push(addRow(record.key, record.val));
  23. });
  24. table_rows を返します。
  25. }

Web ヘルプページ
については web ヘルプページの設計では、ヘルプの説明はJSON仕様を参照することができ、説明テキストはJSON出力と一致し、冗長な説明を減らすのに役立ちます。例:ampここのファイルは、dhcp6 リレー構成から取得されます。

ソース内のハイパーリンク file
ヘルプを割り当てる file ソース内の位置 file html tag固定変数名「help_page」は、 web ヘルプページの割り当て。

  1. // ヘルプページのマジック
  2. var help_page = “/help/help_xxx.htm”;

JSON仕様からHTMLフィールドの説明を更新

  • 使用またはhtml tag HTMLテーブルの説明を宣言し、一意のIDを付与します。 tag.
  • HTML ドキュメントの準備ができたら、loadXMLDoc() を呼び出して JSON 仕様全体を取得するか、JSON メソッド名「jsonRpc.status.introspection.specific.inventory.get」で特定のメソッドの説明を取得します。
  • processTableDesc() はテーブルの説明を更新するために使用され、processUpdate() はテーブル パラメータの説明を更新するために使用されます。
  • processUpdate() で、updateTableParamsDesc() を呼び出して、特定の要素名に一致する JSON 要素を更新します。
  • 更新するまたは tag 要素の説明に従った内部 HTML。
  1. /* HTML の説明フィールドを更新します */
  2. 関数 processTableDesc(req) {
  3. 応答テキストが必要な場合
  4. 戻る;
  5. }
  6. var json_spec = JSON.decode(req.responseText);
  7. // テーブルの説明を更新
  8. $(“TableDesc”).innerHTML = getJsonSpecElement(json_spec, “groups”, “dhcp6_relay.config.vlan”).description;
  9. }
  10. /* HTML テーブルパラメータの説明を更新します */
  11. 関数 processUpdate(recv_json) {
  12. // テーブルパラメータの説明を更新
  13. var パラメータ名 = [
  14. {
  15. 「エイリアス」:「インターフェース」、
  16. 「タイプ」: 「vtss_ifindex_t」、
  17. 「名前」: 「vlanInterface」、
  18. 「接尾辞」:「。」
  19. },
  20. {
  21. 「エイリアス」:「リレーインターフェース」、
  22. 「タイプ」: 「vtss_ifindex_t」、
  23. 「名前」: 「リレーVlanインターフェース」、
  24. 「サフィックス」: 「中継に使用されるインターフェースの ID。」
  25. },
  26. {
  27. 「エイリアス」:「リレー先」、
  28. 「タイプ」: 「mesa_ipv6_t」、
  29. 「名前」: 「リレー先」、
  30. 「サフィックス」: 「要求を中継する DHCPv6 サーバーの IPv6 アドレス。デフォルト値 'ff05::1:3' は '任意の DHCP サーバー' を表します。」
  31. }
  32. ];
  33. TableParamsDesc を更新します(“TableParamsDesc”, recv_json, “dhcp6_relay.config.vlan.get”, param_names);
  34. }
  35. /* JSON仕様を取得 */
  36. window.addEvent('domready', 関数() {
  37. XMLDoc をロードします(“/json_spec”, processTableDesc);
  38. リクエストJsonDoc(“jsonRpc.status.introspection.specific.inventory.get”, “dhcp6_relay.config.vlan”, プロセス更新);
  39. });

メニューバーのハイパーリンク

  • メニューバーのHTMLソースコードは以下から生成されます。 file webstax2\vtss_appl\web\ menu_default.cxx。
  • この項目を編集する file のために Web ページのハイパーリンク。
  1. #定義されている場合(VTSS_SW_OPTION_DHCP6_RELAY)
  2. ITEM(”リレー,dhcp6_relay.htm”);
  3. #endif //VTSS_SW_OPTION_DHCP6_RELAY

注記
メニューバーのグループレベルを決定するために使用されるITEM(“”)内のスペース文字の数に注目してください。この場合、すべて web ページは「DHCPv6」グループの下にあります。マイクロセミ-AN1256-Web-プログラマー-アプリケーション-図6

図6.例ampグローバル構成テーブル

付録

典型的な web ページ

いくつかの典型的な web ページはリファレンスデザインに使用できます。追加の例ampここで示すファイルは、vtss_appl\mirror\html\mirror.htm にある単一のミラー セッションの構成です。
の web このページでは、単一のミラー セッションの詳細な構成を示します。構成されたすべてのパラメータが一覧表示されます。

  • 現在の設定を適用するには、「保存」ボタンをクリックします。
  • 現在の設定をリセットするには、「リセット」ボタンをクリックします。
  • 「キャンセル」をクリックすると、上に戻りますview ミラーセッション
ミラー&Rミラー構成

グローバル設定マイクロセミ-AN1256-Web-プログラマー-アプリケーション-図7

ソースVLANの設定マイクロセミ-AN1256-Web-プログラマー-アプリケーション-図8

ポート構成マイクロセミ-AN1256-Web-プログラマー-アプリケーション-図9

図7. Exampミラーセッションの詳細構成ファイル
「保存」、「リセット」、「キャンセル」ボタンは HTML コードによって追加されます。

JSONコマンドフロー
このページでは、2 つのステップのコマンド フローが必要です。

  • まず、「mirror.capabilities.get」メソッドを使用してデバイスの機能を取得する必要があります。機能は変更されないため、一度だけ読み取る必要があります。
  • 次に、メソッド「mirror.config.session.get」、「port.status.get」、およびスタッキングの場合は「topo.config.stacking.get」を使用して、デバイスの現在の構成を取得する必要があります。

「mirror.capabilities.get」の呼び出しは「domready」イベントによって開始され、結果は関数 requestUpdate によって処理されるように構成されます。
requestUpdateは「mirror.config.session.get」の呼び出しを開始します。
「port.status.get」、スタッキングの場合は「topo.config.stacking.get」、およびこれらの呼び出しの結果は、関数 prepareUpdate によって処理されるように構成されます。
関数prepareUpdateはすべての結果を収集し、すべての結果が受信された場合にのみ関数processUpdateを呼び出し、表示されるテーブルを構築します。 web.

参考文献

  1. ウィキペディア JavaScript https://en.wikipedia.org/wiki/JavaScript
  2. 翻訳 https://www.json.org/
  3. Moonツール https://mootools.net/

ドキュメント / リソース

マイクロセミ AN1256 Web プログラマー向けアプリケーション [pdf] ユーザーガイド
AN1256、AN1256 Web プログラマーアプリケーション、 Web プログラマーアプリケーション、アプリケーション

参考文献

コメントを残す

あなたのメールアドレスは公開されません。 必須項目はマークされています *