Web custom controls exhibit several advantages over user controls. User controls are not ideal for re-use, as their ASCX and class files must be copied into each project that consumes them. They are also handicapped by a lack of designer support in Visual Studio .NET. Drop one on a Web form and you'll see what I mean; they are represented by a generic, grey box, and the IDE offers no help in determining the control's properties. The main benefit of user controls is that they are very easy to create, and this promotes rapid application development.

Web custom controls, on the other hand, can be quite appealing. There is no ASCX file for a Server Control, so they are very easy to re-use. You need only set a project reference to the DLL, and you're off to the races. Web custom controls can also be added to your VS .NET Toolbox for ultra-simple re-use. You can even install a Web custom control in the Global Assembly Cache, but a discussion of the GAC is beyond the scope of this article. But the main reason why I love Web custom controls is because they offer complete customization and design-time support.

The major hurdle you must surmount to create a Web custom control is that you have to write the HTML for the control yourself. Visual Studio .NET doesn't provide you with a visual designer for Web custom controls, so you can't drag and drop items from the Toolbox onto your control. But surely, if we can learn to write C# programs, we can learn HTML, right?
see control