I'm developing an online SMS messenger and looking for a scalable and robust SMPP library for .NET. I saw EasySMPP (but have some doubts with it) and RoamingSMPP. There are also one but I can't recall it's name. For me the most important is it's scalability, stability and fault tolerance. I may have 500k+ users and several hundreds SMS per second. The communication will be 2 way, receive should be able to reply to SMS msg received from my messenger.
So I'm interested if anyone can recommend the library which suits my needs? It doesn't matter for me if it's free or commercial.
Thanks
Davita, I've been using the Jamaa SMPP Client for 3 months with success. Its relative easy to implement, and its free.
Inetlab.SMPP
http://www.inetlab.com/Products/Inetlab.SMPP.aspx
Very good library
Scalability in SMPP protocol is complicated matter. You can scale horizontally by firing multiple connections but this creates issues like Status Reports coming back on other connection than the message has been submitted, if one account is used. Vertical scaling is not only on the component (but of course badly created component can limit the throughput) but quite often is limited by the SMSC itself - it is hard to find an SMSC that would not saturate over 100-150 messages per second returning throttling error (0x00000058 - ESME has exceeded allowed message limits). Concluding - achieving high performance may require cooperation with operator. Component/library may come handy if it has e.g. throttling or submit to multiple destinations support built in.
Robustness is another rather subjective thing but in my opinion good & preemptive support are a part of it.
Fault tolerance can rather be only achieved in cooperation between component/library and the application that is using it. Library cannot do all the things like retrying submits, dealing entirely with throttling, responding to errors in submit_multi operation etc. This would call for a queuing/buffering mechanism and would certainly interfere with high throughput for basic operations. It would rather be an SMPP gateway if you would like it to deal with all errors that may appear. But with good library all this can be done easily for starters and the fine tuned with growing performance demands.
This commercial .NET library may be worth considering:
http://www.tops.com.pl/en/products/smscc/
Has quite large number of installations, quite few by large telecoms. Can be used in scalable manner both horizontal & vertical and can implement fault tolerance scenarios. In real life tests achieving over 500 messages per second on single TCP/IP link, limited by the SMSC's capabilities.
There is only really the ActiveXperts component, though I'm not sure if it's a native .NET library.
EasySMPP and RoaminSMPP are both full of serious bugs and incomplete. The Devshock compone t is awful. We tried them all.
Unfortunately we ended up writing our own in native .NET. We're approaching the 1mil/messages/month mark with it.
There is a German company that I can't remember the name of that do a SMPP component but the licensing costs are very high and I seem to recall that it was a COM library.