我应该尝试将 asp 控制事件放入 BLL 中吗?
Posted
技术标签:
【中文标题】我应该尝试将 asp 控制事件放入 BLL 中吗?【英文标题】:Should I try to put asp control events into the BLL? 【发布时间】:2011-05-16 13:40:56 【问题描述】:我最近一直在学习数据访问层、业务逻辑层和表示层,但我还有一些不太清楚的东西。
我可以将 DAL 和 BLL 与表示层一起使用来获取或设置数据库中的信息。
但我也想过asp控制事件,以及我应该如何实现它们。
例如,我应该尝试将按钮单击事件放入 BLL 中还是应该将其留在 aspx 代码隐藏文件中?
如果我应该将它们放入 BLL,我会怎么做呢?
我不确定如何让事件调用 BLL 中的方法,因此非常感谢任何建议。
【问题讨论】:
我希望我能接受多个答案。我选择了 Tom B 的答案,因为它对我来说是最容易理解的,并且在我了解有关 N 层方法的更多信息时为我提供了一个很好的使用指南。 没问题。我们基本上都在说同样的事情,除了 Andrew 对适当的体系结构进行了高级解释,我添加了使用接口的一般示例实现,Tom 给出了更具体的示例。总而言之,任何最能帮助你理解的东西 =) 【参考方案1】:鉴于此架构:
演示 -> 业务 -> 数据
任何层都应该只知道并对其直接右侧的层做出假设。这意味着表示层可以与业务层对话并使用它的 API,但它不应该直接与数据层对话。业务层可以使用数据层的 API,但它永远不应该知道或假设使用它的表示层。显然,数据层应该对其他任何层一无所知。
如果你遵循这个一般原则,你会发现你的应用程序会更简单,更容易维护。
不过,要回答您的问题,按钮点击事件属于表示层 - 将按钮点击事件放入您的业务逻辑中会模糊两层之间的界限并产生不必要的耦合。
【讨论】:
【参考方案2】:您的 ASPX 代码隐藏文件(表示层)可以直接引用您的 BLL(导致耦合),或者您可以使用更面向服务的方法。这将涉及创建由您的表示层引用并由您的业务层实现的接口。在应用程序初始化期间(即在您的 Global.asax 文件中),您可以通过依赖注入或其他方法将 BLL 连接到您的表示层。
【讨论】:
【参考方案3】:如果事件与业务模型有关,那么您应该在 BLL 中创建一个方法。如果是 UI 类型的事件,在后面的代码中处理。因此,例如,如果用户单击按钮来计算运费,则在按钮的单击事件处理程序(后面的代码)中调用 BLL 对象的 CalculateShipping() 方法。但是,如果您有一个可以更改页面背景颜色的按钮(我想不出更好的示例),那么您可以在后面的代码中完全处理它。
【讨论】:
以上是关于我应该尝试将 asp 控制事件放入 BLL 中吗?的主要内容,如果未能解决你的问题,请参考以下文章