問題タブ [dynamic-proxy]
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.
spring - メソッド署名に Object ... args が含まれている場合に JSF で動的プロキシを使用する方法
Spring Bean として初期化される Spring、JPA、および Dynamic Proxy DAO クラスに問題があります。この特定のプロジェクトは、永続性/トランザクション側でしばらくの間私を悩ませてきました。これを完全に解決したいと思います。
まず、DAO インターフェイスのメソッドを次に示します。
この Bean は、postProcessBeanFactory メソッドを使用して Spring に自動的に登録されます。
メソッド getPersistedClassList() は persistence.xml を読み取り、すべての JPA クラスを見つけます。上記のメソッドは、これらの各インスタンスを Spring に登録し、変数「entityNameDao」によって簡単にアクセスできるようにします。このクラスはトランザクション クラスであるため、Dynamic Java Proxy として初期化されます。ここから問題が始まります。JSF はもはやそのインターフェースによってオブジェクトを認識しませんが、プロキシを直接見ます。これは実際、上記のメソッド定義を次のように示しています。
これにより、Object... params 署名メソッドよりも JSF からのアクセスがはるかに難しくなります。JSF にこれらのオブジェクトをインターフェイスで認識させたり、Spring にそれらの動的プロキシを作成しないように説得したりする方法はありますか? または、ELで次のことを行うにはどうすればよいですか?試してみると、中括弧に関するエラーが発生します:
トランザクションのアドバイスを含む永続性に関連する私の春の設定は、適切な測定のために以下に含まれています。
java - spring スコープのプロキシと JAXB
JAXBContext はスレッドセーフですが、Unmarshaller はそうではありません。アンマーシャラーをリクエスト スコープ Bean にしたいのですが、これを行っています。
しかし、問題は、次のエラーが発生することです。
プロキシの作成時にターゲット タイプを特定できませんでした
AOPを使用したSpringセッションスコープBeanの問題を読みましたが、作成したいタイプについてSpringにもっと伝える必要があることを示唆していますが、作成するタイプはインターフェースです。JAXB 実装に基づいてインスタンス化される実際のタイプを探し出し、アンマーシャラー Bean のクラス属性がそれを指すようにする必要がありますか? ちょっと奇妙に思えます。手がかり?
編集:
私の間違いです。これは実際に機能しますが、単体テストで失敗するだけです。春のテストでスコープ付き Bean をリクエストすると役に立ちました。
performance - Autofac: DynamicProxy 使用時のパフォーマンスを向上させるためのヒント?
今日、DynamicProxy2 を使い始めました。そして、それが大幅なパフォーマンスの低下を引き起こしていることがわかりました。
以下のコードを参照してください。Test1 は Test2 よりも 10 倍遅いです。
DynamicProxy を使用するときにパフォーマンスを向上させるためのヒントはありますか?
アップデート:
私のマシンでは、Test1 に約 45 秒、Test2 に約 4.5 秒かかります。Krzysztof Koźmicの回答を読んだ後、 NotifyPropertyChangedInterceptorをシングルトン スコープに入れようとしました。
約4秒節約できました。Test1 には約 41 秒かかります。
更新 2:
私のマシンでは、Test3 に約 8.3 秒かかります。そのため、Autofac または DynamicProxy を単独で使用してもパフォーマンスはそれほど大きな問題ではないようですが (私のプロジェクトでは)、それらを組み合わせるとパフォーマンスが大幅に低下します。
c# - ServiceDescription の詳細 / WSDL からのプロキシ
クラス ServiceDescription / ServiceDescriptionImporter を使用して Web サービスを動的に呼び出しています。WSDL の説明をもう少し掘り下げて取得したいと思います。
1) 各 Web メソッドのパラメーター情報
2)すべてのWebメソッドの実際の型/構成各パラメータ(つまり、WebMethodが複雑な型をパラメータとして取る場合、可能であれば、それが構成されているプリミティブ/他の型も知る必要があります)
動的呼び出し用のコードは次のとおりです。
メソッド名、パラメーター情報などの基本的な情報を見つけることはできましたが、より深い分析が必要です。たとえば、Wsdl.exe がプロキシ クラスで生成する基本的にすべての情報にアクセスする必要がありますが、Wsdl.exe を実行する必要はなく、情報を動的に検出するだけです。すべてのメソッドについて、その戻り値の型が何で構成されているか、そのパラメーターが何で構成されているかなどを知る必要があります.WSDLでそれを知っているだけで、プログラムでそれを抽出する方法がわかりません. 以下は、私が調べてきたクラスの一部です。
しかし、それらの多くは空になっているようですか?
前もって感謝します。
編集
もう少し進んで、これがトラバースしようとしている xml スキーマ (WSDL) です。
そして、これはトラバースするコードです:
これで少し先に進むことができますが、ComplexType の complexContent を取得するまでには至りません。コンソールに次の出力が生成されます。
セッション セッション
c# - .net 動的プロキシのコスト
動的プロキシを使用するコストはいくらですか?
プロジェクトをインターフェイス実装で乱雑にしたくないので、LinFu、Castle、Unity などのサードパーティ ライブラリによって作成された動的プロキシを使用することを検討しています。インターフェイスごとに 1 つのインスタンスを生成するか、呼び出しごとに 1 つ取得しますか。
これはWebアプリなので、長期的にはパフォーマンスの問題は何ですか.
私もEF 4.1(現時点ではCTP5)を使っているので、プロキシクラス自体を作成する場合は、EF独自の動的プロキシ作成ツールを使用できるかどうか疑問に思っています。
PSはい、私のインターフェースは他のインターフェースや基本クラスとともに具象クラスによって実装されていますが、具象クラスに付属する余分なものではなく、インターフェース部分のみが必要な場合があります。
すべてのインターフェイスは、EF4.1 POCO の一部のみを宣言します。つまり、ゲッターとセッターだけです。
.net - AOP技術を使用してADO.Netを傍受する
さまざまな異なるADOテクノロジを使用する非常に大きなコードベースがあります(つまり、一部のEF、場合によってはADO.Netを直接使用します)。
実行された正確なSQLステートメント、所要時間、返された結果などの情報の監査を開始できるように、ADO.Net呼び出しをグローバルにインターセプトする方法があるかどうか疑問に思っています。
主なアイデアは、これを実行できれば、既存のコードを変更する必要はなく、ADO.Netをインターセプト/ラップするだけでよいということです...これは可能ですか?
編集
PostSharp、CciSharp 、またはAfterthoughtを調べることをお勧めしますが、これらのいずれかを使用して目的の結果を得るにはどうすればよいですか?
java - アプリケーション内のすべてのクラスに動的プロキシを適用する
作成した動的プロキシを、アプリケーションの一部であるすべてのクラスに適用したいと考えています。しかし、 MyDynamicProxy.newInstance(new Account()); のようなものを書く代わりに、依存性注入 (Spring) を使用できるようにしたいです。
newInstance の場所:
アプリケーション内のすべてのクラスに依存性注入と動的プロキシを適用するにはどうすればよいですか?
c# - リフレクションベースのインジェクションと動的プロキシ:実際的な考慮事項?
私は、膨大な数の操作(数十万)を実行するように設計されたフレームワーク風のコードに取り組んでいます。これらはすべて同じ基本コンポーネントを使用しますが、外部ソースから操作固有の構成データを受け入れる必要があります。
今のところ、設定名の適切なリストがあれば、これらの設定を効率的にロードして次のようなタイプで保存する方法を知っている構成リポジトリーがあると想定します。
私が計画しているのは、流暢なマッピング構文を実装するか、コンポーネントクラスを次のような属性で装飾することです。
あなたは写真を手に入れます...うまくいけば。注意すべき重要な点は、一部のプロパティは実際にリポジトリに保存する必要があるため、従来のDIライブラリはここでは機能しないということです。たとえそうだったとしても、それらは数十万のコンポーネントを回転させ、数百万の属性をロード/保存するように設計されていない鈍器です。言い換えれば、私は車輪の再発明をしているとは思いませんが、誰かが私を説得しようとするなら、遠慮なくしてください。
とにかく、これらのコンポーネントインスタンスへの構成データの「注入」を処理するための2つの可能なオプションを検討しています。
プレーンバニラリフレクション-タイプをスキャンして構成属性を探し、メンバー情報を(構成キーとともに)静的ディクショナリに保存します。
PropertyInfo.SetValue
次に、注入やPropertyInfo.GetValue
抽出などの反射方法を使用します(より適切な用語がないため)。これは、ほとんどのDIライブラリで使用されているアプローチに似ています。Castleなどの動的プロキシを使用し、装飾されたプロパティにインターセプターを接続して、プライベート/自動生成フィールドを参照する代わりに、
IConfiguration
インスタンス(つまり、get
メソッド呼び出しIConfiguration.Get
とset
メソッド呼び出しIConfiguration.Set
)を参照するようにします。これは、NHibernateや他のORMで使用されているアプローチに似ています。
完全な実装はかなりの量の作業になる可能性があるので、何かを逃したことに気付く前に、間違った道を行き過ぎたくありません。
だから私の質問は、どちらのアプローチの長所/短所は何ですか、そして私が避ける必要がある落とし穴は何ですか? パフォーマンス、保守性、フールプルーフなどの広い視野で考えています。
または、代わりに、この目標へのより迅速なパスが他にありますか?できれば、急な学習曲線がないものがありますか?
java - インターフェイス配列を取得する方法 (動的プロキシ)
動的プロキシについてはかなり混乱しています。interfaceArray 変数を持つ ProxyCreator クラスが必要であることは理解しています。インターフェイスarrauを作成する方法がわかりません。また、動的プロキシの実行方法について簡単な説明を得ることができますか? 再度、感謝します!