Every SF fan, sooner or later, goes through a phase in which he/she questions the plausibility of what goes on on the various book/shows. Well, I guess I'm going through mine right now.
I'm slightly bothered by the classical "Captain, we've been hailed" or "Hail them!" when the other endpoint is, to use the understatement of the year, implemented by a different IT shop. Apparently the WS-I(ntergalactic) must have an exceptional power in the future... Anyway it would have been more respectful of the incredibly good work of Simon et Al. to have poured some extra teaspoon of narrativium in it, in order to make a more credible IT 🙂 They made such a good job on other aspects! Like for the cumbersome phasers, or the fear to use teletransport for human being...more on that below.
In fact, the topic has really a great potential as a sleep waster (well. It's S.Ambrogio, protector of Milan, so I can sleep longer despite of the fact that I'm in Florence. Side effects of global variables use) and IFunnyMusingFactory. After all, they already written the physics of Star Trek: don't you think at The IT of Star Trek would have a market as well?;-)
So! Let's get a taste of the possibilities offered by the subject, and let's consider a very specific use case: the teletransportation of Captain Archer from one machine to another. Here I'll ignore scenarion in which the destination endpoint is just thin air, i.e. there's not a listener machine on it: that would be too futuristic even for the great SP2 and its HTTP.sys (did I already mentioned that it would be good to install it?;-)).
Well, what about the MEP? I'd vote for a OneWay, Fire&Forget pattern: the guy goes and, once in place, he makes his SF thingies without a thought about correlating his coming back (unless he carries back and forth in his pocket a lottery ticket with an xs:ID as the number). Interesting point, he can come back using different transports and in fact this is often the case (quote it, next time somebody will ask you an example of an end to end scenario 🙂 hmm, after all maybe better not making mention of it: what about classical supply chain?). The first catch, however, is about the fact that moving Archer is not just sending a message: I'd say we are moving a full instance, public & private (that you can do with VS2005 serializer as well, I believe) data plus logic as well. Ahh, the joy of passing by value a starfleet officer: so much for the loosely coupling/sharing schemas instead of classes. A metaphor has the right of not being a perfect match, but here I'd say it's abusing of that right... OK! Let's crawl in the lower levels of abstraction, and let us consider how to serialize the poor guy. I'd say that in the SOAP body I'd carry the info about... uhmm, ehr, well... the body! While we can expect to have a nice DSL schema available (actually, some dozens of them), many data will have to be raw and judging from the shoulders our happy waterpolo fan would ask a band too broad to be able to be just plainly Base64 encoded. Any attachment option is out of question, we want to remain good WSA citizen:considering that we are speaking of hundreds of years in the future, plus the fact that hopefully MTOM will become a recommendation in few weeks, the problem has a clear solution. So far for the payload: what about the header, that is to say the features we want to leverage in our transmission? Security is of course very important: we don't want anybody to mess with our captain topology, so we'd better sign the important parts: nor we want anybody to commodize our brave hero's brain by capturing an image and restoning it on some futuristic Virtual Server, so we better encrypt it (if Eve REALLY wants to capture his legs or hands, however, let her have it: it's part of the fun of being able to selectivey secure part of the message, after all...). What about reliable delivery? Assuming to fragment the transmission in many submessages to better deal with the sheer message size, it's particularly surprising that we will want to deliver all messages (Archer with no ears? nahh), each message only once (two hands should be enough for anyone), and in the correct order (hand, elbow, shoulder, wrist. No wait, there's something wrong...) unless there's some applicative ordering info: in that case the delivery can happen in any sequence. In the case of many submessages, it would be a good idea to establish a security context: and so on... there are many aspects that would deserve being covered further (what about SLAs? Can I spend up to one hour to receive a working version of the captain? If after receiving the 51% of the pieces my teletransport farm goes down, should I compensate? How can I be sure that instead of the good old captain you are not teletransporting an infuriated tatanka that would play havok with my brittle tech decks? Is there an indentity authority to whick you can broker your trust to get access to may deks? and so on)., but I think I gave the idea 🙂 And I'm already exposed to be made fun of from Alessio or everybody I know from my sub, so I'd better stop my reputation from compromised further...