![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Welcome to Windows Vista Forums. Our forum is dedicated to helping you find solutions with any problems, errors or issues you are experiencing with Windows Vista. The Vista forum also covers news and updates and has an extensive Windows Vista tutorial section that covers a wide range of tips and tricks. |
| |||||||
![]() |
| |
| | #1 (permalink) |
| | Efficient way to send alerts I am about to develop an application that will allow Messenger style alerts to be displayed on users’ workstations. The nature of these alerts is for “System X is currently down!” type messages. What is the most efficient way of doing this? I want to reduce the overhead on workstations, servers and networks as much as possible. If successful, this application could be running on 25,000+ workstations globally, so it must also be scaleable. Another requirement is to have little (or no) dependencies on other systems (Exchange, OCS, etc). I was thinking of writing a simple application that lives in the system tray, which will poll an XML file on a DFS server (so presumably local) to see if it has recently changed. If the file has changed, copy it locally, and display the pending alerts. Simple in its execution, but efficient? Thanks |
My System Specs![]() |
| | #2 (permalink) |
| | Re: Efficient way to send alerts On Thu, 28 May 2009 08:43:01 -0700, willste <willste@xxxxxx> wrote: Quote: > I am about to develop an application that will allow Messenger style > alerts > to be displayed on users’ workstations. The nature of these alerts is for > “System X is currently down!” type messages. > > What is the most efficient way of doing this? I want to reduce the > overhead > on workstations, servers and networks as much as possible. If successful, > this application could be running on 25,000+ workstations globally, so it > must also be scaleable. Another requirement is to have little (or no) > dependencies on other systems (Exchange, OCS, etc). > > I was thinking of writing a simple application that lives in the system > tray, which will poll an XML file on a DFS server (so presumably local) > to > see if it has recently changed. If the file has changed, copy it > locally, and > display the pending alerts. > > Simple in its execution, but efficient? interrupt-driven design, and in this case I think it's _really_ less efficient. Your question is fairly vague; it's hard to understand exactly what you're doing. I don't see why "an XML file on a DFS server" implies "presumably local", nor if the file is "local" why you would have to "copy it locally". Assuming there's some centralized place that maintains the state you want to report, that centralized place should allow for your monitor program to connect, requesting notification for changes. When changes happen, then the centralized place can inform your monitor program (at each connection). This is much better than having some large number of monitor program instances asking the centralized place on some regular basis. Even if a change was expected to have occurred most of the time when the polling happens, there's still the extra overhead of having to poll, and _then_ retrieve the data of interest, and if most of the time there's nothing to report (which seems more likely), then you've got a bunch of polling that results in no useful work being done. (Note that by "connect" above, there's no particular reason that has to imply TCP...if it's okay for notifications to be lost, UDP might be fine, and if you expect to be able to use multicasting, that could be a lot more efficient way to use the network). Pete |
My System Specs![]() |
| | #3 (permalink) |
| | Re: Efficient way to send alerts Thanks for replying. Are you referring to the FileSystemWatcher class? I haven’t had a chance to write any code to test yet, but this looks perfect. I didn’t want to include too much detail in my original question, as I didn’t want to discourage people from replying by with a large post. But to clarify “an XML file on a DFS server” being local, I was referring to the way DFS would allow my application to connect to a single remote path, for example, "\\mydomain.net\dfs\myapp", and always get referred to a DFS replica local to my region. Thanks again for your advice, this method will certainly be more efficient that my original one. "Peter Duniho" wrote: Quote: > On Thu, 28 May 2009 08:43:01 -0700, willste > <willste@xxxxxx> wrote: > Quote: > > I am about to develop an application that will allow Messenger style > > alerts > > to be displayed on users’ workstations. The nature of these alerts is for > > “System X is currently down!” type messages. > > > > What is the most efficient way of doing this? I want to reduce the > > overhead > > on workstations, servers and networks as much as possible. If successful, > > this application could be running on 25,000+ workstations globally, so it > > must also be scaleable. Another requirement is to have little (or no) > > dependencies on other systems (Exchange, OCS, etc). > > > > I was thinking of writing a simple application that lives in the system > > tray, which will poll an XML file on a DFS server (so presumably local) > > to > > see if it has recently changed. If the file has changed, copy it > > locally, and > > display the pending alerts. > > > > Simple in its execution, but efficient? > No, I don't think so. Polling is almost always less efficient than an > interrupt-driven design, and in this case I think it's _really_ less > efficient. > > Your question is fairly vague; it's hard to understand exactly what you're > doing. I don't see why "an XML file on a DFS server" implies "presumably > local", nor if the file is "local" why you would have to "copy it locally". > > Assuming there's some centralized place that maintains the state you want > to report, that centralized place should allow for your monitor program to > connect, requesting notification for changes. When changes happen, then > the centralized place can inform your monitor program (at each > connection). This is much better than having some large number of monitor > program instances asking the centralized place on some regular basis. > Even if a change was expected to have occurred most of the time when the > polling happens, there's still the extra overhead of having to poll, and > _then_ retrieve the data of interest, and if most of the time there's > nothing to report (which seems more likely), then you've got a bunch of > polling that results in no useful work being done. > > (Note that by "connect" above, there's no particular reason that has to > imply TCP...if it's okay for notifications to be lost, UDP might be fine, > and if you expect to be able to use multicasting, that could be a lot more > efficient way to use the network). > > Pete > |
My System Specs![]() |
![]() |
| Thread Tools | |
| |
Similar Threads | ||||
| Thread | Forum | |||
| Phishing filter TOO efficient | Vista mail | |||
| Most efficient virtual machine? | Virtual PC | |||
| Most efficient way to copy large volume of files | .NET General | |||
| List<> versus HashSet<>: Which is more efficient for lookups on small sets? | .NET General | |||
| A more efficient way to copy files? | Vista file management | |||