我最近一直在学习数据访问层、业务逻辑层和表示层,但是我还有一些不太清楚的东西。
我可以将 DAL 和 BLL 与表示层一起使用来获取或设置数据库中的信息。
但我也想过asp控制事件,以及我应该如何实现它们。
例如,我应该尝试将按钮单击事件放入 BLL 中,还是应该将其留在 aspx 代码隐藏文件中?
如果我应该将它们放入 BLL,我将如何做呢?
我不确定如何让事件调用 BLL 中的方法,因此将不胜感激任何建议。
我最近一直在学习数据访问层、业务逻辑层和表示层,但是我还有一些不太清楚的东西。
我可以将 DAL 和 BLL 与表示层一起使用来获取或设置数据库中的信息。
但我也想过asp控制事件,以及我应该如何实现它们。
例如,我应该尝试将按钮单击事件放入 BLL 中,还是应该将其留在 aspx 代码隐藏文件中?
如果我应该将它们放入 BLL,我将如何做呢?
我不确定如何让事件调用 BLL 中的方法,因此将不胜感激任何建议。
鉴于此架构:
演示 -> 业务 -> 数据
任何层都应该只知道并对其直接右侧的层做出假设。这意味着表示层可以与业务层对话并使用它的 API,但它不应该直接与数据层对话。业务层可以使用数据层的 API,但它永远不应该知道或假设使用它的表示层。显然,数据层应该对其他任何层一无所知。
如果您遵循这个一般原则,您会发现您的应用程序将更简单且更易于维护。
不过,要回答您的问题,按钮单击事件属于表示层 - 将按钮单击事件放入您的业务逻辑中会模糊两层之间的界限,并会产生不必要的耦合。
如果事件与业务模型有关,那么您应该在 BLL 中创建一个方法。如果是 UI 类型的事件,在后面的代码中处理。因此,例如,如果用户单击按钮来计算运费,则在按钮的单击事件处理程序(后面的代码)中调用 BLL 对象的 CalculateShipping() 方法。但是,如果您有一个更改页面背景颜色的按钮(我想不出更好的示例),那么您将在后面的代码中完全处理它。
您的 ASPX 代码隐藏文件(表示层)可以直接引用您的 BLL(导致耦合),或者您可以使用更面向服务的方法。这将涉及创建您的表示层引用并由您的业务层实现的接口。在应用程序初始化期间(即在您的 Global.asax 文件中),您可以通过依赖注入或其他方法将 BLL 连接到您的表示层。