Developing AJAX Controls
When developing AJAX-ified controls using the AJAX framework from microsoft and the AJAX control toolkit, you have to rethink the control development approach a little bit. After all, the key to making AJAX controls work is rendering code on the client-side, and being the AJAX uses managed scripts, the scripting process has to be well thought out. It's not that overtly difficult to create custom controls, but it does usually require large amounts of code. I start off my scripts from a script that I have for CodeSmith. This script is really helpful in that regard.
Although preparation is needed, a paradigm shift is also needed as well. Before control developers spent time rendering logic in the server-side, writing out the HTML to the browser in the Render method. Now, with ASP.NET AJAX, it's beneficial to render that logic on the client-side instead. This is because controls can take advantage of more features this way.
For instance, take the CheckBoxList control. How advantageous would it be to be able to dynamically add/remove items to the list? However, the logic exists on the server side to create the interface, and I ran into a problem this way because the client code had to know what the server is rendering in order for it to take advantage.
If all of the rendering was done on the client-side, this moves the logic to one place, which allows client-side refreshing of the interface (even rebinding from data streamed through a web service). This really makes controls more advanced, but more cumbersome as client-side code becomes more verbose and difficult to manage.