Windows Vista Forums
Vista Forums Home Join Vista Forums Windows 7 Forum Vista Tutorials Tags
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.

Go Back   Vista Forums > Misc Newsgroups > .NET General

Vista - Efficient way to send alerts

Reply
 
Old 05-28-2009   #1 (permalink)
willste


 
 

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 SpecsSystem Spec
Old 05-28-2009   #2 (permalink)
Peter Duniho


 
 

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?
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 SpecsSystem Spec
Old 05-29-2009   #3 (permalink)
willste


 
 

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 SpecsSystem Spec
Reply

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


Vista Forums is an independent web site and has not been authorized,
sponsored, or otherwise approved by Microsoft Corporation.
"Windows Vista", the Start Orb, and related materials are trademarks of Microsoft Corp.
Designer Media Ltd

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46