解决方案设置
> DAL(类库)
> BLL(类库)
> Common(类库(一些常用功能 – 枚举,日志记录,异常……))
> Application1(Windows应用程序)
> Application2(Windows应用程序)
> WebApp(Web应用程序)
> ……
假设我有一个Customer实体,它是:
> sql Server中的一个表
> DAL中的CustomerDataTable
> BLL中的客户类
>所有应用程序中的BLL.Customer类
BLL和DAL应使用哪种对象进行通信 – DataTable或List< Customer> (例如)?在第一种情况下,BLL逻辑应将Customer对象转换为DataTable并将其发送到DAL.在secod的情况下,DAL层应该知道Customer层,它位于BLL层.但原始DLL引用DAL而不是相反…
我是否应该将所有类放入单独的程序集中,这是由所有其他类引用的(Common,BusinessObjects,…)?在这种情况下,我可以在所有项目中使用Customer类.
我知道,当我知道只有一个BLL会使用我的DAL时,我是否应该费心去分离DAL和BLL.在这种情况下,我可以将它们合并为一个项目.
PS – 我正在阅读关于DataTables的内容,很多人说我们根本不应该使用它们.有什么更好的选择?也许现在是我学习一些ORM映射工具的时候了:)
解决方法
在我看来,你应该有另一个层(单独的DLL).就像“域名”一样,您会在哪里保留像Customer这样的所有实体.
然后简单地在此程序集的层次结构中包含所有更高级别(DAL,BLL,UI和其他).
然后简单地在此程序集的层次结构中包含所有更高级别(DAL,BLL,UI和其他).
示例体系结构可能如下所示:
(数据库)< - > DAL< - > BL< - > UI
并且在所有级别上,您都可以访问“域”图层.DAL应该返回List而不是DataTable.在某些阶段,您可能希望在DAL中使用某些OMR(如NHibernate)的开发过程也可能返回List.