0

ネットワークを描画し、swing ベースの GUI ですべてのパラメーターを設定するシナリオがあります。その後、このネットワークを別のフレームワークが読み取って仮想マシンの形でこのネットワークを実現する Python ベースのスクリプトに変換する必要があります。

例として、ここを見てください:

from mininet.topo import Topo, Node
class MyTopo( Topo ):
    def *__init__*( self, enable_all = True ):
        super( MyTopo, self ).__init__()
        Host = 1
        Switch = 2
        self.add_node( Switch, Node( is_switch=True ) )
        self.add_node( Host, Node( is_switch=False ) )
        self.add_edge( Host, Switch )
        self.enable_all()
topos = { 'mytopo': ( lambda: MyTopo() ) }

hostaを a に接続するだけswitchで、このトポロジを Python フレームワークで実現できます。
今のところ、Java GUI で描画されたネットワークを実現するために、私がやっていることは次のとおりです。

ProcessBuilderGUI から情報を取得し、Java コードを使用して上記のような新しい python ファイルを作成し、 Class in Java を使用してこのファイルを mininet で実行します。

私が知りたいのは、これが私がこれを行っている正しい堅牢な方法なのか、それともJava-Pythonブリッジのようなシナリオをより効果的にするか、より専門的に言うかをさらに検討する必要があるかどうかです。

編集:

私が疑問に思っていたオプションは次のとおりです。

  1. Python で逆シリアル化できるよく知られた形式 (yaml かな?) で GUI をシリアル化し、Python に追加機能を追加して、その情報をこのスクリプトに渡します。

  2. コード内から直接これを行うには、Java-Python ブリッジを追加しますか??

  3. 他のアイデアはありますか?私は何をすべきか、またはここで行われていることは何でも得意です。

4

2 に答える 2

1

JSON のような読みやすいクロスランゲージ データ形式を使用することをお勧めします。Python と Java は、JSON に対して優れたサポートを提供します。この手法を使用して、PHP、Java、および Python を統合しました。あなたが行ったことは、有効なアプローチでもあるコード生成のようなものですが、短所があります。2つのアプローチの私の頭の上にあるいくつかの長所/短所を次に示します。

コード生成の長所と短所

  • 実装が簡単な場合もある
  • セキュリティの問題、あるプログラムが別の環境で実行するコードを生成している、Python コードが任意のコマンドを実行できる
  • 検証なし。コード生成ライブラリにバグがある場合、出力を検証する方法はありません。これはデータ構造ではないためです。ここでもセキュリティ上の問題が発生する可能性があります。
  • 非常に強力で、基本的にJavaライブラリから任意のPythonコードを実行できます

データ交換 (JSON) の長所と短所

  • データの破損や生成中のバグを検出するために検証可能
  • Python で JSON を解析するセキュリティの向上は、コードを実行せず、データ構造をロードするだけです
  • 特にPythonでjsonをきれいに印刷すると、見やすくなります
  • ノードを JSON にマップするためのデータ構造を決定する必要があります
  • そのデータ構造を取得し、そこから Topo および Node オブジェクトを生成するために何かを作成する必要があります。
于 2012-09-28T10:13:38.813 に答える
0

Python コードが純粋な Python ライブラリに依存している場合は、組み込みの Jythonを使用できます。

私の好みは、構成を不可知論的な形式にシリアル化する最初のオプションです。Java から Python のソース コードを作成すると、保守が難しくなります。

シリアル化することにした場合は、JAXB などを Java 側の XML スキーマで使用して、XML で厳格なデータ交換フォーマットを構築することを検討してください。その後、PyXB を使用して XML を Python オブジェクトに変換し直すことができます。

于 2012-09-28T10:17:40.127 に答える