I was turning over in my mind how one could start a peer to peer application without some kind of centralized directory, or protocol like PNRP that seems to have problems if certain ports are blocked, and isn’t supported on all devices. XMPP is a pretty interesting solution, and I’m sure we’ll start to see a lot of interesting applications on the android platform utilizing the native XMPP application bridge that android seems to have, but XMPP doesn’t seem to have any guarantees (at least as far as I’ve seen) on whether missed messages will be queued (or how long they will be kept) which makes it a rather ornery transport if you have clients that are only sometimes connected, and, say, want to synchronize data.
Then it occurred to me, that email is a pretty good solution to addressability and reachability problems on the internet. So I set out to see what people were doing with email as a transport layer. Turns out this is rather a hard thing to search for. I have stumbled upon a SOAP 1.2 note on a SOAP email binding, which seems interesting, but as it’s a note, I’m not sure anyone has implemented based on it.
.NET CF 3.5 seems to have both a WindowsMobileMailBinding (for windows mobile) and an ExchangeWebServiceMailBinding for windows, which seem really neat, but are tied to exchange server (which users of some random P2P app don’t necessarily have access to).
So here’s the question:
Why aren’t people all over this? Email is pretty pervasive, with free email accounts aplenty, so why don’t more applications use it as a data transport?
- There isn’t a clean solution to separate data transport emails from regular across email platforms?
- There are concerns about whether application generated messages could be considered spam?
- There is a worry about application messages being marked as spam and dropped?
- People think XMPP and PNRP, etc, are good enough for creating P2P meshes?
- Too complicated to configure and support?
- Against the TOS of some email accounts to send application data?
Anyone have any info/theories?