Figure 1.1: To call a web service, a program sends a network message to the server upon which the web service resides.
Figure 1.2: After the server executes the web service's instructions, the server will send a network message containing the service's result to the calling program.
Figure 1.3: Using a web service to obtain weather data
Figure 1.4: Using the FastWeather web service within a Visual Basic .NET program
Figure 1.5: The Add Web Reference dialog box
Figure 1.6: Viewing a web service’s WSDL file
Figure 1.7: Using the StockQuote web service to retrieve stock prices
Figure 1.8: Using the StockQuote web service within a C# program
Figure 1.9: Using a web service within a program that performs background processing
Figure 1.10: Using the Amazon web services SDK within an ASP.NET page
Figure 1.11: Using the BNQuote Web service to display book prices at Barnes & Noble online
Figure 1.12: Using the GeoPhone web service to retrieve caller information
Figure 1.13: Using the CATraffic web service to retrieve traffic information
Figure 1.14: Using the AirportInfo web service to retrieve XML-based airport information
Figure 1.15: Searching the UDDI directory for specific web services
Chapter 2: Creating Your First Web Services
Figure 2.1: Each time you create a web service, Visual Studio .NET displays a page onto which you can place the service’s components.
Figure 2.2: Calling the Hello web service from within an ASP.NET page
Figure 2.3: Displaying the result of the Hello web service within a C# program
Figure 2.4: Using the GreetSpecific web service to display a message in specific languages
Figure 2.5: Using the DayTimeGreeting web service to display a time-based greeting in various languages
Figure 2.6: Using the DetermineAge web service to display a user’s age
Figure 2.7: Using the SalesTax web service within a C# program
Figure 2.8: Exchanging parameter values within web service methods
Figure 2.9: Measuring the overhead (in milliseconds) of web service operations
Figure 2.10: Calculating statistics using a web service that supports arrays
Figure 2.11: Using a web service method to change values stored within an array
Figure 2.12: Using an array of values returned by a web service method
Figure 2.13: Using a web service method that returns a structure
Figure 2.14: Directing a program to catch and handle or to not handle the exceptions a web service generates
Figure 2.15: If a program fails to catch an exception thrown by a web service, the program will fail.
Figure 2.16: Using a web service that calls a second web service
Chapter 3: Accessing Web Services from within HTML Pages
Figure 3.1: You can download the Webservice.htc file from the Microsoft website.
Figure 3.2: Displaying the result of the Hello web service within an alert dialog box
Figure 3.3: Displaying the result of the GreetSpecific methods within alert dialog boxes
Figure 3.4: Because JavaScript functions pass parameters by value, a web service cannot change a parameter’s value.
Figure 3.5: Using the Array web service to manipulate form-based data
Figure 3.6: Calling a web service that returns a structure
Figure 3.7: Displaying the contents of the character-string array returned by the Presidents web service
Figure 3.8: Capturing an exception using the JavaScript error object
Figure 3.9: Using the Webservice behavior to interact with “local proxy” web service
Figure 3.10: Downloading the Google software development kit
Figure 3.11: Using the Google web service to spell check terms
Figure 3.12: Using the Google search engine from within a Visual Basic .NET program
Figure 3.13: Using the Google web service from within an HTML file
Chapter 4: Looking Behind the Scenes at Web Service Protocols
Figure 4.1: Displaying an XML document within a browser
Figure 4.2: Using the Internet Explorer’s XML parser to detect errors within an XML document
Figure 4.3: Using the Add Web Reference dialog box to specify a WSDL file
Figure 4.4: Displaying the DateService web service WSDL entries
Figure 4.5: Displaying WSDL-based method information for the DetermineAge web service
Figure 4.6: Using a link to access a web service within a browser
Figure 4.7: Viewing a web service’s XML-based result within a browser
Figure 4.8: Entering parameter values within a web page
Figure 4.9: Displaying the result of the CalculateMortgage web service within a browser.
Figure 4.10: For specifics on the UDDI protocol and ways you can make your web services available to others, visit the UDDI.org website.
Chapter 5: Looking at Key Operations
Figure 5.1: Using the Application object to implement a site counter
Figure 5.2: Displaying a web service’s use count
Figure 5.3: Editing a service’s global.asax file within Visual Studio .NET
Figure 5.4: Querying a web service’s Application object’s variables
Figure 5.5: Displaying Session variables within an active server page
Figure 5.6: Displaying active server page session data from the same client PC
Figure 5.7: Displaying cookie-based data within an active server page
Figure 5.8: Displaying cookies set by a remote web service
Figure 5.9: Displaying the session-based information returned to a client
Figure 5.10: Displaying entries within the ServerVariable collection
Figure 5.11: Querying a web service’s ServerVariable object
Chapter 6: Making .NET Web Services Available to Others
Figure 6.1: Building a release version of a web service with debugging disabled
Figure 6.2: Viewing a web service’s namespace name within the WSDL entries
Figure 6.3: By posting a web service at XMethods.com, you make your service available to others.
Figure 6.4: Using the web service repository at salcentral
Figure 6.5: Using the Add Web Reference dialog box to add a web service to a program
Figure 6.6: Searching for web services using the UDDI directory
Figure 6.7: Learning specifics about UDDI at the UDDI website
Figure 6.8: Learning more about XML-based content at the ebxml website
Figure 6.9: Searching the UDDI registry for a web service that provides encryption
Figure 6.10: Appending the characters ?disco to a web service address to display the service’s discovery entries
Chapter 7: Connecting Web Services to Databases
Figure 7.1: Using ADO.NET to connect to a database
Figure 7.2: Using a DataReader object to perform read-only queries
Figure 7.3: Using an ADO.NET DataSet object to query a database
Figure 7.4: Using a DataAdapter object to update data within a database
Figure 7.5: Using the BookInfo web service to interact with a database
Figure 7.6: Using HTML-based JavaScript to interact with a database
Figure 7.7: ADO.NET uses XML to describe database objects.
Figure 7.8: Building a DataSet object from an XML file
Figure 7.9: Prompting the user for data the program will store using a web service that builds DataSet objects on the fly
Figure 7.10: Retrieving a DataSet object from a web service
Chapter 8: Authenticating Users within .NET Services
Figure 8.1: Displaying authentication information returned from a web service
Figure 8.2: Windows 2000 requires that IIS maps anonymous users to a valid user account.
Figure 8.3: Using the Authentication Modes dialog box to map anonymous users to a specific Windows account
Figure 8.4: Assigning basic authentication to the ShowUser web service
Figure 8.5: If you do not provide a valid username and password to a system that requires basic authentication, the server will deny access.
Figure 8.6: Requiring a client program to specify a client certificate before the client can access the server
Figure 8.7: If a program cannot respond to a server’s request for authentication, the server will deny the program’s access to a web service.
Figure 8.8: Prompting the user for login information the program can send to a remote server
Chapter 9: Securing Communication between a Web Service and a Client
Figure 9.1: To make their way across the Internet, messages often move from one computer to the next.
Figure 9.2: Hackers can intercept messages as the messages make their way across the Internet.
Figure 9.3: By intercepting messages between a client and server, a hacker can change the message contents without the client and server being aware of the attack.
Figure 9.4: Submitting username and password data to a web service
Figure 9.5: Using a network- monitoring program to display username and password data sent by a program to a remote service (note the text highlighted in black)
Figure 9.6: To prevent a hacker from intercepting the encryption key, a client and server must encrypt the message that contains the key they will later use to encrypt and decrypt messages.
Figure 9.7: Public-key encryption relies on two keys—a rivate key that a user protects and a public key the user distributes.
Figure 9.8: Other users use your public key to encrypt messages they send to you. To decrypt those messages, you use your private key.
Figure 9.9: You can download your own public and private encryption keys from the VeriSign website.
Figure 9.10: Most e-mail programs will not display the contents of an encrypted message until you open the message.
Figure 9.11: Your browser will notify you when you connect to a page that requires a secure link.
Figure 9.12: Internet Explorer displays a lock icon to indicate a secure link.
Figure 9.13: Viewing a server’s certificate within your browser
Figure 9.14: The ISO/OSI network model
Figure 9.15: The secure sockets layer resides beneath the application layer.
Figure 9.16: To begin a secure session, a client sends a Hello message to the server.
Figure 9.17: The server responds to a client’s Hello message by sending a Server.Hello message that contains the server’s public key.
Figure 9.18: The client places the session key into a message that it then protects (encrypts) using the server's public key.
Figure 9.19: SSL encryption stops before data reaches the application.
Figure 9.20: Calling the LinkType web service TestSSL method within a browser
Figure 9.21: The http:// prefix creates an unsecure connection.
Figure 9.22: The https:// prefix creates a secure connection.
Figure 9.23: Using the Secure Communications dialog box to require an SSL connection for a web service
Figure 9.24: Trying to connect to a site that requires a secure connection without https will result in an errir.
Figure 9.25: Connecting to the SSLOnly web service using an unsecure connection generates an exception.
Figure 9.26: To create an SSL-based link to a web service, specify https:// when you reference the service’s WSDL.
Figure 9.27: Using a .NET program to connect to a web service over an SSL link
Figure 9.28: Editing URL entries within a WSDL file to specify an https:// prefix
Chapter 10: Extending the Lines of Communication
Figure 10.1: Sending an e-mail message using a Visual Basic .NET program
Figure 10.2: Adding a reference to the System.Web.dll file
Figure 10.3: Using a browser to interact with a web service that allows a user to send an e-mail message
Figure 10.4: Sending an e-mail message using an ASP.NET page that interacts with a web service
Figure 10.5: Most chat programs rely on a server that sits between the chat participants.
Figure 10.6: Using the Chat web service to interact with other remote users
Chapter 11: Integrating Binary Data into .NET Web Services
Figure 11.1: Using a byte array to copy a file’s contents
Figure 11.2: Requesting an image file from a web service
Figure 11.3: Retrieving and displaying an image file
Figure 11.4: Retrieving multimedia files from the server’s Media folder
Figure 11.5: Displaying and playing multimedia files
Figure 11.6: Uploading a file to a web service
Chapter 12: Examining Key Web Service Files
Figure 12.1: Using the Visual Studio .NET Solution Explorer to display a web service’s support files
Figure 12.2: To edit a support file using Visual Studio .NET, simply double-click the file entry within the Solution Explorer.
Figure 12.3: Using the ILDASM utility to display a web service’s assembly contents
Figure 12.4: Viewing a web service’s manifest content
Figure 12.5: Using the ILDASM utility to display a module’s intermediate-language code
Figure 12.6: Visual Studio .NET will not be able to open a project file if you rename the folder that contains a web service.
Figure 12.7: Displaying a web service’s discovery (disco) information
Chapter 13: Unlocking Remote Access
Figure 13.1: Downloading Word or Excel files from a remote server
Figure 13.2: Assigning a Windows service’s name and attributes
Figure 13.3: Specifying an account type, username, and password for the PlaceFileCopy service
Figure 13.4: Specifying the service name within the Service Installer Properties dialog box
Figure 13.5: Using the Services window to start the PlaceFileCopy Windows service
Figure 13.6: Retrieving any file from a remote server
Figure 13.7: Searching a remote server disk for a specific file
Figure 13.8: Using e-mail to send a remote file to a specific e-mail address
Figure 13.9: Using Windows services to provide a web service with access to files on a user’s PC
Figure 13.10: Using a web service to manage file access
Chapter 14: Improving Web Page Performance
Figure 14.1: Using the Windows Event Viewer to display event-log entries
Figure 14.2: Viewing an event’s specifics within the Windows Event Viewer
Figure 14.3: Using the ViewEntries program to monitor entries in a remote event log
Figure 14.4: Using the DelayedOutput web service to demonstrate the effects of not caching a web service’s output
Figure 14.5: Caching the results of a web service may lead to errant results.
Figure 14.6: Understanding the effect of caching for methods that use parameters
Figure 14.7: Using a program to call web service methods synchronously or asynchronously
Figure 14.8: Comparing synchronous and asynchronous operations for the time-consuming operations
Chapter 15: Making Money with Web Services
Figure 15.1: Building a DataSet object from an XML file
Figure 15.2: Adding a registration record to the XML-based DataSet
Figure 15.3: Prompting the user for registration information
Figure 15.4: Allowing a user to upgrade a web service
Figure 15.5: Automating the process of providing programmers with access to lost or forgotten keys
Chapter 16: Putting It All Together
Figure 16.1: Building a resume manually by using the Resume Builder form
Figure 16.2: Using a rich-text format (RTF) control to support formatted text
Figure 16.3: Building a job opportunity manually by using a form
Figure 16.4: Using an RTF control to post a job opportunity
Figure 16.5: The Jobs web service organizes content using files.
Figure 16.6: Using a form to submit RTF-based content to the Jobs web service
Figure 16.7: Using a form to manually build a job opportunity
Figure 16.8: Using the Jobs web service to retrieve job-opportunity postings
Figure 16.9: Using the Jobs web service to retrieve resume postings