I'm new to web services in ASP.NET. Been trying to get my head around it recently. Here are my questions.

1. The Web Service item (.asmx that you can add to your project in Visual Studio), does that only generate an XML service (generate XML output)? What about JSON?

2. When I add a web reference to my project, and I get prompted to specify a URL, what kind of service does that have to be? For example, when I enter http://search.twitter.com/search.json?q=twitter - it doesn't work (nothing gets fetched).

3. After you create an .asmx service, how is this consumed through a non-.NET technology like PHP or JavaScript?

4. If I were to create a web service in another technology (PHP/ColdFusion), what would be the requirements so that I could easily add a web reference to a .NET project to be ready for consumption?

5. When do you ditch creating a Web Service (.asmx) and create a Generic Handler (.ashx)? What's best practice?