views:

50

answers:

3

Hi all,

Goal: To develop a web based NMS interface which displays a network topology (e.g., switches, routers, links, endhosts). Each node should be 'movable' (draggable to an appropriate place manually or their best location computed algorithmically). I should be able to zoom into the network graph (say if there are many clusters of nodes and I want to concentrate on a particular cluster of nodes). I should be able to right-click any node or link and get a context menu (e.g., 'show routing table', 'show interfaces', 'show bandwidth utilization graph' etc.).

The data for this network topology will be fetched by making calls to an apache based webserver where the backend scripts in python will fetch the appropriate data and send it via JSON to the web client.

Question: I am assuming that some sort of javascript library/framework will be most appropriate for this - jQuery, Dojo, Moo etc. [I've never used any of these before]. Which of these would be most recommended for this sort of thing. Which would be easiest to learn (say in a months time).

Thanks for any tips.

A: 

Given the complexity of what you are asking, I would recommend Silverlight or Flash.

If you know C# then Silverlight is the easiest option.

jQuery is awesome but manipulating 2D graphics and performing complex layout algorithms will be much easier in C# / Silverlight.

Hightechrider
HT.rider .. thank you for answering. We would like to keep it platform independent as far as possible. I think our client might frown on MS centric technologies like C#/Silverlight. Of course, java applets might be another way, but client wants some sort of Ajax/JSON based communication between server and client. Hence, I was exploring the possibility of some javascript library. Flash might be the way to go in the end. Will keep that in mind.
G.A.
C#/Silverlight of course doesn't preclude JSON-based communication with RESTful web services, in fact it makes it easy. But I understand the client's wishes. Might be worth mocking up a quick three-boxes-drag-and-zoom prototype in both jQuery and Silverlight so you can show them which is going to provide the richest graphical environment, the easiest programming model and the cleanest separation of code from design.
Hightechrider
Just out of curiosity, why do you think developing layout algorithms would be easier with C#/Silverlight than Javascript/jQuery, do you have any libraries in mind that would help ?
Harald Scheirich
There's the Microsoft Automatic Graph Layout, Graph#, and Quickgraph all for .NET. There's also a .NET Physics library if you want a graph layout with spring and gravity type effects. I've also build a graph layout algorithm using simulated annealing and doing it in C# was definitely easier for me than Javascript.
Hightechrider
A: 

Hi,

jQuery can help you to make drag and drop operations. With jQuery, it is also very easy to make an application quickly. But you have to make a test with a huge amount of nodes (switches, routers, links, endhosts) to see if a browser application can be able to manage your target in term of complexity.

You have a sample to drag and drop of simple graphical forms here : http://helpdesk.toitl.com/?w=drag_drop

Now, in you application, you have just to link each form with others. And keep the links if you move a node.

Regards, Dominique

ToITL
Very interesting site Dominique. Thanks. Looks quite promising. Of course, that caveat you mentioned about being able to handle hundreds of nodes in a browser might be an issue.
G.A.
A: 

the people at thejit have done some really great works in Multiple Data Representations using javascript and HTML canvas. They have interactive interfaces based around having nodes connected in a network which you can zoom in and out and get more info about.

I am sure you can tweak it to get the result you are after.

A static JSON Tree structure is used as input for the animations which is also what you want.

XGreen
XGreen .. Thank you very much for that interesting site. I've bookmarked it in case I go with jQuery.
G.A.