| Foreword | ix |
| Preface | xi |
| 1 Introduction | 1 |
| The Big Internet | 1 |
| Raising the Bar: Common Infrastructure Problems | 2 |
| The Best Laid Plans | 4 |
| What the Heck Is .NET, Anyway? | 6 |
| About This Book | 9 |
| Sing a Song of Silicon | 10 |
| 2 .NET Objects | 13 |
| Problem Background | 13 |
| Solution Architecture | 16 |
| Oh Yeah? What Does It Cost? | 19 |
| Simplest Example | 20 |
| More on .NET Namespaces | 25 |
| Assemblies | 29 |
| Concept of an Assembly | 29 |
| Assemblies and Deployment | 31 |
| Assemblies and Versioning | 34 |
| Object-Oriented Programming Features | 40 |
| Inheritance | 41 |
| Object Constructors | 46 |
| .NET Memory Management | 48 |
| Interoperation with COM | 55 |
| Using COM Objects from .NET | 55 |
| Using .NET Objects from COM | 60 |
| Transactions in .NET | 62 |
| Structured Exception Handling | 65 |
| Code Access Security | 71 |
| 3 ASP.NET | 79 |
| Problem Background | 79 |
| Solution Architecture | 82 |
| Simplest Example: Writing a Simple ASP.NET Page | 85 |
| More on Web Controls | 89 |
| Managing and Configuring Web Application Projects: The Web.config File | 96 |
| ASP.NET State Management | 99 |
| Security in ASP.NET | 105 |
| Authentication | 105 |
| Authorization | 115 |
| Identity | 121 |
| Process Management | 123 |
| 4 .NET Web Services | 125 |
| Problem Background | 125 |
| Solution Architecture | 128 |
| Simplest Example: Writing an XML Web Service | 132 |
| Self-Description of XML Web Services: The WSDL File | 137 |
| Writing XML Web Service Clients | 139 |
| XML Web Service Support in Visual Studio .NET | 145 |
| XML Web Service Design Considerations | 146 |
| Make Them Chunky | 146 |
| Think Carefully About Their State | 148 |
| Handling Exceptions | 151 |
| Replacing the Namespace URI | 152 |
| XML Web Service Security | 154 |
| XML Web Service Enhancements | 157 |
| 5 Windows Forms | 165 |
| Problem Background | 165 |
| Solution Architecture | 167 |
| Simplest Example | 169 |
| More Complex Example: Controls and Events | 171 |
| Hosting ActiveX Controls in Windows Forms | 175 |
| Form Enhancements | 179 |
| Drawing | 179 |
| Mouse Handling | 182 |
| Menu Handling | 183 |
| Keyboard Handling | 185 |
| Dialog Boxes | 186 |
| 6 Data Access in .NET | 189 |
| Problem Background | 189 |
| Solution Architecture | 191 |
| Simplest Example | 195 |
| More Complex Example: Disconnected Operation | 199 |
| Visual Studio Support and Typed DataSet Objects | 208 |
| 7 Handling XML | 217 |
| Problem Background | 217 |
| Solution Architecture | 219 |
| Simplest Example: Basic Serialization | 220 |
| More Complex Example: Controlling Serialization | 224 |
| XML Schemas and Serialization | 229 |
| Generic Parsing | 233 |
| 8 Events and Delegates | 237 |
| Problem Background | 237 |
| Solution Architecture | 239 |
| Simplest Example | 240 |
| More Complex Example | 247 |
| Delegates | 251 |
| 9 Threads | 257 |
| Problem Background | 258 |
| Solution Architecture | 260 |
| Simplest Threading Example: Using the Process Thread Pool | 262 |
| More Complex Example: Thread Safety | 268 |
| Still More Complex Example: Managing Your Own Threads | 277 |
| 10 .NET Remoting | 281 |
| Problem Background | 281 |
| Solution Architecture | 282 |
| Simplest Example | 285 |
| Big Simplification: Configuration Files | 288 |
| Activation Types | 290 |
| Lifetime Management | 295 |
| Hosting and Deployment | 299 |
| Security | 301 |
| Performance | 302 |
| 11 .NET Reflection | 303 |
| Problem Background | 303 |
| Solution Architecture | 304 |
| Simplest Example | 306 |
| More Complex Example: Enumerating Types | 308 |
| Still More Complex Example: Object Creation and Method Invocation | 313 |
| EPILOGUE AND BENEDICTION | 319 |
| INDEX | 321 |