I'm a bit torn between the two actually, and my reasons are for things that don't often get a mention.
I'm a fan of the ASP.NET web parts .dwp/.webpart xml file schema. I think it's a lot cleaner and you don't have to specify a namespace whenever you specify a custom property value in the file.
However some of the things that (sometimes) make me revert back to the SharePoint WebPart are
- GetToolParts() is better than CreateEditorParts()
With GetToolParts(), we could control the standard web part properties, and hide some if we wanted to. I haven't worked out how/if you can do this with ASP.NET WebParts. For example:-
public override ToolPart[] GetToolParts()
{
ToolPart[] parts = new ToolPart[1];
WebPartToolPart wptp = new WebPartToolPart();
//prevent detail link and title from being changed
wptp.Hide(WebPartToolPart.Properties.DetailLink);
wptp.Hide(WebPartToolPart.Properties.Title);
parts[0] = wptp;
return parts;
}
SharePoint's WebPart.Qualifier was a handy little int value that you could use when you wanted to deal with multiple instances of a web part on a page. Easy to work around, but still handy!
SharePoint's WebPart.ClassResourcePath was good in order to isolate your resources (images, css etc) into their own location and then easily refer to that location from within the web part.