哪个层的功能如下:缓存和日志记录属于哪个?

Mik*_*ike 6 c# architecture design-patterns business-logic

假设我的业务层当前包含一堆DTO和单独的服务类,以便与数据存储库进行通信.

例:

class PersonService
{
   IPersonRepository _personRepository;
   ILogging _logger;
   ICacheStorage _cache;
   // Constructor here to create concrete objects.

   public Person GetPersonById(int Id)
   {
       // error logging and caching here???
   }
}
Run Code Online (Sandbox Code Playgroud)

在这一层记录和缓存是否有意义?或者,应用服务层处理这些问题会更有意义吗?或者可能还有别的东西?

Eup*_*ric 5

只要有可能,就可以或应该实施缓存。此外,缓存应该是透明的,因此使用它的任何人都不应该知道它实际上已被使用。大多数时候,将其放在数据访问层中是合乎逻辑的,但有时将其放在业务层中也是合乎逻辑且可能的。

在我看来,日志记录是不属于任何层的东西。它应该是具有一个接入点的应用程序范围。