Microsoft .NET Distributed Applications: Integrating XML Web Services and .NET Remoting

Matthew MacDonald

  • 出版商: MicroSoft
  • 出版日期: 2003-04-05
  • 售價: $2,350
  • 貴賓價: 9.5$2,233
  • 語言: 英文
  • 頁數: 752
  • 裝訂: Paperback
  • ISBN: 0735619336
  • ISBN-13: 9780735619333
  • 相關分類: .NETXML
  • 已絕版

買這商品的人也買了...

商品描述

Description:

Advance your .NET expertise—learning proven techniques for building large-scale distributed solutions.

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

 

Table of 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 Services (Only in COM+ 1.5) 326
PART II    DEVELOPING AN ARCHITECTURE  
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 691