プラグインベースのアプリケーションで使用するために動的に実行できますか?
Eclipseでは、Eclipseが動的に実行できるプラグインをいくつか作成できます。
Goでも同じことが可能でしょうか?
これらは2つの別個の問題であると主張します。
最初のものは単にnoです。Goプログラムは静的にリンクされています。つまり、実行中のプログラムにコードを追加することはできません。また、プラグインを統合させるには、プログラムをコンパイルする必要があります。
幸いにも、ほとんどの言語と同様にGoでプラグインを受け入れるプログラムを定義できます。また、インターフェースと高速コンパイルを使用してGoを定義しても、その作業は難しくありません。
2つの可能なアプローチは次のとおりです。
解決策1:メインプログラムに統合されたプラグイン
Eclipseプラグインと同様に、プログラムを再コンパイルするだけで、メインプログラムメモリに「プラグイン」を統合できます。この意味で、たとえば、データベースドライバーはプラグインであると言えます。
再コンパイルが必要であり、コードのある時点で「プラグイン」をインポートする必要があるため(データベースドライバーでどのように実行されるかを参照)、ディレクトリとインポートに関するGoの標準化を考えると、これはJavaほど簡単ではないかもしれません。、プラグインをインポートしてアプリケーションを再コンパイルする単純なmakefileで簡単に処理できます。
Goでのコンパイルの容易さと速度、およびパッケージ構造の標準化を考えると、これは非常に実行可能なソリューションのように思えます。
解決策2:別のプロセス
Goでは、通信や非同期呼び出しの処理が特に簡単です。つまり、名前付きパイプ(または任意のネットワークソリューション)によって通信する多くのプロセスに基づくソリューションを定義できます。Go にはrpcパッケージがあることに注意してください。これはおそらくほとんどのプログラムにとって十分効率的であり、メインプログラムはプラグインプロセスを開始および停止できます。これは非常によくできたと感じますが、メモリ空間の保護の追加の利点とEclipseで持っているものに似ています。
いくつかのEclipseプラグインを作成した誰かからの最後のメモ:その混乱を望まない。単純にする。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加