我们有一个基于服务的系统。系统是分层的或分层的,因此来自外部实体的单个服务调用可能会触及一个,两个或三个其他服务,具体取决于呼叫类型和系统状态。
我们希望能够通过这些不同的服务跟踪特定呼叫的进度。
理想情况下,当外部呼叫进入时,会生成一个跟踪号码,这跟随整个系统的所有后续呼叫。
我们可以使用任何特定的设计模式或WCF功能(模式的实现)来跟踪这一进展吗?
This page gives an example of using session IDs,但不清楚一旦涉及多项服务,正确的做法是什么。
This page may also have some relevance.
我们对C#/ WCF实现特别感兴趣,但对相关资源的引用很有意思(Java / PHP /无论如何)。
答案 0 :(得分:2)
我会使用面向方面的编程来处理这个问题。我认为正确的部分是服务行为。
这将允许您创建一个坚持服务方法(或服务)的属性。那有BeforeAction / AfterAction / OnError。
对于入口点服务,我会让操作创建您的个人会话ID,将其填入WCF上下文,然后使用Before,After和Error方法将数据发布到您的数据存储,或者您计划识别进度。
答案 1 :(得分:0)