views:

214

answers:

2

I am looking for an alternative to using UDP multicast on the .NET Framework and am looking for suggestions.

I need to send messages to several web servers running quite a few ASP.NET applications. These messages would be one-way only, coming from several different machines. UDP multicast would be perfect except that I can't use it due to it requiring administrative rights. See http://stackoverflow.com/questions/1941463/asp-net-multicast-udpclient-problems for details as to why.

Is there something else that would work in a similar manner, allowing multiple applications to receive broadcast-type messages?

+1  A: 

Have you considered using MSMQ or a SQL database? Using a SQL 2008 database you can have the SQL server notify you of changes as well.

Frode N. Rosand
+1  A: 

A few possibilities come to mind:

  1. Put your multicast UDP code into a Windows Service. By having only a single listener on the port, you wouldn't need elevated permissions. You could communicate with the service using shared memory or a number of other techniques.

  2. Use async point-to-point raw TCP connections to a central message dispatch / relay node. Sending and receiving messages with async I/O would minimize wait time.

  3. Use a persistent queuing mechanism such as Service Broker in SQL Server. It's still unicast, but you could have a single stored procedure that sent messages to all endpoints. Again, use async I/O to minimize wait times.

  4. Use a commercial message passing bus that runs out of process -- something like Tibco Rendezvous.

RickNZ