我应该尝试将asp控制事件放入BLL吗?

时间:2010-11-27 13:47:57

标签: c# .net events bll presentation-layer

我最近一直在学习数据访问层,业务逻辑层和表示层,但我仍然有一些不太清楚的事情。

我可以将DAL和BLL与表示层一起使用来获取或设置数据库中的信息。

但我也考虑过asp控制事件,以及我应该如何实现它们。

例如,我是否应该尝试将按钮单击事件放入BLL中,还是应该将其保留在文件后面的aspx代码中?

如果我把它们放入BLL,我该怎样做呢?

我不确定如何将事件调用成为BLL中的方法,因此非常感谢任何建议。

3 个答案:

答案 0 :(得分:3)

鉴于这种架构:

  

演示文稿 - >业务 - >数据

任何一层都应该只知道并立即对该层做出假设。这意味着表示层可以与业务层进行通信并使用它的API,但它不应该直接与数据层通信。业务层可以使用数据层的API,但它永远不应该知道或假设使用它的表示层。显然,数据层应该对任何其他层一无所知。

如果您遵循这个一般原则,您会发现您的应用程序将更简单,更易于维护。

要回答您的问题,按钮点击事件属于表示层 - 将按钮点击事件放入您的业务逻辑会模糊两个图层之间的线条,并会产生不必要的耦合。

答案 1 :(得分:2)

如果事件与业务模型有关,那么您应该在BLL中创建一个方法。如果它是UI类型的事件,请在后面的代码中处理它。因此,例如,如果用户单击按钮来计算运费,则在按钮的单击事件处理程序(代码隐藏)中调用BLL对象的CalculateShipping()方法。但是,如果你有一个改变页面背景颜色的按钮(我想不出更好的例子),那么你将在后面的代码中完全处理它。

答案 2 :(得分:1)

您的ASPX代码隐藏文件(表示层)可以直接引用您的BLL(导致耦合),也可以使用更加面向服务的方法。这将涉及创建由表示层引用并由业务层实现的接口。在应用程序初始化期间(即在您的Global.asax文件中),您可以通过依赖注入或其他方法将BLL连接到表示层。