0

我正在尝试为我正在开发的大型 .NET 应用程序创建一个结构。我计划创建三个项目:

DataAccessLayer
BusinessLogicLayer
UserInterfaceLayer

我有两个问题。

  1. 您将如何处理所有三层共有的功能,例如将错误记录到文本文件中。.NET 中不允许循环依赖。我相信最好的方法是创建一个名为 Utilities 的第四个项目。
  2. 您会在所有项目中拥有 .config 文件还是仅在用户界面层中拥有 .config 文件(将所有配置参数作为参数传递给 BLL 和 DLL 中的构造函数)
4

4 回答 4

2

您将如何处理所有三层共有的功能,例如将错误记录到文本文件中。.NET 中不允许循环依赖。我相信最好的方法是创建一个名为 Utilities 的第四个项目。

横切关注点通常以第四次组装结束。但在记录器案例中,只需使用开发人员习惯的现有框架之一。例如 nlog 或 log4net。

循环依赖是一种气味(高耦合或低内聚),不应在任何地方允许。

其他人建议使用依赖注入,这是减少耦合并因此提高可维护性的好方法。我在这里写了一篇文章:http: //www.codeproject.com/Articles/386164/Get-injected-into-the-world-of-inverted-dependenci

您会在所有项目中拥有 .config 文件还是仅在用户界面层中拥有 .config 文件(将所有配置参数作为参数传递给 BLL 和 DLL 中的构造函数)

我宁愿创建一个配置抽象。类似的东西IConfigurationRepository。那么配置存储在 web.config 还是其他地方都没有关系。

于 2012-11-12T12:20:27.667 回答
0
  1. 拥有第四个项目是一种解决方案,另一种是将其放置在数据层中,并在业务层中拥有允许 UI 层访问它们的方法。

  2. 您应该只将每个设置放在一个地方,因此 UI 层似乎是一个好地方。

于 2012-11-12T11:18:46.730 回答
0
  1. 是的,创建另一个用于记录的项目。我建议在那个新项目中使用Log4Net 。

  2. 我会将配置设置保留在顶层 - UI 层 - 并将任何必要的内容传递给其他层。

你没有提到DI,我肯定会使用 DI - 这应该是一个优先事项。

于 2012-11-12T11:19:27.040 回答
0
  1. 您可以创建一个日志记录项目并将其添加到所有其他项目中,但在我看来,您应该为每个项目添加一个记录器配置文件,因为您正在建模三层架构意味着首先对逻辑上分离的三层建模,所以您应该能够分别开发和测试它们中的每一个。
  2. 如果您有特定的层配置设置(例如,一个或多个层停留在不同的服务器上以获得强大的性能约束),则为每一层使用不同的配置文件。如果您有相同的配置设置,您可以在用户界面中只使用一个配置文件,但请注意,如果您更改用户界面,您将不得不替换所有设置,我认为这可能是一个严重的问题。
于 2012-11-12T11:45:54.427 回答