Vb.net .NET-离婚层
我正在尝试为正在开发的大型.NET应用程序创建一个结构。我计划创建三个项目:Vb.net .NET-离婚层,vb.net,design-patterns,n-tier-architecture,3-tier,Vb.net,Design Patterns,N Tier Architecture,3 Tier,我正在尝试为正在开发的大型.NET应用程序创建一个结构。我计划创建三个项目: DataAccessLayer BusinessLogicLayer UserInterfaceLayer 我有两个问题 您将如何处理这三个层共有的功能,例如将错误记录到文本文件。在.NET中不允许循环依赖项。我认为最好的方法是创建一个名为Utilities的第四个项目 您是在所有项目中都有.config文件,还是仅在用户界面层(将所有配置参数作为参数传递给BLL和DLL中的构造函数) 拥有第四个项目是一种解决方案,
DataAccessLayer
BusinessLogicLayer
UserInterfaceLayer
我有两个问题
我宁愿创建一个配置抽象。类似于
IConfigurationRepository
。那么,配置是否存储在web.config或其他地方就无关紧要了。您能更具体地描述一下您正在建模的解决方案的场景吗?@Riccardo,谢谢。dataaccesslayer和businesslogic层可能抛出异常,我想记录这些异常。我可以在用户界面层(dataaccesslayer和businesslogiclayer)中添加一个日志功能,或者为此创建一个实用程序项目。谢谢。你的意思是有一个DI项目吗?不,使用DI将数据访问层注入到业务逻辑层中。DI确实分离了层之间的依赖关系。如果是“不,不要创建另一个日志项目,因为使用Log4Net“日志”是一个已解决的问题”?不,我更喜欢创建另一个日志项目。向该项目添加一个Log4Net引用,并使用Log4Net实现一个通用日志接口。因此,每当需要更改日志框架时,不需要更改其他代码—只需使用新框架实现日志接口即可。@JoeR:我从未在应用程序中切换过日志框架。任何这样做的人在选择记录器之前可能都没有完成作业。因此,imho能够切换日志记录实现是一个不成问题的问题。如果我选择您的选项1,将存在循环依赖性,即DAL将访问BLL,反之亦然。我是不是误会了什么?@w0051977:是的,那你是误会了什么。业务层中的方法只能由UI层访问,数据层直接访问,业务层可以调用数据层。在您的回答中,数据层也将访问业务层。这不会引入循环依赖性吗?@w0051977:不,数据层不会调用业务层。你能解释一下DI与这个问题有什么关联吗?我理解DI是将实例变量传递给构造函数的过程,但我不理解与这个问题的相关性(我遗漏了一些东西)。一旦我明白了这一点,我会记下答案。谢谢。@w0051977:DI通常也表示根据抽象进行编码。因此,每次做某件事时,您对应用程序的了解就要少得多。它还使应用程序在增长时更容易重构(只需重新配置容器,而不是使用重构代码的每个地方),您能提供一个示例吗?谢谢,谢谢。我读过这篇文章。你是说对DI有一个不同的项目吗?我仍然不明白这个问题的相关性(我遗漏了一些东西)。谢谢。你能回答我上次评论中的问题吗?然后,我会将你的答案标记为已接受的答案。