Rev up your servers, ASP.NET 2009.2 is coming next week

[Infragistics] Murtaza Abdeali / Tuesday, October 20, 2009

In just a week, Infragistics will be shipping the next volume of ASP.NET controls packed with a lot of new controls & features. If you have been following my blog posts, you might have idea of what will be included in the next version. If you need a re-cap, here are the links to previous posts announcing new controls we’ve been working on for this release.

WebHierarchicalDataGrid Features
Controls shipped in August CTP
Controls shipped in April CTP

As with every release, we pay close attention to the performance in the controls and dedicate substantial amount of time, research and development to make sure the controls provide optimal performance within ASP.NET applications. Here are some of the high level performance improvements that you will get in 2009.2.

WebDataGrid - Virtual Scrolling a Paged Grid

Paging and Virtual Scrolling are not something new to the web. Web Applications today use these patterns in different ways. Paging data lets you as a developer cut down the overall data size into multiple pages which helps with the initial page load time and still gives the end user access to all the data by navigating to different pages. On the other hand, Virtual Scrolling does similar things by not loading all the data at once within the UI and lazy load data on demand when the user performs a scrolling operation. In most of the grids out there in the market these features are supported in one fashion or the other and are isolated from one another, meaning you can either use a paged grid or a virtual scroll grid. In some of the grid implementations the scrollbar is merely another way of paging the grid.
 
Using the WebDataGrid in the next version, you can now enable both the features in the grid at the same time. So you can set pagination in the grid as you’d normally do using the paging behavior and now with virtual scrolling you can enable virtual scrolling on different pages in the grid. In other words, you can apply load on demand to your overall data source by paging and enable virtual scrolling on top of that. Let me use an example to compare what are the overall gains in terms of page performance and application usability when these two features are used together.

For the results below I have used “Orders” table from Northwind that contains 830 rows and 14 columns. I used page size of 200 records/page & virtual scrolling factor of 3, which means there will be 3 times the display amount of rows cached on the client for smooth scrolling experience.

Initial Page Size (Bytes)
Paging Response Size (Bytes)  
Virtual Scrolling Response Size (Bytes)
677,639
-
-
253,859
353,142
-
65,003
-
20,273
65,748
35,277
19,588

Please note: If you are using a DataSource control that supports Paging like LinqDataSource or ObjectDataSource then it also means that the queries made to your back end source is also optimized to what is requested by the client, further improving your overall page life cycle & AJAX requests. There is also improvement in client rendering times as well as with any AJAX transaction made by the grid when using these two behaviors together. Based on your data you can tweak the behavior settings to maximize performance on your application pages.

JavaScript files further Minified and Compressed

This release we also focused on getting the JS files sizes smaller as much as possible for all the ASP.NET AJAX controls. We were using JSOB in the past as a tool to minify JS and this release we switched over to YUI. Using YUI over JSOB, the new JavaScript files are less in size over their release sizes in the past which will result in faster page load times. Just last week Microsoft also announced its own JavaScript Minification tool which we are researching at the moment.

To give you an idea of the minified sizes of JavaScript files in 9.2, check out this table:

Scripts FileName
Uncompressed (KB)
Jasob (KB)
YUI (KB)
Improvement
Framework Scripts
igCore.js
187
91
78
14.29%
igAnimation.js
18
10
9.1
9.00%
igDragDrop.js
53
24
21
12.50%
igDropDown.js
61
24
22
8.33%
igLayoutPane.js
4.6
2.6
2.3
11.54%
igResizeBehavior.js
19
11
10
9.09%
WebDataGrid
igWebDataGrid.js
91
59
51
13.56%
igWebDataGridActivation.js
21
15
12
20.00%
igWebDataGridBase.js
52
31
25
19.35%
igWebDataGridCellEditing.js
1.3
0.9
0.7
22.22%
igWebDataGridColumnFixing.js
74
50
41
18.00%
igWebDataGridColumnMoving.js
40
29
25
13.79%
igWebDataGridColumnResizing.js
34
26
21
19.23%
igWebDataGridDeleting.js
4.1
2.4
2.1
12.50%
igWebDataGridEditBase.js
28
19
17
10.53%
igWebDataGridEditing.js
18
11
9.9
10.00%
igWebDataGridEditorProviders.js
24
16
13
18.75%
igWebDataGridFiltering.js
69
45
40
11.11%
igWebDataGridPaging.js
4.9
2.9
2.5
13.79%
igWebDataGridRowAdding.js
8.1
5.1
4.5
11.76%
igWebDataGridRowEditingTemplate.js
22
14
13
7.14%
igWebDataGridRowSelectors.js
13
7.2
6.2
13.89%
igWebDataGridSelection.js
63
44
37
15.91%
igWebDataGridSorting.js
13
8
6.5
18.75%
igWebDataGridVirtualScrolling.js
20
14
12
14.29%
WebHierarchicalDataGrid
igWebHierarchicalDataGrid.js
42
29
25
13.79%
WebMonthCalendar
igCalendar.js
72
41
36
12.20%
WebDataMenu
igDataMenuItem.js
13
7.6
6.7
11.84%
igWebDataMenu.js
66
38
34
10.53%
WebDialogWindow
igDialogWindow.js
54
35
32
8.57%
WebDropDown
igDropDown.js
200
92
82
10.87%
WebImageViewer
igImageViewer.js
104
70
63
10.00%
WebSlider
igSlider.js
47
27
24
11.11%
WebSplitter
igSplitter.js
46
28
24
14.29%
Editor Controls
igTextEditor.js
100
58
55
5.17%
WebDataTree
igWebDataTree.js
94
50
44
12.00%
igWebDataTreeNode.js
23
12
10
16.67%
Total
1804
1049.7
917.5
12.59%

WebHierarchicalDataGrid uses Pay to Play too!

Introduced with WebDataGrid in 2008 Volume 3, the patent pending architecture of the Pay to Play model in the ASP.NET AJAX WebDataGrid is now being used with WebHierarchicalDataGrid as well. What does that mean? You can enable the features that you want the WebHierarchicalDataGrid to support and it will generate its markup, client state and objects based on it. So, you don’t get unnecessary JavaScript code and bloated pages if you are not using a feature of the WebHierarchicalDataGrid that you don't want.

Stay tuned for the announcement on the website for our 2009 Volume 2 release of NetAdvantage for Web Client.