2011-05-09 68 views
3

我们有一个传统的中间件应用程序,我们想为它实现WCF适配器。可以说暂时我们只会使用WCF服务。该中间件能够处理XML消息。我们希望从中间件获得消息xml,并将其转发给WCF客户端。得到响应后,我们想用响应xml回复中间件。WCF消息检查员

以下是我们希望研究的几个问题。

  1. ,我们应该能够在收到WCF的所有层之后的XML(这是很重要的发送,而不是基于对象的WCF调用
  2. 原始XML由于XML的验证本身应已按合同执行)我们将把它转发给中间件。
  3. 我们的中间件实现了经典的web服务,但是datacontract串行器存在各种各样的问题。其中之一是对象引用。因为我们已经可以看到,通过在xml元素中使用id属性来保存对象的引用。我们如何才能克服这一点。有没有更多的事情我们可以考虑用于数据合约序列化。
  4. 中间件关心原始消息本身。我们希望其他消息相关的属性(如SOAP,WS-Security等)由WCF代理本身来处理。
  5. 没有人有任何想法WCF BizTalk适配器是如何工作的

任何反馈,将不胜感激。

回答

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和你的代码将在向中间件发送任何东西之前处理它。

希望能有所帮助。 :)

+0

你的答案看起来有潜力。但我有更多的事情要与你讨论。 1)webhttpbinding看起来不错,但我们不能强制WCF服务器为我们改变这个特定的绑定,因为这可能是外部系统。一点关系可以解释为(我们的中间件)<->(我们的WCF适配器)<->(外部WCF服务器)。是的,套接字是我们的最后选择。但套接字永远不会是答案。我们必须提供MSMQ和命名管道绑定。 3)datacontract序列化非常重要,我们应该怎么做。 – 2011-05-12 04:34:39

+0

我不太了解3)帮助你,抱歉。 :(关于1),在与中间件交谈时使用webhttpbinding。它面向外部的一面可以使用任何目前正在使用的绑定或你需要的绑定。两者不一定是相同的,并且它们之间的翻译很容易。 (你的服务接受一个请求,打开一个到中间件的客户端连接,然后发送它,WCF处理格式化。)如果需求过于严格,与中间件交互的套接字可能是最好的方式,因为你将不必尝试和破解任何东西。 – Tridus 2011-05-12 12:58:44

+0

由于您回答了大部分问题,因此授予了积分 – 2011-05-16 12:26:25