Microsoft .Net Distributed Applications : Integrating Xml Web Services and .Net Remoting

Microsoft .Net Distributed Applications : Integrating Xml Web Services and .Net Remoting

  • ただいまウェブストアではご注文を受け付けておりません。 ⇒古書を探す
  • 製本 Paperback:紙装版/ペーパーバック版/ページ数 716 p.
  • 言語 ENG
  • 商品コード 9780735619333
  • DDC分類 006.7882

Full Description


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

Contents

Acknowledgments xix Introduction xxi PART I KEY TECHNOLOGIES 1 Understanding Distributed Architecture 3 What Is a Distributed Application? 3 Client/Server Architecture 5 Problems with Client/Server Architecture 7 Distributed Architecture 9 Advantages of Distributed Architecture 10 DCOM and the History of Distributed Applications 12 .NET Distributed Technologies 13 2 .NET Components 19 What Is a Component? 19 The Component s Role in a Distributed System 20 Service Providers 21 Information Packages 22 Dissecting a Sample Component 22 The IComponent Interface 28 Using Components at Design Time 29 Resources and Disposable Classes 31 Connection Strings and Configuration Files 34 Configuration Files in Visual Studio .NET 37 Deploying an Assembly 38 Sharing Assemblies 39 Searching for Private Assemblies 40 Versioning Assemblies 42 Shared Assemblies and the GAC 43 Delayed Signing 46 Using Configuration Files with Shared Assemblies 47 Versioning Policies with Strong-Named Assemblies 50 Code Bases with Shared Assemblies 51 A Final Word About Assembly Binding 52 3 Disconnected Data: The Universal Language 55 The Role of ADO.NET in a Distributed System 56 The ADO.NET Object Family 57 The Data Objects 58 Direct Data Source Interaction 59 Direct Queries and Data Readers 63 Stored Procedures 67 Provider-Agnostic ADO.NET Code 70 Transactions 72 The DataSet 73 Creating a DataSet 75 DataSet Indirection Through Column Mappings 77 Navigating the DataSet 79 Relations 81 Updating from a DataSet 85 Update Issues 87 Handling Errors 89 XML and Cross-Platform Data Exchange 90 4 .NET Remoting: A More Durable DCOM 93 The Role of .NET Remoting in a Distributed System 94 .NET Remoting Fundamentals 95 Serializable Classes 96 Remotable Classes 99 The Remote Component Host 101 Key .NET Remoting Design Decisions 103 Activation Modes 103 Object Lifetime 104 Server and Client Activation 105 Communication 105 A Simple Remoting Server 108 The Remote Object 108 The Component Host 109 The Client Application 112 A Remotable Component with User Interface 115 Testing with Visual Studio .NET 115 Using a Different Formatter 116 Using Multiple Channels 118 SingleCall Objects 119 Singleton Objects 120 Bidirectional Communication 121 Using Events 122 Using Delegates 127 Configuring Object Lifetime 129 Modifying Lifetime 132 Using a Leasing Sponsor 134 Common Remoting Exceptions 136 5 XML Web Services (RPC the Easy Way) 139 The Role of XML Web Services in a Distributed System 139 .NET Remoting vs. XML Web Services 140 XML Web Service Plumbing 142 The Role of IIS 145 Creating a Virtual Directory 146 The XML Web Service File Format 147 Creating an XML Web Service 148 Data Serialization 153 Testing the XML Web Service 156 The WSDL Document 158 Consuming the XML Web Service 158 Examining the Proxy Class 161 Using the Proxy Class 163 Debugging Web Services 164 ASP.NET Platform Services 167 SOAP Headers and SOAP Extensions 168 Publishing an XML Web Service 169 Cross-Platform XML Web Services 170 6 Threaded Clients (Responsive Interfaces) 175 What Is Multithreading? 175 The Role of Threaded Clients in a Distributed System 176 Threading in .NET 179 Asynchronous Delegates 180 Asynchronous Remoting Calls 184 Asynchronous Web Service Calls 184 Wait Handles 186 Callbacks 187 Asynchronous I/O 190 Custom Threading 191 Thread Priorities 194 Thread Management 196 Thread Debugging 199 Locking 200 Race Conditions 203 Deadlocks 204 Advanced Locking with the Monitor Class 205 Custom Threaded Objects 208 Threading and User Interfaces 211 Using Callbacks and Locking 213 Sending Instructions to a Thread 217 7 Thread Pools and Services (Scalable Programming) 221 The Role of Threading in a Distributed System 221 Singleton Basics 223 Tracking Clients 225 Managing and Cleaning Up Tasks 228 Ticket Systems 230 Locking 231 An XML Web Service Singleton 234 Thread Pools 235 Windows Services 237 Creating a Windows Service 238 Installing a Windows Service 243 Debugging a Windows Service 246 Controlling Windows Services 248 Using a Windows Service for a Component Host 250 8 Messaging (Lightweight Communication) 253 The Role of Messaging in a Distributed System 254 Fire-and-Forget Communication 255 Introducing Message Queuing 257 Message Queuing Server 258 Dependent Client 258 Independent Client 259 Message Queuing Basics 259 Types of Message Queues 260 The Message Queue Service 262 Configuring Message Queues 262 The Anatomy of a Message 264 Manipulating Queues in .NET 265 Selecting a Queue 266 Searching for a Queue 268 Creating a Queue 268 Sending a Message 269 Sending Object Messages 271 Advanced Message Configuration 273 Receiving a Message 275 Browsing Messages 277 Response and Acknowledgement Messages 278 Message Queues in a Distributed Application 280 COM+ Queued Components 281 9 COM+ (Component Services) 283 The Role of COM+ in a Distributed System 284 COM and Interop 285 COM+ Registration Basics 286 Giving Your Assembly a Strong Name 288 Dynamic Registration 289 Manual Registration 291 COM+ and the Declarative Model 292 COM+ Versioning 294 Using a COM+ Component 295 Object Pooling 295 The Ideal Pooled Component 296 Pooling and State 297 A Pooled Component Example 299 Establishing a Pool 304 Activation, Deactivation, and Conditional Pooling 306 Pooling and Data Providers 307 Object Pooling vs. Connection Pooling 309 Just-in-Time Activation 309 JIT Activation and Object Pooling 313 JIT Activation and .NET 314 Automatic Transactions 314 Objects and Transactions 316 Rolling a Custom Transaction 320 Isolation Levels 321 Web Method Transactions 322 Less Useful COM+ Services 323 Queued Components 324 Role-Based Security 325 Synchronization 325 Loosely Coupled Events 325 Object Construction String 325 SOAP 10 Enterprise Application Modeling 329 Key Considerations for Distributed Components 329 Cross-Process and Cross-Computer Communication 330 The Question of State 330 Are Remote Objects Really Objects? 332 Performance vs. Scalability 336 The Lessons Learned 338 Designing in Tiers 340 Business Objects 341 Rules 341 Distributed Design Patterns 343 Interfaces 344 Factories 345 Facades 345 Facades and Interception 348 Facades and XML Web Services 349 Facades and Transactions 350 Choosing the Right .NET Technology 351 Internal and External Systems 351 Hybrid Internal/External Systems 352 The Common Back End 353 Partially Disconnected Systems 353 Upgrading from COM 355 Physical Architecture 356 Scaling 356 Load Balancing 357 11 Advanced Remoting Techniques 359 Developing with .NET Remoting in Mind 359 ByRef and ByVal Arguments 360 Exception Propagation 360 Static Members 361 Private Methods 361 Public Members 362 Versioning 363 Interface-Based Programming 366 Problems with Interface-Based Remoting 373 .NET Remoting and XML Web Services Revisited 376 Soapsuds and WSDL Description 376 ASP.NET Hosting 378 Programmatic Registration 380 Dynamic Publication 383 Recording Connection Information with an XML Web Service 383 A Closer Look at ObjRef 389 12 Optimizing the Data Tier 391 Connection Pooling 391 Connections and Application Domains 394 Testing Connection Pooling 395 Developing a Data Transfer Plan 400 Batch Updates 401 Caching 404 Output (Response) Caching 405 Considerations for Output Caching 406 Data Caching 408 Determining a Caching Strategy 412 Optimizing the Database 414 Stored Procedures 414 Indexes 414 Profiling 415 Partition Large Data Tables 416 Placing Code in the Data Tier 417 Normalizing 418 13 Implementing Security 421 Authentication and Authorization 422 Windows Authentication 424 IIS Authentication Settings 426 Setting Authentication Information with an XML Web Service Client 429 Setting Authentication Information with a .NET Remoting Client 430 Available User Information 431 Impersonation 433 Custom Role-Based Authentication 435 Ticket Systems 439 Passing Tickets Automatically 443 Encryption 445 SSL 446 SSL and Certificates 446 Communicating with SSL 448 The .NET Encryption Classes 450 Selective Asymmetric Encryption 451 Selective Symmetric Encryption 457 Selective Encryption with .NET Remoting 462 Using Custom Classes to Wrap Encryption 462 Using .NET Serialization to Encrypt Classes 465 Code Access Security 468 Security and the Stack Walk 469 Security Demands 471 Security Assert, Deny, and PermitOnly 473 14 Monitoring, Logging, and Profiling 477 Server-Side Logging 477 Logging with Facades and Reflection 481 The Windows Event Log 484 Direct Mail Notification 492 Client-Side Logging 493 Using Tracing 494 Catching Unhandled Errors 500 Profiling with Performance Counters 500 Essential Performance Counters 501 Custom Performance Counters 503 15 Deployment Strategies 511 Traditional Deployment Problems and .NET Solutions 511 The Application Launcher 512 Security Holes in the Upgrade XML Web Service 521 Other Enhancements to the Application Launcher 522 The Application Browser 523 The Application Browser XML Web Service 525 The Application Browser Modules 527 The Application Browser 527 Code Access Security 531 Improving Communication in the Application Browser 536 A More Dynamic Application Browser 541 PART III CASE STUDIES 16 Invoicer.NET Traveling Sales 545 Defining the Problem 546 Key Analysis 547 Evaluating Different Paths 548 Defining the Solution 549 The Data Layer 550 Stored Procedures 552 The Excel Spreadsheet 555 The Data Component 557 The CustomersDB Class 558 The OrdersDB Class 560 The InvoicerTables Class 564 The ExcelTranslator Class 565 The Back-End OrderProcessor Service 570 The Web Front End 575 The XML Web Service Layer 577 Migration Strategies 580 Adding Security 580 Adding Early Validation 581 Using Unique Filenames 581 Excel Headaches and a Dedicated Windows Client 581 17 Transact.NET Order Fulfillment 585 Defining the Problem 585 Key Analysis 586 Defining the Solution 588 The Data Layer 590 Stored Procedures 591 The Data Component 596 The ProductDB Class 598 The OrderDB Class 599 The TransactTables Class 606 The Order Submission XML Web Service 607 The Order Client 611 The Internal OrderFill Client 617 The Queue Monitor 623 Future Directions 626 Adding Security 626 Adding Confirmation GUIDs 626 Supporting Multiple Order-Filling Clients 627 18 SuperCompute.NET Work Requests 631 Defining the Problem 631 Key Analysis 633 Defining the Solution 634 The Data Layer 636 Stored Procedures 637 The Data Component 642 The UserDB Class 643 The SessionDB Class 644 The TaskDB Class 647 The SuperComputeTables Class 653 The Render Web Service 654 RenderService Authentication 654 RenderService Functionality 658 The Client 660 The Task Processor 663 The TaskProcessor Component 664 The Task Processor Front End 664 Downloading a Rendered File 672 Future Directions 674 Adding Ticket Caching 674 Enhanced Client Cleanup 676 Adding Message Queuing 676 Adding Load Balancing 676 19 Microsoft Case Studies 681 The IBuySpy Storefront 682 The IBuySpy Portal 684 Duwamish 7 685 .NET Pet Shop 687 Fitch & Mather Stocks 7 688 Nile Books 689 ColdStorage 689 Jaggle 689 Favorites Service 690 INDEX