WCF消息检查员

时间:2011-05-09 06:39:00

标签: c# wcf

我们有一个遗留的中间件应用程序,我们想为它实现WCF适配器。我们暂时说我们只会消耗WCF服务。中间件能够处理XML消息。我们想从中间件获取消息xml,将其转发给WCF客户端。在得到响应之后,我们想用响应xml来回复中间件。

以下是我们希望了解的一些问题。

  1. 我们应该能够发送原始xml而不是基于对象的WCF调用
  2. 在WCF的所有层之后收到xml(这很重要,因为xml本身的验证应该已根据合同执行),我们将把它转发到中间件。
  3. 我们的中间件实现了传统的Web服务,但是datacontract序列化器存在各种各样的问题。其中一个是对象引用。因为我们已经可以看到通过在xml元素中使用id属性来保持对象的引用。我们怎么能抓住这个呢?我们可以考虑为数据合同序列化器做些什么。
  4. 中间件关注原始邮件本身。我们希望其他与消息相关的属性,如SOAP,WS-Security等,由WCF代理本身处理。
  5. 有谁知道WCF的Biztalk适配器是如何工作的
  6. 任何反馈都将不胜感激。

1 个答案:

答案 0 :(得分:1)

1)您正在寻找的内容称为POX(Plain Old XML)。 WCF使用WebHttpBinding支持此功能。 Here's a good starting point.

严格来说,它不是“原始XML”,因为WCF决定要发送什么,但出现的是纯XML文档而不是SOAP消息。如果你不能让WCF发送你想要的东西,即使是像POX这样的东西,那么跳过该组件的WCF并简单地打开一个套接到中间件层并直接发送XML可能更有意义。在这种情况下,您确实可以准确发送遗留中间件应用程序所期望的内容。 WCF仍然可以处理面向客户端的连接。

2)如果您有面向客户端的WCF服务,WCF将解析客户端消息并在您的代码中为您提供某种对象(取决于服务合同)。此时,您的WCF服务代码要么使用另一个WCF连接来联系中间件,要么就像我提到的那样打开一个套接字并发送必要的请求。但是在你的服务方法开始之前就已经为你完成了WCF的“东西”。

4)那应该没问题。在将任何内容发送到中间件之前,WCF和您的代码将处理它。

希望有所帮助。 :)