| Introduction | xi |
| Why We Wrote This Book | xii |
| Who Should Read This Book | xiii |
| Organization of This Book | xiii |
| Part 1Understanding XML Web Services | xiv |
| Part 2XML Web Services and Clients | xiv |
| Part 3Advanced XML Web Services | xiv |
| Part 4Appendixes | xiv |
| Installing and Using the Practice Files | xv |
| Downloading and Installing the Libraries and Sample Code | xv |
| System Requirements | xvi |
| Conventions and Features in This Book | xvii |
| Support | xvii |
| PART 1 UNDERSTANDING XML WEB SERVICES | 1 |
| CHAPTER 1 Introduction to XML Web Services | 3 |
| What Are XML Web Services? | 3 |
| XML Web Service Examples | 4 |
| Information Services | 4 |
| Centralization Services | 5 |
| Data Integration, Aggregation, and Analysis | 5 |
| Extending and Integrating Applications | 6 |
| Peer-Based and Push-Based Systems | 6 |
| The Benefits of XML Web Services | 7 |
| Standards Based | 7 |
| Vendor Neutral | 7 |
| Simplicity | 8 |
| Language and Platform Independence | 8 |
| Functional Abstraction | 8 |
| Discoverable | 8 |
| Reduced Development Time | 8 |
| Challenges Facing XML Web Services | 10 |
| Immature Technology | 10 |
| Consumer Adoption | 10 |
| Unproven Business Model | 11 |
| Managing Complexity | 11 |
| Maintaining Consistency | 12 |
| Operational Issues and Support Infrastructure | 12 |
| XML Web Services Standards and Protocols | 13 |
| Directory and Discovery | 13 |
| Description | 15 |
| Messaging | 15 |
| The Extensible Markup Language | 16 |
| Transport | 16 |
| XML Web Service Architecture | 16 |
| Directory, Discovery, and Description | 17 |
| Proxy Objects | 17 |
| Creating XML Web Services with ASP.NET | 18 |
| CHAPTER 2 Developing XML Web Services Using Visual Studio .NET | 21 |
| Preparing the Development Environment | 22 |
| IIS Server Requirements | 22 |
| Installing Internet Information Services | 23 |
| Configuring IIS Server for XML Web Service Development | 24 |
| Installing Visual Studio.NET | 26 |
| ASP.NET Fundamentals for XML Web Services | 27 |
| ASMX Files | 28 |
| The @ WebService Directive | 29 |
| Code-Behind Files | 29 |
| Creating XML Web Service Projects in Visual Studio .NET | 30 |
| Creating the HelloWorld XML Web Service | 30 |
| Testing the HelloWorld XML Web Service | 34 |
| The XML Web Services Project Files | 36 |
| Uploading Files to IIS Server from Visual Studio .NET | 38 |
| CHAPTER 3 Building the Credit Card Validation Service | 41 |
| The Credit Card Validation Service | 41 |
| The Credit Card Validation Process | 42 |
| CreditCardValidator Library Functionality | 42 |
| The VISAValidator Service | 43 |
| Creating the VISAValidator Service | 44 |
| Testing the VISAValidator XML Web Service | 50 |
| Understanding the VISAValidator Code | 53 |
| The System.Web.Services Namespace | 54 |
| The WebService Base Class | 55 |
| The WebService Attribute | 56 |
| The WebMethod Attribute | 57 |
| PART 2 XML WEB SERVICES AND CLIENTS | 61 |
| CHAPTER 4 Building a SOAP Client | 63 |
| Proxy Classes and Web References | 64 |
| Creating a Web Reference | 65 |
| Renaming the Web Reference | 67 |
| Viewing the Web Reference Files and Properties | 68 |
| Using a Proxy Class | 70 |
| XML Web Service Clients | 72 |
| Creating the Windows Forms Client | 73 |
| Creating the Web Forms Client | 79 |
| Creating the Console Client | 83 |
| CHAPTER 5 Building an HTTP Client | 89 |
| HTTP-GET and HTTP-POST Protocols | 89 |
| Comparing HTTP-GET and HTTP-POST | 90 |
| Comparing HTTP and SOAP | 91 |
| Consuming XML Web Services Using HTTP | 94 |
| HTTP Proxy Classes | 95 |
| Creating a Web Forms Client | 95 |
| CHAPTER 6 Data Types in XML Web Services | 101 |
| Representing Data Using SOAP | 101 |
| Representing Data Using HTTP | 102 |
| Simple Types | 102 |
| Complex Types | 103 |
| Creating an XML Web Service That Uses a Complex Type | 104 |
| Consuming an XML Web Service That Uses a Complex Type | 110 |
| Reference Arguments | 115 |
| Creating an XML Web Service That Uses Reference Arguments | 116 |
| Consuming an XML Web Service That Uses Reference Arguments | 120 |
| CHAPTER 7 Exception Handling | 125 |
| How ASP.NET Handles Exceptions | 125 |
| Using Custom Fault Codes | 127 |
| Throwing Exceptions in XML Web Services | 127 |
| Handling Exceptions in XML Web Service Clients | 132 |
| Testing the WindowsFormsClient Application | 140 |
| CHAPTER 8 Debugging XML Web Services with Visual Studio .NET | 143 |
| Breakpoints and Exceptions | 144 |
| Using Breakpoints | 144 |
| Creating the XML Web Service Debugging Project | 144 |
| Creating the XML Web Service Client | 146 |
| Setting a Breakpoint | 149 |
| Stepping with the Debugger | 151 |
| Configuring Breakpoints | 153 |
| Using the Hit Count | 153 |
| Breaking on Conditions | 157 |
| Disabling and Removing Breakpoints | 160 |
| Breaking on Exceptions | 160 |
| CHAPTER 9 Publishing and Discovering XML Web Services | 165 |
| Publishing and Discovering XML Web Services Using UDDI | 165 |
| Publishing XML Web Services Using UDDI | 166 |
| Discovering XML Web Services Using UDDI | 183 |
| Publishing and Discovering XML Web Services Using DISCO files | 187 |
| DISCO Files | 187 |
| Automatic Discovery and .vsdisco Files | 189 |
| XML Web Service Deployment | 191 |
| Manual Deployment | 192 |
| Visual Studio .NET Copy Project | 194 |
| Visual Studio .NET Web Setup Project | 195 |
| Advanced XML Web Services | 207 |
| CHAPTER 10 State Management | 209 |
| Client State | 210 |
| Using Client Sessions | 210 |
| Consuming an XML Web Service That Uses Client State | 216 |
| Application State | 224 |
| Using the Application Property | 225 |
| Building the Request History Client | 229 |
| Testing the Application State Support | 231 |
| CHAPTER 11 The DataSet and XML Web Services | 233 |
| Overview of the DataSet | 233 |
| Using a DataSet | 235 |
| Creating the Windows Forms Validation Client | 239 |
| Consuming an XML Web Service That Uses a DataSet | 245 |
| CHAPTER 12 Caching and Application Events | 253 |
| Caching | 253 |
| The CacheDuration Property | 254 |
| The Cache Object | 255 |
| Creating an XML Web Service That Uses Caching | 256 |
| Creating the Windows Forms Validation Client | 260 |
| Consuming an XML Web Service That Uses Caching | 265 |
| Testing the XML Web Service | 269 |
| The Global.asax file | 271 |
| Creating an XML Web Service That Uses Application Events | 273 |
| CHAPTER 13 Securing XML Web Services | 283 |
| Authentication | 284 |
| Implementing Basic and Digest Authentication | 286 |
| Implementing Integrated Windows Authentication | 301 |
| Authorization | 306 |
| URL Authorization | 306 |
| File Authorization | 309 |
| CHAPTER 14 Custom SOAP Headers | 311 |
| Using Custom SOAP Headers in XML Web Services | 312 |
| Developing an XML Web Service That Uses Custom SOAP Headers | 312 |
| Developing an XML Web Service Client That Uses Custom SOAP Headers | 323 |
| CHAPTER 15 Consuming XML Web Services Asynchronously | 333 |
| Asynchronous XML Web Services | 334 |
| Slowing Down the Test XML Web Service | 335 |
| Asynchronous XML Web Service Clients | 340 |
| Proxy Class Methods | 340 |
| Using Callbacks to Signal Asynchronous Method Completion | 343 |
| Waiting for Asynchronous Method Completion | 353 |
| Blocking on Asynchronous Method Completion | 361 |
| Polling to Determine Asynchronous Method Completion | 361 |
| CHAPTER 16 Manually Creating Proxies | 363 |
| Using the Wsdl.exe Tool | 363 |
| Creating a Proxy DLL | 364 |
| Creating a Client Using a Proxy DLL | 366 |
| APPENDIX A The Credit Card Validation Library | 377 |
| APPENDIX B XML Web Service Resources | 391 |
| INDEX | 395 |