编写可供第三方应用程序使用的自定义事件

时间:2012-09-20 10:10:39

标签: c# events

是否可以编写可由第三方应用程序处理的自定义事件?

我们有一个现有的应用程序,我们发现许多使用该应用程序的人正在使用sql触发器自定义编写自己的功能,当我们的应用程序发生时。

这导致我们自己的流程因某些阻止我们的应用程序的劣质第三方触发器而变慢的情况。

我认为如果我们可以提升他们可以在自己的服务或应用中处理的事件而不必使用触发器,我们可以让第三方开发人员更轻松。

这样我们就会失去阻止,因为我们可以解雇事件并继续。他们的缓慢/潜在崩溃也会在我们的过程之外发生。

A)这是一种合理的方法吗?

B)这可能吗?我可以将事件的范围超出我的应用范围吗?

修改

此后我发现其他相关问题值得关注:

  1. wcf cross application communication
  2. Interprocess pubsub without network dependency
  3. Listen for events in another application(这看起来非常接近我所追求的)
  4. 我想我正在寻找最简单的方法,但如果我们想在公司内部的其他许多应用程序中采用这种方法,我们会遇到一些进一步的挑战:

    我们在vb6和delphi中有一些较旧的应用程序 - 我希望能够在我的(或第三方)较新的C#应用​​程序或服务中收听他们的活动。

    现在,我会看一下: Managed Spyhttp://pubsub.codeplex.com

1 个答案:

答案 0 :(得分:1)

您要做的是基本上将消息发送到其他进程。为此,您需要某种IPC机制。由于听起来每个消息都有多个监听器,mailslot可能是最好的方法。遗憾的是,.NET没有对邮件槽的内置支持,因此您必须使用P/Invoke

如果您正在寻找内置解决方案,那么您可以使用命名管道,WCF,.NET Remoting或裸TCP或UDP。但是,对于这些中的任何一个,你必须遍历所有的监听器并一次一个地向每个监听器发送消息,这不是什么大不了的事情,但保持单独的连接更多的是麻烦。

请注意,使用WCF和.NET Remoting,您几乎限制了客户端使用.NET。如果您的客户端可能是本地客户端或其他平台,那么邮箱,命名管道和TCP / IP是您最好的选择。