解析程序服务示例工作原理
解析程序服务示例实例化解析程序服务,并将指定的消息传递给它进行处理。 解析程序服务示例客户端应用程序使用第一个参数作为包含多个解析程序请求的 ResolverList.xml 文件的路径,并将这些请求发送到解析程序服务。 例如,下面是示例中使用的 XPATH 请求。
//XPATH
<Resolver>
<name>XPATHWithFILE</name>
<Content>![CDATA[XPATH:\\TransportLocation=/*[local-name()='OrderDoc'
and namespace-uri()='http://globalbank.esb.dynamicresolution.com/
northamericanservices/']/*[local-name()='ID' and namespace-
uri()='http://globalbank.esb.dynamicresolution.com/
northamericanservices/'];TargetNamespace=;
MessageExchangePattern=;EndpointConfig=;JaxRpcResponse=;TransportType=;
Action=;TransformType=]]
</Content>
<body>
![CDATA[
<ns0:OrderDoc xmlns:ns0="http://globalbank.esb.dynamicresolution.com/northamericanservices/">
<ns0:customerName>Microsoft</ns0:customerName>
<ns0:ID>FILE://C:\Projects\Microsoft.Practices.ESB\Source\Samples
\DynamicResolution\Test\Filedrop\OUt\%MessageID%.xml</ns0:ID>
<ns0:requestType>10</ns0:requestType>
</ns0:OrderDoc>
]]
</body>
</Resolver>
注意
Content> 元素的实际内容<不包含用于包装上述列表中的行的空格字符。
前面的列表显示请求包含 Content> 元素中的<解析程序配置连接字符串。 body<> 元素包含消息正文。
解析程序服务使用 ResolverMgr 类实例化由连接字符串中的解析程序类型定义的相应冲突解决程序的具体实例。 对于 XPATH 请求,这是 XPATH 解析程序。
接下来,框架创建名为 ESB 的 ResolveProvider 类的实例。Resolver.XPath 用于处理请求。 客户端应用程序将来自解析程序服务的响应消息写入名为 \Source\Samples\ResolverService\Output 的文件夹。 以下列表显示了响应的内容。
//XPATH
Resolver.Action =
Resolver.ActionField =
Resolver.DocumentSpecName =
Resolver.DocumentSpecStrongName =
Resolver.EndpointConfig =
Resolver.EpmRRCorrelationToken =
Resolver.FixJaxRpc = False
Resolver.InboundTransportLocation =
Resolver.InboundTransportType =
Resolver.InterchangeId =
Resolver.IsRequestResponse =
Resolver.MessageExchangePattern =
Resolver.MessageType =
Resolver.MethodName =
Resolver.OutboundTransportCLSID =
Resolver.ReceiveLocationName =
Resolver.ReceivePortName =
Resolver.Success = False
Resolver.TargetNamespace =
Resolver.TransformType =
Resolver.TransportLocation = FILE://C:\Projects\Microsoft.
Practices.ESB\Source\Samples
\DynamicResolution\Test\Filedrop\OUt\%MessageID%.xml
Resolver.TransportNamespace =
Resolver.TransportType = FILE
Resolver.WindowUserField =