| Contents | 7 |
---|
| About the Authors | 17 |
---|
| About the Technical Reviewer | 18 |
---|
| Acknowledgments | 19 |
---|
| Introduction | 20 |
---|
| Part I Understanding | 25 |
---|
| Chapter 1 Introduction to Remoting | 26 |
| What Is Remoting? | 26 |
| Scenarios for .NET Remoting | 26 |
| Evolution of Remoting | 27 |
| Summary | 30 |
| Chapter 2 NET Remoting Basics | 31 |
| Advantages of .NET Remoting | 31 |
| Summary | 45 |
| Chapter 3 .NET Remoting in Action | 46 |
| Types of Remoting | 46 |
| Types of Invocation | 67 |
| Multiserver Configuration | 80 |
| Sharing Assemblies | 88 |
| Summary | 95 |
| Chapter 4 Configuration and Deployment | 96 |
| Configuration Files | 97 |
| What About Interfaces? | 121 |
| Deployment | 129 |
| Summary | 142 |
| Chapter 5 Securing .NET Remoting | 143 |
| Building Secure Systems | 143 |
| Authentication Protocols in Windows | 144 |
| Identities and Principals: A Short Overview | 149 |
| Securing with IIS | 153 |
| Security Outside of IIS | 160 |
| Implementing Authorization in the Server | 169 |
| Security with Remoting in .NET 2.0 (Beta) | 171 |
| Summary | 180 |
| Chapter 6 Creating Remoting Clients | 181 |
| Creating a Server for Your Clients | 181 |
| Creating a Console Client | 183 |
| Creating Windows Forms Clients | 187 |
| Creating Back-End Based Clients | 189 |
| Summary | 204 |
| Chapter 7 In-Depth .NET Remoting | 205 |
| Managing an Object s Lifetime | 205 |
| Using the CallContext | 229 |
| Remoting Events | 233 |
| Summary | 244 |
| Chapter 8 The Ins and Outs of Versioning | 245 |
| .NET Framework Versioning Basics | 245 |
| Versioning in .NET Remoting Fundamentals | 253 |
| Advanced Versioning Concepts | 266 |
| Summary | 293 |
| Chapter 9 .NET Remoting Tips and Best Practices | 295 |
| .NET Remoting Use Cases | 295 |
| The Nine Rules of Scalable Remoting | 300 |
| Using Events and Sponsors | 301 |
| SoapSuds vs. Interfaces in .NET Remoting | 306 |
| Custom Exceptions | 308 |
| Scaling Out Remoting Solutions | 310 |
| Summary | 321 |
| Chapter 10 Troubleshooting .NET Remoting | 322 |
| Debugging Hints | 322 |
| Configuration File Settings | 324 |
| BinaryFormatter Version Incompatibility | 328 |
| Changing Security Restrictions with TypeFilterLevel | 330 |
| Using Custom Exceptions | 332 |
| Multihomed Machines and Firewalls | 334 |
| Summary | 337 |
| Part II Extending | 338 |
---|
| Chapter 11 Inside the Framework | 339 |
| Looking at the Five Elements of Remoting | 339 |
| Client-Side Messaging | 349 |
| Server-Side Messaging | 351 |
| All About Asynchronous Messaging | 356 |
| Summary | 366 |
| Chapter 12 Creation of Sinks | 367 |
| Understanding Sink Providers | 367 |
| Using Dynamic Sinks | 374 |
| Summary | 375 |
| Chapter 13 Extending .NET Remoting | 376 |
| Creating a Compression Sink | 376 |
| Encrypting the Transfer | 392 |
| Passing Runtime Information | 407 |
| Changing the Programming Model | 419 |
| Avoiding the BinaryFormatter Version Mismatch | 426 |
| Using a Custom Proxy | 430 |
| Some Final Words of Caution | 436 |
| Summary | 436 |
| Chapter 14 Developing a Transport Channel | 438 |
| Protocol Considerations | 438 |
| Encapsulating the Protocols | 443 |
| Implementing the Client Channel | 462 |
| Implementing the Server Channel | 470 |
| Wrapping the Channel | 479 |
| Using the SmtpChannel | 482 |
| Some Final Words of Caution | 485 |
| Summary | 485 |
| Chapter 15 Context Matters | 486 |
| Working at the MetaData Level | 488 |
| Creating a Context | 489 |
| Checking Parameters in an IMessageSink | 497 |
| Summary | 500 |
| Conclusion | 501 |
| Part III Reference | 502 |
---|
| APPENDIX A .NET Remoting Usage Reference | 503 |
| System Types | 503 |
| System.Runtime.Remoting | 507 |
| System.Runtime.Remoting.Channels | 515 |
| System.Runtime.Remoting.Channels.Http | 520 |
| System.Runtime.Remoting.Channels.Tcp | 522 |
| System.Runtime.Remoting.Lifetime | 524 |
| System.Runtime.Remoting.Messaging | 528 |
| System.Runtime.Remoting.Metadata | 530 |
| System.Runtime.Remoting.Services | 532 |
| ystem.Runtime.Serialization | 534 |
| System.Runtime.Serialization.Formatters | 537 |
| Summary | 539 |
| APPENDIX B .NET Remoting Extensibility Reference | 540 |
| System.Runtime.Remoting.Messaging | 540 |
| System.Runtime.Remoting.Activation | 544 |
| System.Runtime.Remoting.Proxies | 545 |
| System.Runtime.Remoting.Channels | 546 |
| Summary | 555 |
| APPENDIX C .NET Remoting Links | 556 |
| Ingo s .NET Remoting FAQ Corner | 556 |
| MSDN and MSDN Magazine Articles | 556 |
| .NET Remoting Interoperability | 559 |
| Custom .NET Remoting Channels | 559 |
| Interesting Technical Articles | 561 |
| Remoting Tools | 563 |
| Index | 564 |