| Foreword | p. xvii |
| What Are Web Services? | p. 1 |
| Introduction | p. 2 |
| Understanding Web Services | p. 3 |
| Communication between Servers | p. 8 |
| .asmx Files | p. 10 |
| WSDL | p. 15 |
| Using XML in Web Services | p. 16 |
| An Overview of the System. Web.Services Namespace | p. 17 |
| The System. Web.Services.Description Namespace | p. 17 |
| The System. Web.Services.Discovery Namespace | p. 17 |
| The System. Web.Services.Protocols Namespace | p. 18 |
| Type Marshalling | p. 19 |
| Using DataSets | p. 21 |
| Introduction to the Microsoft .NET Framework | p. 29 |
| Introduction | p. 30 |
| Obtaining the .NET Framework SDK | p. 31 |
| System Requirements | p. 31 |
| Hardware | p. 32 |
| Operating System | p. 33 |
| Additional Installation Information | p. 33 |
| Locations for Downloading | p. 34 |
| Installing the .NET Framework | p. 34 |
| Common Language Runtime | p. 36 |
| Major Responsibilities of the CLR | p. 36 |
| Safety and Security Checks | p. 37 |
| Class Loading | p. 37 |
| Object Lifetime Management | p. 37 |
| Just In Time (JIT) Compilation | p. 38 |
| Cross-Language Interoperability | p. 38 |
| Structured Exception Handling | p. 39 |
| Assemblies | p. 39 |
| Metadata | p. 40 |
| Enhanced Deployment and Versioning Support | p. 41 |
| Managed versus Unmanaged Code | p. 41 |
| Interoperability with Unmanaged Code | p. 42 |
| Namespaces | p. 42 |
| Developing Applications with the .NET Framework | p. 43 |
| Development Platforms for .NET | p. 43 |
| Language Choice | p. 45 |
| Using the Compilers | p. 45 |
| Tools | p. 46 |
| Base Class Libraries | p. 49 |
| Components in the .NET Framework | p. 55 |
| ASP.NET | p. 55 |
| ADO.NET | p. 56 |
| VB.NET | p. 57 |
| C# | p. 59 |
| Windows Forms | p. 60 |
| Web Services | p. 61 |
| XML Fundamentals | p. 67 |
| Introduction | p. 68 |
| An Overview of XML | p. 68 |
| What Does an XML Document Look Like? | p. 69 |
| Creating an XML Document | p. 70 |
| Creating an XML Document in VS.NET XML Designer | p. 71 |
| Components of an XML Document | p. 72 |
| Well-Formed XML Documents | p. 75 |
| Schema and Valid XML Documents | p. 76 |
| Structure of an XML Document | p. 80 |
| Processing XML Documents Using .NET | p. 81 |
| Reading and Writing XML Documents | p. 82 |
| Storing and Processing XML Documents | p. 83 |
| Reading and Parsing Using the XmlTextReader Class | p. 84 |
| Parsing an XML Document | p. 85 |
| Navigating through an XML Document to Retrieve Data | p. 87 |
| Writing an XML Document Using the XmlTextWriter Class | p. 90 |
| Generating an XML Document Using XmlTextWriter | p. 90 |
| Exploring the XML Document Object Model | p. 93 |
| Navigating through an XmlDocument Object | p. 94 |
| Parsing an XML Document Using the XmlDocument Object | p. 95 |
| Using the XmlDataDocument Class | p. 98 |
| Loading an XmlDocument and Retrieving the Values of Certain Nodes | p. 99 |
| Using the Relational View of an XmlDataDocument Object | p. 100 |
| Viewing Multiple Tables of a XmlDataDocument Object | p. 103 |
| Querying XML Data Using XPathDocument and XPathNavigator | p. 107 |
| Using XPathDocument and XPathNavigator Objects | p. 110 |
| Using XPathDocument and XPathNavigator Objects for Document Navigation | p. 112 |
| Transforming an XML Document Using XSLT | p. 115 |
| Transforming an XML Document to an HTML Document | p. 116 |
| Transforming an XML Document into Another XML Document | p. 119 |
| Working with XML and Databases | p. 124 |
| Creating an XML Document from a Database Query | p. 125 |
| Reading an XML Document into a DataSet | p. 127 |
| Information Exchange Using the Simple Object Access Protocol (SOAP) | p. 135 |
| Introduction | p. 136 |
| The Case for Web Services | p. 136 |
| The Role of SOAP | p. 137 |
| Why SOAP? | p. 138 |
| Why Web Services? | p. 139 |
| Wiring Up Distributed Objects--The SOAP Protocol | p. 139 |
| Creating Your Very First Web Service | p. 139 |
| Running Your Very First Web Service | p. 146 |
| Working with Web Services | p. 159 |
| Passing Complex Data Types | p. 159 |
| Error Handling | p. 162 |
| Malformed SOAP Request | p. 163 |
| Wrong Argument Types | p. 165 |
| Exceptions in Server Code | p. 165 |
| Writing a SOAP Client Application | p. 167 |
| Passing Objects | p. 174 |
| Passing Relational Data (DataSets) | p. 179 |
| Passing XML Documents | p. 182 |
| SOAP Headers | p. 186 |
| Advanced Web Services | p. 187 |
| Maintaining State | p. 187 |
| State Information in the URL (URL Mangling) | p. 189 |
| State Information in the Http Header (Cookies) | p. 191 |
| State Information in the Http Body (SOAP Header) | p. 194 |
| Security | p. 202 |
| WSDL and UDDI | p. 209 |
| Introduction | p. 210 |
| Web Service Standards | p. 211 |
| Describing Web Services--WSDL | p. 211 |
| Discovering Web Services--DISCO | p. 217 |
| Publishing Web Services--UDDI | p. 219 |
| Working with UDDI | p. 220 |
| Building an ASP.NET/ADO.NET Shopping Cart with Web Services | p. 233 |
| Introduction | p. 234 |
| Setting Up the Database | p. 234 |
| Setting Up the Table Books | p. 237 |
| Setting Up the Table Categories | p. 237 |
| Setting Up the Table Customer | p. 237 |
| Setting Up the Table Orders | p. 238 |
| Setting Up the Table BookOrders | p. 238 |
| Creating an Access Database | p. 238 |
| SQL Server Database | p. 242 |
| Creating the Stored Procedures | p. 244 |
| Creating the Web Services | p. 250 |
| Overview of the Book Shop Web Services | p. 250 |
| Creating the Data Connection | p. 252 |
| Creating a Web Service | p. 253 |
| Testing a Web Service in ASP.NET | p. 259 |
| Using WSDL Web References | p. 263 |
| Building the Site | p. 264 |
| Site Administration | p. 266 |
| Creating the Administration Login (adminLogin.aspx) | p. 266 |
| Creating the Administrator Page (adminPage.aspx) | p. 268 |
| Retrieving the Data: Creating the getBooks.AllBooks Web Method | p. 268 |
| Displaying the Data: Binding a DataGrid to the DataSet | p. 272 |
| Adding New Books to the Database: Creating the allBooks.addItem Web Method | p. 272 |
| Deleting Books: Deleting from the DataGrid and the Database | p. 272 |
| Updating Book Details: Updating the DataGrid and the Database | p. 273 |
| Creating the addBook Page (addBook.aspx) | p. 274 |
| Customer Administration | p. 275 |
| Creating the Customer Admin Section | p. 275 |
| Creating the loginCustomer Page | p. 275 |
| Creating the updateCustomerInfo Page | p. 276 |
| Creating an ADOCatalog | p. 278 |
| Creating the BookCatalog Class | p. 279 |
| Creating the CreateSummary Table Method | p. 280 |
| Creating the InitCatalog Method | p. 281 |
| Creating the Catalog Method | p. 281 |
| Creating the catalogItemDetails, catalogRange, and catalogByCategory Methods | p. 281 |
| Creating the catalogRangeByCategory Method | p. 282 |
| Building an XMLCart | p. 284 |
| Creating the User Interface | p. 287 |
| Creating the start.aspx Page | p. 288 |
| Rendering the Catalog | p. 289 |
| Rendering the Cart | p. 290 |
| Creating the Code | p. 290 |
| Building a SQLXML Web Service Application | p. 299 |
| Introduction | p. 300 |
| SQLXML Web Services | p. 301 |
| Developing the TimeTrack Application | p. 301 |
| Creating the Database | p. 302 |
| Creating the Stored Procedures | p. 303 |
| Creating a SQL Server Virtual Directory | p. 305 |
| Enabling Stored Procedures for Soap | p. 310 |
| Creating a Client Application in ASP.NET | p. 313 |
| Consuming the Web Services | p. 317 |
| Building a Jokes Web Service | p. 337 |
| Introduction | p. 338 |
| Motivation and Requirements for the Jokes Web Service | p. 338 |
| Functional Application Design | p. 340 |
| Defining Public Methods | p. 340 |
| Defining the Database Schema | p. 341 |
| Defining the Web Service Architecture | p. 342 |
| Security Considerations | p. 344 |
| State Management | p. 345 |
| Table of Contents provided by Syndetics. All Rights Reserved. |