在 c# 中跟踪以相同的顺序方法写入跟踪在 3 层体系结构中调用

本文关键字:跟踪 体系结构 调用 顺序 方法 | 更新日期: 2023-09-27 18:17:34

我正在研究 3 层架构应用程序。其中A()第一层的方法调用B()第二层的方法调用第三层C()方法,并以相反的顺序返回响应。

在每个方法中,我都使用 StringBuilder 创建方法执行的字符串跟踪Microsoft并使用 Enterprinse 库将其写入 finally 块。

A()
{
  string.append("A() method started");
  B();
  string.append("A() method finished");
}
B()
{
  string.append("B() method started");
  C();
  string.append("B() method finished");
}
C()
{
  string.append("C() method started");
  some...task;
  string.append("C() method finished");
}

则跟踪为:

string.append("C() method started");  
string.append("C() method finished");  
string.append("B() method started");  
string.append("B() method finished");  
string.append("A() method started");  
string.append("A() method finished");

顺序相反。但我想

string.append("A() method started");  
string.append("B() method started");
string.append("C() method started");
string.append("C() method finished");
string.append("B() method finished");
string.append("A() method finished");

那么最好的方法或任何库来做同样的事情是什么。有人建议我使用拦截器方法。

在 c# 中跟踪以相同的顺序方法写入跟踪在 3 层体系结构中调用

是的,我同意这个建议。您可以尝试使用面向方面的编程(AOP(,您可以在其中执行方法拦截。尽管您可以通过反射和其他一些命名空间来执行此操作。但这样做很痛苦。

尽管默认情况下 C# 不是 AOP 语言,但有一些库可用于将 AOP 概念应用于 C#。一个是PostSharp。我相信您可以获得此的试用版/免费版。我发现它易于使用且非常简单。