基于服务的系统中会话(跟踪)ID的设计模式?

时间:2011-06-03 12:53:00

标签: c# wcf design-patterns c#-4.0

我们有一个基于服务的系统。系统是分层的或分层的,因此来自外部实体的单个服务调用可能会触及一个,两个或三个其他服务,具体取决于呼叫类型和系统状态。

我们希望能够通过这些不同的服务跟踪特定呼叫的进度。

理想情况下,当外部呼叫进入时,会生成一个跟踪号码,这跟随整个系统的所有后续呼叫。

我们可以使用任何特定的设计模式或WCF功能(模式的实现)来跟踪这一进展吗?

This page gives an example of using session IDs,但不清楚一旦涉及多项服务,正确的做法是什么。

This page may also have some relevance.

我们对C#/ WCF实现特别感兴趣,但对相关资源的引用很有意思(Java / PHP /无论如何)。

2 个答案:

答案 0 :(得分:2)

我会使用面向方面的编程来处理这个问题。我认为正确的部分是服务行为。

这将允许您创建一个坚持服务方法(或服务)的属性。那有BeforeAction / AfterAction / OnError。

对于入口点服务,我会让操作创建您的个人会话ID,将其填入WCF上下文,然后使用Before,After和Error方法将数据发布到您的数据存储,或者您计划识别进度。

答案 1 :(得分:0)

Chris的反应很好,但我们发现Microsoft的this information非常非常有用 - 而且内置于IIS / WCF支持。

启用下面屏幕截图中显示的日志确实有帮助。

enter image description here

相关问题