Synopses & Reviews
Make the jump to distributed application programming using the .NET Framework—and introduce a new level of performance, scalability, and security to your network and enterprise applications. Expert .NET developer Matthew MacDonald shares proven techniques for fully exploiting .NET Remoting, XML Web services, and other .NET technologies and integrating them into your real-world solutions. MacDonald digs into key .NET building blocks and architectural issues, explaining which features and designs will best serve your customized distributed application projects—and when to use them. Case studies with full code examples illustrate these practical techniques in action, as well as demonstrating their benefits and tradeoffs.
Learn how to:
- Cross application boundaries with .NET Remoting, XML Web services, and Message Queuing
- Create responsive clients and scalable servers with multithreading
- Model your distributed application with interfaces, facades, and factories
- Use COM+ services such as object pooling, JIT activation, and transactions
- Craft a data transfer plan with Microsoft ADO.NET—without concurrency errors
- Help secure your code end to end—from the transport level to the presentation tier
- Learn ways to avert—or unclog—performance bottlenecks in your applications
- Automate deployment using self-updating applications and XML Web services
- Master stateless programming and other best practices for distributed applications
About the Author
Matthew MacDonald is a developer, author, and educator in all things Visual Basic and .NET. He's worked with Visual Basic and ASP since their initial versions, and has written over a dozen books on the subject, including The Book of VB .NET (No Starch Press) and Visual Basic 2005: A Developer's Notebook (O'Reilly).
Table of Contents
Dedication; Acknowledgments; Introduction; Who Should Read This Book; The Focus of This Book; The Three-Part Structure of This Book; System Requirements; Code Samples; Variable Naming; Feedback; Microsoft Press Support; Part I: Key Technologies; Chapter 1: Understanding Distributed Architecture; 1.1 What Is a Distributed Application?; 1.2 Client/Server Architecture; 1.3 Distributed Architecture; 1.4 Summary; Chapter 2: .NET Components; 2.1 What Is a Component?; 2.2 The Components Role in a Distributed System; 2.3 Dissecting a Sample Component; 2.4 The IComponent Interface; 2.5 Connection Strings and Configuration Files; 2.6 Deploying an Assembly; 2.7 Versioning Assemblies; 2.8 Using Configuration Files with Shared Assemblies; 2.9 Summary; Chapter 3: Disconnected Data: The Universal Language; 3.1 The Role of ADO.NET in a Distributed System; 3.2 The ADO.NET Object Family; 3.3 The DataSet; 3.4 XML and Cross-Platform Data Exchange; 3.5 Summary; Chapter 4: .NET Remoting: A More Durable DCOM; 4.1 The Role of .NET Remoting in a Distributed System; 4.2 .NET Remoting Fundamentals; 4.3 Key .NET Remoting Design Decisions; 4.4 A Simple Remoting Server; 4.5 SingleCall Objects; 4.6 Singleton Objects; 4.7 Bidirectional Communication; 4.8 Configuring Object Lifetime; 4.9 Common Remoting Exceptions; 4.10 Summary; Chapter 5: XML Web Services (RPC the Easy Way); 5.1 The Role of XML Web Services in a Distributed System; 5.2 .NET Remoting vs. XML Web Services; 5.3 XML Web Service Plumbing; 5.4 Creating an XML Web Service; 5.5 Testing the XML Web Service; 5.6 Consuming the XML Web Service; 5.7 ASP.NET Platform Services; 5.8 Publishing an XML Web Service; 5.9 Cross-Platform XML Web Services; 5.10 Summary; Chapter 6: Threaded Clients (Responsive Interfaces); 6.1 What Is Multithreading?; 6.2 The Role of Threaded Clients in a Distributed System; 6.3 Threading in .NET; 6.4 Asynchronous Delegates; 6.5 Wait Handles; 6.6 Callbacks; 6.7 Asynchronous I/O; 6.8 Custom Threading; 6.9 Locking; 6.10 Custom Threaded Objects; 6.11 Summary; Chapter 7: Thread Pools and Services (Scalable Programming); 7.1 The Role of Threading in a Distributed System; 7.2 Singleton Basics; 7.3 An XML Web Service Singleton; 7.4 Windows Services; 7.5 Summary; Chapter 8: Messaging (Lightweight Communication); 8.1 The Role of Messaging in a Distributed System; 8.2 Fire-and-Forget Communication; 8.3 Introducing Message Queuing; 8.4 Message Queuing Basics; 8.5 Manipulating Queues in .NET; 8.6 Sending a Message; 8.7 Message Queues in a Distributed Application; 8.8 Summary; Chapter 9: COM+ (Component Services); 9.1 The Role of COM+ in a Distributed System; 9.2 COM and Interop; 9.3 COM+ Registration Basics; 9.4 Object Pooling; 9.5 Just-in-Time Activation; 9.6 Automatic Transactions; 9.7 Less Useful COM+ Services; 9.8 Summary; Part II: Developing an Architecture; Chapter 10: Enterprise Application Modeling; 10.1 Key Considerations for Distributed Components; 10.2 Performance vs. Scalability; 10.3 Designing in Tiers; 10.4 Distributed Design Patterns; 10.5 Choosing the Right .NET Technology; 10.6 Physical Architecture; 10.7 Summary; Chapter 11: Advanced Remoting Techniques; 11.1 Developing with .NET Remoting in Mind; 11.2 .NET Remoting and XML Web Services Revisited; 11.3 Programmatic Registration; 11.4 Dynamic Publication; 11.5 Summary; Chapter 12: Optimizing the Data Tier; 12.1 Connection Pooling; 12.2 Developing a Data Transfer Plan; 12.3 Caching; 12.4 Optimizing the Database; 12.5 Summary; Chapter 13: Implementing Security; 13.1 Authentication and Authorization; 13.2 Windows Authentication; 13.3 Custom Role-Based Authentication; 13.4 Encryption; 13.5 SSL; 13.6 The .NET Encryption Classes; 13.7 Summary; Chapter 14: Monitoring, Logging, and Profiling; 14.1 Server-Side Logging; 14.2 Client-Side Logging; 14.3 Profiling with Performance Counters; 14.4 Summary; Chapter 15: Deployment Strategies; 15.1 Traditional Deployment Problems and .NET Solutions; 15.2 The Application Launcher; 15.3 The Application Browser; 15.4 Summary; Part III: Case Studies; Chapter 16: Invoicer.NET Traveling Sales; 16.1 Defining the Problem; 16.2 Defining the Solution; 16.3 The Data Layer; 16.4 The Back-End OrderProcessor Service; 16.5 The Web Front End; 16.6 The XML Web Service Layer; 16.7 Migration Strategies; 16.8 Summary; Chapter 17: Transact.NET Order Fulfillment; 17.1 Defining the Problem; 17.2 Defining the Solution; 17.3 The Data Layer; 17.4 The Order Submission XML Web Service; 17.5 The Order CCCCCClient; 17.6 The Internal OrderFill Client; 17.7 Future Directions; 17.8 Summary; Chapter 18: SuperCompute.NET Work Requests; 18.1 Defining the Problem; 18.2 Defining the Solution; 18.3 The Data Layer; 18.4 The Render Web Service; 18.5 The Client; 18.6 The Task Processor; 18.7 Future Directions; 18.8 Summary; Chapter 19: Microsoft Case Studies; 19.1 The IBuySpy Storefront; 19.2 The IBuySpy Portal; 19.3 Duwamish 7; 19.4 .NET Pet Shop; 19.5 Fitch & Mather Stocks 7; 19.6 Nile Books; 19.7 ColdStorage; 19.8 Jaggle; 19.9 Favorites Service; About the Author; Matthew MacDonald;