C#DAL与PL逻辑分离

C#DAL与PL逻辑分离,c#,data-access-layer,C#,Data Access Layer,我正在尝试编写我的第一个真正的多层应用程序,我想知道在winform应用程序中,如果我向表单添加一个对象数据源,这样我就可以使用数据绑定控件,而不是通过BLL,然后通过DAL来获取数据,那么它是否“打破”了DAL/PL分离规则 谢谢。这取决于您在此特定应用程序中如何定义分离。如果您有两种不同的获取数据的方法(一种来自数据源对象,一种来自BLL/DAL),那么是的,这可能被解释为违反了原则,因为您不再清楚地知道应用程序可以分离的点 如果您的数据源作为DAL的交互点公开,那么这将成为一个更好的模型

我正在尝试编写我的第一个真正的多层应用程序,我想知道在winform应用程序中,如果我向表单添加一个对象数据源,这样我就可以使用数据绑定控件,而不是通过BLL,然后通过DAL来获取数据,那么它是否“打破”了DAL/PL分离规则


谢谢。

这取决于您在此特定应用程序中如何定义分离。如果您有两种不同的获取数据的方法(一种来自数据源对象,一种来自BLL/DAL),那么是的,这可能被解释为违反了原则,因为您不再清楚地知道应用程序可以分离的点

如果您的数据源作为DAL的交互点公开,那么这将成为一个更好的模型

分离的思想是将应用程序中尽可能多的独立部分放在易于使用的模块中(包括调出,尽管这不一定是主要问题)。这意味着您需要在应用程序中的库/模块之间具有定义良好(且易于识别)的交互点


最终,选择取决于在给定的项目/应用程序时间内更容易维护/扩展的内容

以这种方式使用ObjectDataSource并不一定会打破BLL/DAL逻辑的分离。使用ObjectDataSource时,可以指定操纵模型中对象的BLL操作,而模型中的对象又可以在内部使用DAL。ObjectDataSource有效地提供了UI和BLL/业务对象之间的管道。BLL和DAL分离仍然存在

但是,在WPF的上下文中,您可能希望密切关注模型-视图-模型模式,该模式被提升为开发WPF应用程序的最佳方式。就WPF和WinForms之间的可重用性而言,我相信您的业务对象、BLL和DAL应该符合这一点(它们将构成MVVM中的“模型”),因为它们不应该内置UI考虑因素。但是,对于绑定到UI中的视图和操作的机制,您可能会发现这是一个自然的分歧点。WPF在未来可能会比WinForms得到更广泛的应用,我不主张对WPF模式进行Bastarding,纯粹是为了使其在WinForms中可重用