問題タブ [plugin-architecture]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - サンドボックス化されたプラグインアーキテクチャ
私はプラグインアーキテクチャを探してSOを検索していましたが、それを実装する方法に関する一般的な知識に満足しています。次に、サンドボックス化されたアーキテクチャを探しました。基本的に私が意味するのは、プラグインを備えたアプリケーションであり、プラグインでクラッシュしてもアプリ全体がクラッシュすることはなく、プラグインをリロードできます。良いドキュメントが見つかりません。Firefoxがそれを実装していることは知っています(フラッシュプラグインのクラッシュはFF全体に影響を与えず、リロードできます)ありがとうございます!
asp.net - ASP .NET で Web ページを動的にプラグインする (およびプラグインを更新する) 方法は?
通常のアセンブリの場合、MEF を使用してアセンブリを動的にロードできます。これらのアセンブリのライブ更新が必要な場合は、AppDomains を使用して動的アセンブリをホストすることをお勧めします (マネージド アドイン フレームワーク (MAF) を使用できる可能性があります)。更新が必要な場合、appdomain が停止され、アセンブリが更新され、appdomain が再読み込みされます。
コード ビハインド クラスを含む ASP .NET によって読み込まれるアセンブリについてはどうでしょうか。メインのアプリドメインを強制的に再起動せずに更新するにはどうすればよいですか? 一部のページを動的アプリケーション ドメインでホストすることはできますか? どうやってそれをしますか?ユーザーが再ログインする必要がないように、この appdomain でログイン トークンと認証情報を共有できますか?
ありがとう
asp.net-mvc-3 - ビューは、WebViewPageまたはWebViewPageから派生する必要があります
Justin Slatteryのプラグインアーキテクチャチュートリアルに従って、WebFormビューではなくRazorに適合させようとしています。
他のすべて(コントローラー、プラグインアセンブリのロードなど)は問題ないようです。ただし、埋め込まれたRazorビューを正しく機能させることができません。「HelloWorld/Index」を参照しようとすると、次のエラーが発生します。
例外はによってスローされますSystem.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +262
必要に応じて、完全なスタックトレースを含めることができます。
誰かが私が間違っているかもしれないことについてアドバイスできますか?
c# - 動的に読み込まれる型に依存関係 (NLog) を注入する
私のソリューションには一種のプラグイン アーキテクチャがあります。プラグインを配置する既知のフォルダーがあります。プラグインは、ホスト プロジェクトで共有されるインターフェイスを実装します。
最初に、プラグインをロードしAssembly.LoadFrom(fi.FullName).GetTypes()
、必要なタイプをインスタンス化します(IPlugin)Activator.CreateInstance(type);
。
したがって、ホスト (メイン アプリケーション) は、プラグイン アセンブリによって実装された適切なコードを実行できます。これはこれまでのところうまくいきます。
しかし最近、NLogを介してアプリケーションロギングを実装しようとし、ホストプロジェクトでNLogを構成しましたが、うまく機能しました。
問題は、プラグイン アセンブリで (既に構成されている) ロガーを使用したいということです。NLog を参照して使用するだけでLogManager.GetCurrentClassLogger();
は、構成セットがないようです。プラグイン アセンブリのホスト プロジェクトで構成したファイルにログを記録しません。
NLogger インスタンス (ホスト プロジェクトで作成) をプラグイン タイプのプロパティに挿入しようと考えました。
これは可能ですか、それともそのようなことを達成するための好ましい方法はありますか? ありがとう
python - Python3プラグインシステム
yapsyに似たプラグインフレームワークを作成しようとしています(残念ながら、yapsyはpython3と互換性がありません)。
私のコードは次のようになります:
PluginManager.pyで、次のクラスを定義しました。
ここで、candidate_filepathにはプラグインパスが含まれています。
textui.pyには次のものが含まれています。
プラグインを読み込もうとすると、次のエラーが発生します。
どうすればこの問題を解決できますか?
c# - クラスライブラリでRazorテンプレートを取得する
私のソリューションにはプラグインベースのアーキテクチャ(領域を使用)があり、正常に機能します。
問題は、プラグインプロジェクトがクラスライブラリであるため、ビューフォルダを右クリックしてもビューの追加ウィザードが表示されないことです。
クラスライブラリでそのウィザードを取得する方法はありますか?または、クラスライブラリプロジェクトで足場を取得する別の方法はありますか?
java - カスタマイズ可能な自分のJavaアプリケーション
Javaアプリを使用してプロセスを実装することを計画しています。このプロセスにはさまざまなフェーズがあります。各フェーズには入力と出力があります。
つまり、input1 => phase1 => outpu1 => phase2 => output2 => phase3=>final_outputのようなものです。
ユーザーが任意のフェーズを拡張して独自の機能を実装できるJavaアプリケーションを作成したいと思います。
たとえば、phase1が指定された入力をソートするとします。私のアプリユーザーに、フェーズ1の機能を置き換えるカスタムクラスを作成させたいと思います。彼らはソートの代わりにカウントをしたいかもしれません。
これを行う方法についてのアイデアはありますか?プラグインアーキテクチャ?同様に機能するフレームワークの例はありますか?どこから始めれば?編集:入力はユーザーからのものです。私のアプリが一連の数値を取得し、並べ替え(フェーズ1)を実行してから、重複を削除(フェーズ2)および追加(フェーズ3)して出力を提供するとします。ここで、フェーズをカスタマイズできるようにします。おそらく、他のことを行う独自のクラスを定義できるようにすることによって。
c# - プラグイン アーキテクチャ機能をテストするにはどうすればよいですか?
アプリケーションに単純なプラグイン アーキテクチャを実装しています。基本的に、プラグインのそれぞれのメイン クラスのアセンブリ名と完全修飾型を定義する単純な文字列があり、ホスト アプリケーションはメイン クラスをロードしInitialize
、プラグイン クラスのメソッドを呼び出すことになっています。
これに対して NUnit スタイルの統合テストを作成するにはどうすればよいですか? MyPlugin 型のスタブを作成し、テストの実行時にアセンブリ (dll ファイル) として保存できますか (これは特定のライブラリを使用して実行できますか?)。それとももっといい考えがありますか?
c# - クラスの依存関係/リファクタリングをどのように管理する必要がありますか?
私のアプリケーションは、1つ以上の「プラグイン」アセンブリを動的にロードできるモジュラーアーキテクチャを実装しています。各アセンブリには、インターフェイスを実装するクラスが含まれてIPlugin
おり、ホストアプリがプラグインとの対話に使用するさまざまなメソッドとプロパティを提供します。
このクラスは必然的にプラグイン内の他のクラスに依存し、これらは独自の依存関係を持つ可能性があります。これまで、Castle Windsor(各プラグインにはIWindsorInstaller
依存関係を登録する場所が含まれています)を使用してこれらすべてを管理し、コンストラクターを介してDIを実行してきました。欠点は、public
このアプローチが機能するためにはクラスが必要であるということです。
私は今、これらすべてのクラスを作成してプラグインをロックダウンしたいと思っていますがinternal
、おそらくWindsorを使用できないため、依存関係を処理するための最良の方法がわかりません。クラスが独自の依存関係をインスタンス化することを望まないので(緩く結合されていない、テスト容易性の欠如など)、他にどのようなアプローチがありますか?
c# - プラグインがユーザー間で共有されるのを防ぐための最良の方法
MEFを使用したプラグインアーキテクチャに基づくC#アプリケーションを開発しています。
メインアプリケーションは単なる基本的なフレームワークであり、モジュール化された機能は、ユーザーが購入する必要のあるプラグインによって提供されます。
プラグインごとに個別のライセンスキーを設定する必要はありませんが、ユーザーがプラグインのコピーを1つ購入して、それをアプリケーションの12のインスタンスにインストールしないように、適切な予防策を講じる必要があります。