My colleges and I were debating in how best to build a robust service for our third-party email providers. The biggest problem is that our third-party email providers aren’t very robust in their up-time. Setting up reliable messaging is something we expected we were doing by using a third-party provider. Well that was a mistake:D
So we have to use some sort of queuing mechanism, for storing messages if our third-party is offline. Off course windows offers MSMQ out of the box so we got to play around with it in combination with WCF we got a head start with Dennis van der Stelt’s excellent blog post.
As I have been reading up on Azure and the new capabilities of the windows server appfabric the idea of hosting our reliable service in IIS looked promising. In the windows server appfabric (IIS 7.5) you have the option of auto starting your services, which you need if you want read the queue if it has been filled while the service was offline. You could always host in a windows service but then you would miss out on the great diagnostics features hosting in IIS brings you.
Although the debate we had in the office was about using NServicebus V.S. native WCF. We know that NServiceBus offers more out of the bus box but we only need basic queue functionality and NServiceBus brings a bit more to the table. As we don’t want our support staff bothered by yet another framework to learn/know about it we ended with native WCF functionality.