@Thad, I believe the solution is to write a method to leverage the .Net Process API, which can call command line utilities, submit arguments, and even collect feedback.
If you don't want to use .Net, many other techologies allow you to work with Standard In/Out. In Adobe AIR this is accomplished with the NativeProcess API, and in PHP it's handled using the
exec() methods. It's also worth noting that you can learn a lot about hardware-to-software interfacing from the Arduino community, and since those examples are written for and consumed by hobbiests, they're usually easy to follow. This post on the Ardunio site demonstrates doing this with Java, and on this thread, scroll down and note the remark by mikalhart:
Any piece of software that can read/write a serial port -- and Java is obviously one -- can interface with
Arduino [a hardware device offering a serial interface].
I'm stressing that the lesson is more accurately one of hardware-to-software interfacing, and not so specifically DSLAM-to-GIS, and you'll accomplish your goal at the architectural level by meshing these technologies together.
A Hypothetical Implementation
Personally, I'd favor doing this with a C# WebService/Webmethod in the service layer, and a Flex mapping client like OpenScales handling the map presentation (Flex rolls well with streaming data 'cos Flash Player is frame-based). The solution would amount to a client-server implementation where fresh DSLAM data is funneled through the service layer directly into the client. Basically, your map client would constantly listen for fresh data pulses, then update as appropriate. Optionally, though, you could write the client to poll the server for updates in a Timer-based cycle. In either case, you could store the "aging" data in a database and create a widget allowing whomever to click a DSLAM icon and get a "playback" of its metrics over time.
In short, your service layer will be responsible for collecting the latest-and-greatest DSLAM metrics in a database, and if the DSLAM is pulsing feedback, relaying that data directly to any client observer. If the DSLAM is not pulsing, it could be polled whenever by a client using a Timer. However, Timers are big heavy thugs, so if the goal can be realized without one, that's the better implementation.
As far as the plumbing is concerned, I did something similar to this awhile back to collect real-time GPS information in a Flex map. It was a very similar scenario, except I needed to hit a COM port to get the streaming GPS NMEA sentences. In that case I wrote a tiny .Net terminal application that watched activity on the COM port and relayed any traffic to Standard Out (here's a comparable example). For the presentation layer I created an Adobe AIR client that watched the Standard Out feedback issued by the .Net terminal app. In other words, the client automated the command line interaction, but you never saw a terminal window and I was able to avoid using a Timer because the GPS pulses originated the one-way data stream that went from COM port to a terminal app, to Standard Out, and finally into my AIR app.
Reflecting on a Potential Bottleneck
I do have to wonder what kind of stress hundreds (thousands?) of DSLAM data streams would put on any server observing them. If I were you, I'd start with a spare/mothballed piece of equipment I could dedicate to the task before I risked exposing a production system to such a battery of streaming feeds. I think stress-testing this sceanario would be deserving of a separate experiment in its own right. I certainly don't have enough server-administration experience to hazard a guess, but I bet you have access to some in-house engineers that could.
If you want a primer on applying the Process API, check out this answer I posted a few months ago. That exact example shows calling a Python script using the Process API, but calling a .exe utility, or whatever, won't matter because the plumbing is essentially the same --the point is you'll use the Process API to dispatch calls to and collect feedback from Standard In/Out (which is exactly what I show in that example).
By the way I am fully-jealous of this task you have here. You're welcome to drop me a line if you need more details. Bon chance.