【发布时间】:2010-12-23 16:31:34
【问题描述】:
我试图更好地了解 WCF 的调度过程,特别是对各种可扩展点的影响和效果。从底部列出的网页来看,一旦通道堆栈将消息传递给调度程序,WCF 似乎将按规定的顺序执行以下操作。
- 消息检查器
- 操作选择器
- 消息格式
- 参数检查器
- 操作调用者。
我正在尝试找到一些选项来解决我遇到的问题,我正在考虑的一种方法是结合使用消息检查器、操作选择器、消息格式和操作调用程序。不幸的是,我的观察似乎表明执行顺序如下:
- 操作选择器
- 消息检查器
- 操作调用程序 (AllocateInputs())
- 消息格式
- 参数检查器
- 操作调用程序 (Invoke())
我可以理解在格式化消息之前调用自定义调用程序 AllocateInputs() 方法的细微差别,因为消息格式化部分本质上是将给定消息反序列化为一组方法参数,以传递给适当的操作和调用者的 AllocateInputs() 方法指定需要多少个参数。
让我印象深刻的部分是 Message Inspector 和 Operation Selector 之间的顺序倒置。在我看来,消息检查器在对消息进行操作时首先运行,而操作选择器确定消息的目标是哪个服务操作,这对我来说是合乎逻辑的。
问题:
- 这是由于 WCF 的不同版本或发行版造成的吗?
- 这是因为 WCF 实际上没有指定扩展点执行顺序吗?
参考页面:
Extending WCF to support custom data formats - Zulfiqar 的博客
Extending WCF with Custom Behaviours - MSDN 服务站 2007 年 12 月
Message Flow Interception Points - Nicholas Allen 的 Indigo 博客
注意:我很抱歉没有提供链接,因为我仍然是菜鸟,所以不能提供多个链接。 =)
【问题讨论】:
-
在那里,我投票赞成你的故事。您现在可以发布多个链接,因为您将拥有 11 个代表……也许:P
-
我为你添加了链接,@hg。
-
啊...我不知道这与代表有关。非常感谢,@Crowe。感谢@bobbymcr 也提供了链接。希望得到一些答案会不会太高了? =)
-
好吧,我这周一直在寻找这个信息,但它似乎仍然不存在于互联网上。 WCF 没有很好的文档记录 :(
标签: wcf wcf-extensions