views:

136

answers:

3

hello, I need a simple, lightweight authentication and data transfer mechanism (on .NET platform). I have looked a WCF and SOAP etc. they all seem too top-heavy and complicated for my needs. I need something simple and straight-forward leading me to a chat protocol like Jabber. My data-transfer is mostly small - example: user searches for something and gets some results back etc.

Given Jabber does authentication, encryption and what-have-you, any reasons why I should not be using it? suggestions on alternates?

Thanks

A: 

For datatransfer, why not use simple plain HTTP?

Ritsaert Hornstra
A: 

Sounds like XMPP might be a good fit, but you should consider HTTP as well. XMPP probably only makes sense if you really need stateful messaging/transfer. HTTP could work quite well for long-running connections if you use e.g. Transfer-Encoding: chunked.

djc
Indeed! Other than stateful communications, there is a collaborative element to my application. Thanks for the response.
Mikos
+1  A: 

Search results don't sound peer to peer (searching tends to be colocated with the datastore is why I'm guessing that), in which case HTTP probably fits your needs. Write your server in anything whatsoever and use a WebClient, supplying authentication to each request. You can use Digest authentication if you're concerned about security. The downside of XMPP is that you have to worry about staying connected, and that there's a lot of extraneous information on the network. For instance, presence, iq, protocol negotiation. Also ejabberd (not sure about the others - is there a big .Net XMPP server?) tends to try to negotiate SSL.

If you're not worried about the bandwidth you're probably not worried about any of the above, but certainly the simplest programming model is just a WebClient firing stateless requests. You're never disconnected and the error handling is simple.

OTOH your response to the above comment seems to imply that you might have some P2P elements, in which case HTTP will probably not serve, unless you incorporate a little bit of network traversal and proxying to expose the peers as public addresses to each other. XMPP is WAY simpler than that.

We have a networked lecture theatre application transferring 750Mb/s seamlessly over XMPP. You'll probably find it handles the load ok.

I recommend ejabberd on the server (it's cross platform and incredible) and agsXMPP for the client.

Chris Hagan