I fished, Steve bit, and then fought back with a "don't you go using channels directly," um, smack down (sorry for mixing fishing and outdated urban street cred metaphors, but I *am* from Texas). And he is right, excusing the bit about it being a bug. I was using the channel directly because of The Problem. The Problem was that using SoapSender resulted in a seriously bizarre set of soap headers, with problems including duplicate was:Action elements. Now we're talking bug! Of course, the *Real Problem* was that I didn't set IsIntermediary = true on the *Sender's Pipeline*. Silly me. This resulted in a very similar "slap my forehead, I already thought of that, why didn't I do it for both" sort of reaction. Reminds me of the old joke:
patient: "Doctor, doctor, it hurts when I hold my arm behind my back like this..."
patient demonstrates.
doctor: "Well, stop doing that."
I added the IsIntermediary bit to the sender's pipeline, and voila: Success. Consider my version revised. Thanks, Steve.
Now.
He poses a couple of questions that are interesting aspects of intermediary design.
Is trust point-to-point, or end-to-end?
Of course, being a f'in dork and a wanker consultant to boot, I realize that the only appropriate response [that could contribute to additional billable hours] is "It depends." There definitely isn't a one-or-the-other answer to this one. The question depends on the requirements, e.g. how the trust relationship is defined--is it end-to-end or point-to-point? Sorry to answer the question with the same question, but as far as I am concerned, that *is* the answer. I also think it begs additional questions about general intermediary design -- routers that do nothing more than route, in my opinion, should not modify the envelope. As I understand it, that one of the primary motivating factors for moving away from WS-Routing to the next-hop routing and WS-Addressing. Other intermediaries that route as a byproduct rather than as their core competency may or may not need to add their mark to the message, depending on role. I think the answer to the question depends on how far up the stack the role of the intermediary goes. More on this later. Back to work. I would be really interested in any comments anyone has on their experience with intermediary design with respect to how the messages are handled. (ahhhh, Fishing).
Comments