您多久使用一次自定义活动?

时间:2009-02-03 22:15:39

标签: asp.net events

我一直在学习ASP.NET的一些新功能,超出我目前的舒适程度,我想从设计的角度确切地弄清楚自定义事件的确切位置。我知道他们是如何工作的,以及观察者/订阅者模式,但似乎自定义事件并没有被讨论太多。似乎可以通过在整个地方注册事件和响应来构建整个应用程序,然而,我们看到更多的控制器类型类以预定的模式关闭代码...它是OOP,但仍然是程序。

从设计的角度来讲,何时最好使用事件?是否存在某些方案,它们非常方便,但其他方面并不多?或者是否可以创建一个严重依赖它们的应用程序,程序员可以根据需要尽可能多地使用它们?

大多数情况下,我只是对他们陷入“正确”设计的地方感到好奇,因为我可以很容易地重新设想我的一个或两个应用程序更多地依靠它们而不是仅仅按下按钮时触发控制器类逻辑点击。

3 个答案:

答案 0 :(得分:3)

你在asp.net代码中看不到那么多自定义事件,主要是因为可以触发“事件”的东西往往是用户通过内置控件之一在按钮上执行的操作。什么,而不是。服务器本身并没有真正与代码“交互”,因为它以事件驱动的方式执行。

你可以通过一个常规控件获得一个回发goind。服务器上的执行往往是非常程序化的......这只是在像web这样的无状态请求/响应环境中最有意义的模式。

asp.net页面生命周期和服务器控件都有很多它们公开的事件,并且可能触发那些OO,因为方面实际上只支持它本质上是一个高度程序化和线性的执行路径。

自定义服务器控件公开自定义事件,就像内置控件一样,页面开发人员有一种机制,通过这种机制,他们可以与控件进行交互而无需紧密耦合...这样您就可以找到大多数自定义事件。但是,如果您确实拥有许多可能使用该控件的不同页面,那么制作自定义服务器控件的成本实际上是值得的。

我经常在用户控件中使用事件。虽然您可以非常类似于服务器控件来处理用户控件,但通常用户控件在OO设计原则方面往往较弱。使用用户控件,您通常只是尝试获得一些关注点和一些封装的分离,但是您仍然倾向于在托管页面和用户控件之间进行相当紧密的耦合。但是,有时用户控件可能需要向主机页面发信号通知已满足某些条件,并且在这些情况下,自定义事件是一种处理该信令的好方法,其耦合少于直接调用主机页面上的方法。

答案 1 :(得分:2)

我主要在构建自定义控件时使用自定义事件。

在ASP.Net中,我根本不使用自定义事件,因为即使使用自定义控件,我也会尝试更多地依赖现有的页面生命周期。

在Windows窗体中,我所做的几乎所有内容都被抽象到某个控件中,因此我会使用它们。

答案 2 :(得分:0)

我在ActionScript 3.0中完成了很多自定义事件。我之所以提到这一点,是因为它的委托系统与.NET非常相似。

我正在创建一个可以一次排队多个剪辑的SWF播放器。我的自定义时间轴控件将触发ClipEnd事件,我的主应用程序将监听并推进播放列表。如果用户进入新剪辑或应用程序自动执行,我的播放列表将触发NewClip事件。我的应用程序会监听这些并告诉时间轴开始播放下一个剪辑。所以我的时间轴和播放列表通过自定义事件共同连接。