OK, enough theory so far. Let's start to get real. The first thing that has changed on a Web service's surface in .NET is how you actually program it. Of course, you can still do it all in Notepad, or Emacs if you are a famous person in town, and place the file in an appropriate location where ASP.NET can grab it. But here the differences between V1 and V2 begin. As already mentioned several times, ASMX sits on top of ASP.NET. And therefore it also leverages ASP.NET's compile and execution model.
In ASP.NET 2.0 there is no longer a need to compile your code and put it into the bin folder. As long as you are using the code-behind approach for development, it is sufficient to place your implementation file into a folder called 'Code'. The ASP.NET runtime will then take care of those files and compile them on the fly (don't worry, you still can pre-compile your applications and services).
Another point that has changed is how you start to develop a Web service in the IDE. Depending on the current scheme activated in Visual Studio 2005 you tell the IDE "File - New - Web Site …" and a new ASP.NET Web services project is born. Figure 3 shows you how the situation looks like after creating a plain new Web services project.
Figure 3: Bare Web services project in Visual Studio 2005 [BasicService_in_VS2005.jpg]
Well, 'project' isn't the right word here. At least, it is not a project as we know it from current Visual Studio .NET versions. There is no notion of a project file - it is all file based by default. Obviously you still can create an IIS-based new project, but the default uses a newly developed mini web server which has its origins in the Cassini project. We just have our .asmx and our .cs or .vb implementation files beneath the 'Code' folder - that's it.