1

サードパーティのアプリケーションで処理できるカスタム イベントを作成することはできますか?

私たちは既存のアプリを持っており、アプリを使用する多くの人が SQL トリガーを使用して、アプリで何かが起こったときに特定の独自の機能をカスタム作成していることに気付きました。

これにより、私たちのアプリをブロックする見掛け倒しのサードパーティ製トリガーが原因で、私たち自身のプロセスが遅くなる場合がいくつかありました。

トリガーを使用する代わりに、サードパーティの開発者が独自のサービスやアプリで処理できるイベントを発生させることができれば、サードパーティの開発者がこれを簡単に行えるようになると考えていました。

そうすれば、イベントを発生させて続行できるため、ブロッキングが失われます。また、それらの速度/潜在的なクラッシュは、プロセスの外で発生します。

A)これは合理的なアプローチですか?

B) これは可能ですか? アプリの範囲を超えてイベントのスコープを設定できますか?

編集

それ以来、他の関連する質問に興味があることがわかりました。

  1. wcf アプリケーション間通信
  2. ネットワークに依存しないインタープロセス pubsub
  3. 別のアプリケーションでイベントをリッスンします(これは私が求めているものに非常に近いようです)

私は最も単純なアプローチを探していると思いますが、社内の他の多くのアプリでこの方法を採用したい場合は、さらにいくつかの課題があります。

vb6 と delphi にはいくつかの古いアプリがあります。それらのアプリから、自分の (またはサード パーティの) 新しい C# アプリまたはサービスでイベントをリッスンできるようにしたいだけです。

今のところ、以下を見ていきます: Managed Spyhttp://pubsub.codeplex.com

4

2 に答える 2

1

いいえ、イベントは独自のプロセスにロードされたコードでのみ使用できます。これらの人々を今信頼していないのであれば、自分のプロセスにロードしてアプリを終了させる未処理の例外をスローする粗雑なコードに自分自身をさらしたくないでしょう。彼らではなく、あなたは電話を受けるでしょう。さらに、そのようなイベントを使用して、アプリの速度を低下させるコードを実行します。

一般に、dbaseで行うことはすべて、まったく予測できない量のオーバーヘッドで実行されます。他の人がトリガーを追加しただけでなく、dbaseサーバーは他の作業によって単に停止し、保存するデータが増えるにつれて自然に速度が低下する可能性があります。アプリの使用が困難になったり不快になったりしないように注意してください。dbase操作は通常、ワーカースレッドで実行するか、BeginExecuteXxxx()などと非同期で実行する必要があります。また、UIで、作成したコードではなく、dbaseサーバーによって進行が停止していることを明確にします。多くの説明をする必要がなくなります。

于 2012-09-20T13:08:23.223 に答える
1

あなたがしようとしていることは、基本的に他のプロセスにメッセージを送ることです。このためには、ある種のIPCメカニズムが必要です。各メッセージに対して複数のリスナーが必要なように思われるため、メールスロットがおそらく最良の方法です。残念ながら、.NET にはメールスロットのサポートが組み込まれていないため、P/Invokeを使用する必要があります。

組み込みのソリューションを探している場合は、名前付きパイプ、WCF、.NET Remoting、またはベア TCP または UDP を使用できます。ただし、これらのいずれかを使用すると、すべてのリスナーをループして、一度に 1 つずつメッセージを送信する必要があります。これはそれほど大したことではありませんが、個別の接続を維持するのは少し手間がかかります。面倒。

WCF と .NET Remoting を使用すると、クライアントも .NET を使用するようにかなり制限されていることに注意してください。クライアントがネイティブまたはその他のプラットフォームである可能性がある場合は、メールスロット、名前付きパイプ、および TCP/IP が最善の策です。

于 2012-09-20T23:00:19.620 に答える