Kirk Evans Blog

.NET From a Markup Perspective

Keep or Ditch the Add Web Reference Dialog?

Chris Smith is asking if we should keep or ditch the Add Web Reference dialog in Visual Studio.

Don’t ditch it, and don’t keep it.  Replace it.

Replace it with “Add Service Reference”, and make “Add Service Reference” a useful tool (currently, it is really lame).  Chris mentions that they are considering ditching it in favor of a better experience.  If the new experience completely negates the current experience, then ditch “Add Web Reference”.  But it had better completely negate it to consider dropping the current functionality.

The only reason to ditch it is if it doesn’t work anymore or you are replacing it with something that is completely cool… something that will be available in the Express and Professional SKUs of Visual Studio.  We know it’s not currently broken, as ASMX is not going away and it currently works just fine.  If we aren’t going to fix it or replace it with something way cooler, then keep it as is.  However, I sincerely hope this is not just a ditch-or-keep decision… hopefully, someone is considering how to make this an even better feature for developers so that dropping down to the command line is no longer a consideration.

Why do you drop down to command line to use WSDL.exe?  appSettings is the biggest reason I can think of, with the new /shareTypes feature a close second. The /enableDataBinding feature is also compelling.  The /order switch is less compelling, but I can see the usefulness of it.  So why not expose these capabilities from Add Web Reference?  Why should Add Web Reference remain the simplistic way to do things, and direct users toward a command line when they need more flexibility?  Expose the capability through Visual Studio so that the command line is not even a thought.

I have no reason to use the current WinFX “Add Service Reference” tool since svcutil.exe exposes a ton of functionality besides a simple URL and reference name.  I hope this is not the experience that our users can expect going forward: This feature currently gets the useless award of the year.  I might as well drop to command line to get the additional capabilities that are exposed by svcutil.exe.  Why not expose those capabilities in a wizard with an “Advanced” button?  Then you get the best of both… simple “Add Reference” behavior for newbies, with power and control for the rest. 

I hope this is what Chris is referring to with “a better experience”.

While we’re at it…

“Add Service Reference” should not be separate from “Add Web Reference”… the code generation should default to using WCF instead of generating a SoapHttpClientProtocol type for ASMX.  Customers could then drop to WSDL.exe if they still need SoapHttpClientProtocol generation, but we default to WCF. 

Yes, customers will accept this… If we can change the DataSet designer, we can change the Add Web Reference dialog behavior.  But you can’t change it and make it worse, or change it so that they can’t do some of the things they already do… you have to change it and make it much better.