views:

827

answers:

3

Dear Sir, would you say that SmartClient is suitable when you have thousands of users editing grids? Or will the waiting time for the intended end-users most likely be very long?

I have received warnings before that ExtJS would not be suitable. Thank you

+4  A: 

The number of users editing grids is not really relevant -- that's more of a question of how your application is designed to support load. If you are asking about performance relative to the grid component itself, the most relevant questions are about the grid's capabilities and how much data it can handle, not how many users will be using it over time.

I'm not familiar with SmartClient, but in the case of Ext, the grid performs very well for small to medium sized grid data (very approximately, up to ~50 rows per page, up to ~10 columns of data). Obviously this all depends on a lot of variables, but it is true that Ext's grid rendering time increases in direct proportion to the amount of data rendered at one time. This is because it uses a fairly heavy DOM under the covers, the trade-off being the rich feature set out of the box and the flexibility that is provided for creating customized nested row layouts. It does support paging to mitigate performance issues, and there is also a very popular extension that provides on-demand row loading (virtual scrolling) that enables higher-performance loading of large data sets. There's also an example of a lighter-weight and simpler version of buffered loading in the Ext examples that shows excellent performance with a lot of data.

Also, depending on your needs, there is a new lightweight ListView component in 3.0. It does not support all of the GridView's features, but if you primarily need a display-only grid, it might be a great alternative.

All of this is not to say that SmartClient is not good -- I have no idea. I just want anyone looking at this thread to have an informed decision on the Ext side of the equation since it sounds like you have received one-sided opinions on it.

bmoeskau
A: 

Dear Brian, thank you for your answer. I have been under the impression that the average-Joe entering a website with Ext would be discouraged when he was faced with a long loading time which was also increased if there were many people using the site. This was the reason why I thought that SmartClient would be better but I haven't found any comparison between them. Maybe I was to hasty in disregarding ExtJS.

I will hope to get in contact with someone that has had experience from SmartClient to assist in developing my future site. Thank you Jez

+2  A: 

SmartClient has a single grid component that does both horizontal and vertical incremental rendering, so it handles a very very large number of both rows (several million) and columns (several hundred) without degradation in performance.

All of the grid features supported by SmartClient - inline editing, grouping, filtering, dynamic frozen columns, sorting, reordering fields, drag and drop .. (too long to list) are supported by this single, high data volume grid component.

A number of users have run into scalability issues with the Ext grid component and discussed it here on the SmartClient forums:

http://forums.smartclient.com/showthread.php?t=2678

As far as scalability of the server, in reality the grid component contributes hugely to server-side scalability. Consider the adaptive filtering mechanism of the SmartClient grid:

http://www.smartclient.com/index.jsp#adaptiveFilter

This feature and the related "Adaptive Sort" feature cut down on 60-90% of the most expensive types of server hits (that is, those that access and filter/sort a large dataset).

SmartClient pervasively takes this approach of intelligently re-using data in order to avoid expensive server-side operations. A good overview is available in the ResultSet class documentation; the ResultSet is used as a cache management object by all components that work with datasets in SmartClient:

http://www.smartclient.com/docs/7.0rc2/a/b/c/go.html#class..ResultSet

Charles Kendrick