Training
Certifications
Books
Special Offers
Community




 
Microsoft® .NET Distributed Applications: Integrating XML Web Services and .NET Remoting
Author Matthew MacDonald
Pages 752
Disk N/A
Level Int/Adv
Published 02/12/2003
ISBN 9780735619333
Price $59.99
To see this book's discounted price, select a reseller below.
 

More Information

About the Book
Table of Contents
Sample Chapter
Index
Companion Content
Related Series
Related Books
About the Author

Support: Book & CD

Rate this book
Barnes Noble Amazon Quantum Books

 

Index


A
absolute expiration, data caching, 409
access, ADO.NET, connection-based, 59-60
Access databases, building, 550-552
acknowledgement messages, 278
Activate method, 306
Activating CustomerDB Through an Interface listing (11-9), 370
activation, object pooling, 306
activation modes, Remoting, 103
Activator.GetObject method, 388
AddCustomer method, 320
AddInformation method, 200
Adding a Listener with the Configuration File listing (14-10), 497
Adding a Ticket to the Cache listing (18-35), 674
Adding ADO.NET Code to the CustomerDB Class listing (3-1), 60
Adding Query Methods to CustomerDB listing (3-2), 63
Adding Support for Multiple Method Calls listing (6-25), 210
AddItem function, 560-561
AddNewFromQueue method, 625
AddOrder function, 560-561
AddTask method, 651
AddTask Method listing (18-12), 651
administration queues, Message Queuing, 261
ADO.NET, 55-56
   Command Builder, command generation, 87
   connection-based access, 59-60
   data readers, 63
   DataSet, 73-90
      column mappings, 77-79
      creating, 75-77
      data adapters, 75, 77
      error handling, 89-90
      navigating, 79-80
      relations, 81-85
      updating from, 85-86
      validation, 89
      XML cross-platform data exchange, 90
   direct data source interaction, 59-62
   direct queries, 63-66
   distributed systems, role of, 56
   MTS (Microsoft Transaction Service), 72-73
   namespaces, System.Data, 57
   objects, data, 58-59
   provider classes, 58-59
   provider-agnostic code, 70-72
   stored procedures, 67-70
advanced locking, threads, 205-207
advanced reader-writer locking, threads, 233-234
aggregate functions, 66
algorithms, cryptographic, 450-451
AppDomain.Unload method, 520
application browser, 523-531
   code access security, 531-536
   communication improvements, 536-541
   deployment, 523-524
   enhancements to, 541
   modules, 527
      dynamic, 527-529
   XML Web service, 525-527
Application Browser Interface listing (15-16), 539
Application Browser XML Web Service listing (15-8), 526
application domains, 96
   connection pooling, 394
application launcher
   deployment, 512-523
      upgrade XML Web service, 522-523
   enhancements to, 522-523
Application Launcher Startup Form listing (15-1), 514
Application Module Interface listing (15-12), 537
ApplicationException object, 61-62
applications
   ASP.NET web, 16-17, 147
   client-server, 5-7
      interaction, 6
      problems with, 7-9
      process usage, 7
   COM+, 287
   distributed, 3, 9
      advantages, 10-11
      DCOM (Distributed Component Object Model), 12
      object pooling, 11
      process usage, 9
      reasons for adopting, 4
      three-tier, 10
architecture
   client-server, 5-7
      interaction, 6
      problems with, 7-9
      process usage, 7
   distributed, 3, 9
      advantages, 10-11
      DCOM (Distributed Component Object Model), 12
      modeling, 7
      object pooling, 11
      process usage, 9-10
      reasons for adopting, 4
      three-tier, 10
   physical, 356-358
      load balancing, 357-358
      scaling, 356-357
   three-tier, 340-343
   tiers, 7
asmx files, 147
ASP.NET
   applications, 147
   hosting, 378-379
   pages
      code, 576
      threads, 179
   platform services, 167-169
   session state service, 331
   upload pages, creating, 575-577
   Web applications, 16-17
ASP.NET Upload Page Code listing (16-15), 576
aspx files, 147
assemblies
   binding, 52-53
   components
      compared, 20
      deploying, 38-42
   CustomerInterfaces assembly, 366-367
   delayed signing, 46-47
   dependencies, viewing, 48-49
   GAC (global assembly cache), 40
   naming, 288
   private, searching for, 40-42
   shared, 39-40
      code bases, 51-52
      configuration files, 47-53
      GAC (global assembly cache), 43-46
   strong-named, 43-44
      versioning policies, 50-51
   versioning, 42-47
   viewing, ILDasm.exe, 48
Assembly.GetExecutingAssembly method, 521
Assembly.LoadFrom method, 523, 529
Assert method, 473-475
asserting permissions, code access security, 473-475
asymmetric encryption, 450-451
   selective, 451-457
asynchronous calls, 177-178
   Remoting, 184
   XML Web services, 184-185
asynchronous delegates, multithreading, 180-185
asynchronous I/O, multithreading, 190-191
Asynchronous Support in the Web Service Proxy Class listing (6-4), 185
Asynchronous Tasks with Tickets listing (7-5), 231
authenticate failure to error in Visual Studio .NET 2003, 166
AuthenticateSession method, 442, 657
AuthenticateUser method, 643
Authenticating a Ticket listing (13-13), 443
Authenticating a Ticket listing (18-18), 656
authentication, 422-424
   custom role-based, 436-445
      ticket systems, 439-443
   impersonation, 433-435
   RenderService class, 654-657
   setting information, 427-428
   Windows, 424-435
      IIS settings, 426-428
      user information, 431-433
Authentication Logic listing (13-12), 442
authorization, 422-424
Authorizing a Permission listing (13-9), 438
Automated Deployment Through Downloading listing (2-6), 51
Automatic Encryption with a Custom Class listing (13-29), 463
automatic transactions (COM+), 284, 314-323
   isolation levels, 321-322
   rolling, 320-321
   Web method transactions, 323
automatically passing tickets, 443-445
Avoiding Deadlocks listing (6-20), 207

B
back end processing (common), 353
Basic Windows Client listing (5-3), 163
Basic Windows Service listing (7-9), 238
batch updates, 401-404
BeginGetStockQuote method, 185
BeginInvoke method, 181, 184, 185, 187
BeginMethodName method, 187
BeginReceive method, 277
BeginStockQuote method, 185
BeginTransaction method, 73
bidirectional communication, Remoting, 121-122
Binary Formatter, Remoting, 106
binding assemblies, 52-53
bottlenecks, databases, client-server applications, 7
Browsing All Private Queues listing (8-5), 268
Browsing All Public Queues listing (8-4), 268
browsing messages, 277-278
building databases, 550-555
Business Facade listing (10-7), 347
business objects, 341
ByRef argument (Remoting), 360
ByVal argument (Remoting), 360

C
Cache.Insert method, 408
caching
   absolute expiration, 409
   data, 408-412
      absolute expiration, 409
   data transfers, 404-405
   GAC (global assembly cache), 510
   output (response), 410-412
   retrieving cached items, 410-411
   sliding expiration, 409
   strategies determining, 412-413
   ticket adding, 674-676
calculated values, returning, 66
Callback That Uses a State Object listing (6-8), 190
callbacks
   multithreading, 187-190
   threads, 213-217
caller inform pattern, 61
Calling a Client Method Remotely Through a Delegate listing (4-22), 128
Calling a Method Multiple Times Asynchronously listing (6-26), 211
Calling an XML Web Service Asynchronously by Using a Custom Class listing (6-24), 210
Calling an XML Web Service Synchronously by Using a Custom Class listing (6-23), 209
calls, XML Web services, 16
CanBePooled method, 300, 306, 313
canonicalization error, 522
case studies
   Duwamish 7, 685-686
   Fitch and Mather, 688
   IBuySpy, 682-683
      IBuySpy portal, 684-685
   .NET Pet Shop, 687
   Nile Books, 689
centralized systems, XML Web services, 587
Changing the Order Status listing (17-4), 595
Channel Templates in the machine.config File listing (4-4), 107
channels, Remoting, 106
   templates, 107
   using multiple, 118-119
CheckClients method, 233
Checking for Errors at the Client listing (12-7), 404
Checking the Cache for Ticket listing (18-36), 675
classes, 19
   ADO.NET, provider, 58-59
   components, 19-20
   CustomerDB, 34
   CustomersDB, 558
   disposable, 31-33
   events, 20
   ExcelTranslator, 565-569
   factories, 345
   IComponent, 28-34
   InvoicerTables, 564
   lower-level, socket-based connections, 108
   methods, 20
   non-component, disposable pattern, 32-33
   OrderDB, Transact.NET database, 599-606
   OrdersDB, 560-563
   ProductDB, Transact.NET database, 598-599
   properties, 20
   proxy, XML Web services, 158-164
   reference types, 22
   remotable, creating, 108-109
   Remoting
      ordinary, 95
      remotable, 95, 99-101
      serializable, 95-99
      types, 95
   RenderService, 654
      authentication, 654-657
      functionality, 658-660
   resources, 31-33
   SessionDB, client-server programming, 644-647
   SqlConnection, 34
   Structures, compared, 26
   stubs, 375
   SuperComputeTables, client-server programming, 653
   System.Delegate, 180
   System.Messaging namespace, 265
   System.MulticastDelegate, 180
   TaskDB, client-server programming, 647-653
   TransactTables, Transact.NET database, 606
   UserDB, client-server programming, 643-644
cleaning tasks, threads, 228-230
client application, Remoting, 112-115
client cleanup, client-server programming, adding, 676
client code, interface-based programming, 370
Client Code Using a Business Facade listing (10-6), 346
Client Code Using a Service Provider listing (10-5), 346
Client Configuration File listing (4-9), 112
Client Configuration File listing (11-10), 371
Client for the Nonpooled Class listing (9-4), 300
Client for the Pooled Class listing (9-6), 302
Client Login Method listing (18-22), 660
client requests, Remoting, thread pools, 103
Client Test Form listing (4-10), 114
Client That Uses a SingleCall Object listing (4-15), 120
Client That Uses the Custom Threading Class listing (6-30), 215
Client That Uses the Custom Threading Class with Multiple Simultaneous Calls listing (6-31), 216
Client That Uses the HTTP Channel with a Binary Formatter listing (4-12), 117
Client Tracking with an Asynchronous Singleton listing (7-2), 226
client-activated objects
   Remoting, 103, 105
   versioning, 364
Client-Initiated Transaction listing (3-9), 73
clients
   code, client-server programming, 660-663
   dedicated Windows, migration, 581-583
   dependent, Message Queuing server, 258-259
   greedy, 298
   independent, Message Queuing server, 259
   interfaces, 663
   internal, OrderFill client, 617-623
   order, 611-617
   order-filling, multiple support, 627-628
   rendered files downloading, 672-674
   threaded, 176-179
   tracking threads, 225-228
client-server applications, 5-7
   interaction, 6
   problems with, 7-9
      database bottlenecks, 7
      deployment, 8-9
   process usage, 7
client-server programming, 631
   client cleanup, 676
   client code, 660-663
   data component, 642-643
   data layer, 636-637
   load balancing, adding, 676-678
   Microsoft Message Queuing, adding, 676
   problems
      analyzing, 633-634
      defining, 631-632
   SessionDB class, 644-647
   Solutions, defining, 634-636
   stored procedures, 637-642
   SuperComputeTables class, 653
   TaskDB class, 647-653
   ticket caching, adding, 674-676
   UserDB class, 643-644
client-side logging, 493-494
   tracing, 494-500
      listeners, 496-497
      switches, 497-499
   unhandled errors, catching, 500
Close method, 309
Closing the Task Processor listing (18-32), 671
CLR (common language runtime), 31, 422, 509
clustered indexes, 415
Coarser Lock listing (6-14), 202
code, data tiers, placing in, 417-418
code access security, 468-469
   application browser, 531-536
   permissions, asserting, 473-475
   stack walk, 470-471
      demands, 471-473
code bases, shared assemblies, 51-52
CodeBase element, 41-42
ColdStorage XML Web services, 689
column mappings, DataSet indirection, 77-79
COM (Component Object Model), upgrading from, 355
COM and DCOM, 11
COM components, 285
COM interop, 285
COM+ (Component Object Model+), object pooling, and state, 297-298
COM+ queued components, 281
COM+ services, 283
   applications, 287
   assemblies, naming, 288
   automatic transactions, 284, 314-323
      isolation levels, 321-322
      rolling, 320-321
      Web method transactions, 323
   components, using, 295
   DCOM (Distributed Component Object Model), need for, 17
   distributed systems, role, 284
   enterprise services, 285
   JIT (just-in-time) activation, 284, 309-314
      object pooling, 313-314
   loosely coupled events, 284, 325
   MTS (Microsoft Transaction Server), 285
   object construction strings, 325
   object pooling, 284, 295-296
      activation, 306-307
      conditional pooling, 306-307
      connection, 309
      data providers, 307-308
      deactivation, 306-307
      greedy clients, 298
      ideal candidates, 296-297
      instance management, 295-296  
      JIT activation, 313-314
      pool establishment, 304-306
      pooled component example, 299-304
   queued components, 284, 324
   registration, 287
      declarative model, 292-293
      dynamic, 289-290
      manual, 291
      versioning, 294-295
   role-based security, 285
   serviced component, 285
   services, 284
   SOAP services, 326
   synchronization, 325
Command Builder, generating commands, 87
CommitChanges method, 318
CommitNewOrder method, 600, 610
Committing the Order and Sending the Notification listing (17-16), 611
Committing Updates in Phases listing (3-19), 88
CommitTransaction method, 350
common back end processing, components, 353
common language runtime (CLR). See CLR
communication
   application browser, improving, 536-541
   cross-computer, 330
   cross-process, 330
   Remoting, bidirectional, 121-122
communications formats, Remoting, 105-106
Comparing the Local and Server Version on Startup listing (15-2), 515
CompleteOrder method, 605
CompleteTask method, 647, 652
CompleteTask Method listing (18-14), 652
Completing an Order listing (17-11), 606
Completing an Order listing (17-25), 622
Completing the Order listing (17-5), 596
Component Host Configuration File listing (4-7), 110
Component Host Configuration File listing (11-7), 369
Component Host Form listing (11-8), 369
Component Host That Provides a SingleCall Object listing (4-14), 119
Component Host That Supports Multiple Channels listing (4-13), 118
Component Host That Uses a Singleton Object listing (4-16), 121
Component Host That Uses the HTTP Channel with a Binary Formatter listing (4-11), 117
component hosts, 369
   Remoting, 101-102, 109-111
   Windows services, using as, 250-251
Component Object Model (COM). See COM entries
Component Object Model+ (COM+). See COM+ entries
Component Services console, 288
components, 19-20
   assemblies
      binding, 52-53
      compared, 20
      deploying, 38-42
      shared assemblies, 47-53
      versioning, 42-47
   COM, 285
   COM+, using, 295
   common back end processing, 353
   configuration files, 34-37
   connection strings, 34-37
   data
      client-server programming, 642-643
      creating, 557-558
      Transact.NET database, 596-597
   databases, services, 22-26
   design time, using at, 29-30
   distributed, 329-336
   IComponent interface, 28-34
   OrderProcessor, 549-550
   roles, 20-22
      information packages, 22
      service providers, 21
   TaskProcessor library, 664-672
   toolbox, 29
Composition with InvoicerTables listing (16-7), 564
Composition with SuperComputeTables listing (18-15), 653
Composition with TransactTables listing (17-12), 606
concurrent connections, testing, 398-399
conditional pooling, object, 306
configuration files, 34-37
   creating, using Framework Configuration tool, 52
   projects, adding to, 37
   settings, 36-37
   shared assemblies, 47-53
   Visual Studio .NET, 37-38
   XML, 36
configuring
   advanced messages, 273-275
   for debugging, Web service, 165
   host configuration files, lifetime, 132-133
   internal clients, startup, 618
   Message Queues, 262-264
   Remote objects, ASP.NET, 379
Configuring a Remote Object for ASP.NET listing (11-15), 379
Configuring Lifetime in the Host Configuration File listing (4-26), 132-133
Configuring the Internal Client on Startup listing (17-21), 618
confirmation GUIDs, adding, 626-627
connection strings, 34-37, 62
connection-based access, ADO.NET, 59-62
connections
   concurrent, testing, 398-399
   consecutive, testing, 398-399
   information, recording, 383-388
   local pools, 393
   opening, 398
   pooling
      application domains, 394
      data tiers, 391-400
      object, compared to, 309
      testing, 395-400
   shared pools, 394
connector queues, Message Queuing, 260-261
consecutive connections, testing, 398-399
Console Component Host listing (4-8), 111
Consuming a .NET Web Service in Visual Basic 6 listing (5-4), 170-171
context, private methods, 603
Control.Invoke method, 625
coordination service, load balancing, 388
counters, problems with, 202
Create method, 269
CreateConnection function, 70
CreateSession method, 645
CreateSession Method listing (18-7), 645
Creating a Custom Class for an Asynchronous Method Call listing (6-22), 209
Creating a Custom Log listing (14-7), 488
Creating a Private Queue listing (8-7), 269
Creating a Public Queue listing (8-6), 269
Creating a Remotable Custom Event listing (4-17), 123
Creating Custom Counters listing (14-13), 504
Creating the Module Through Its Interface listing (15-14), 538
Creating Two Pools listing (12-2), 398
cross-computer communication, 330
cross-platform programming, Message Queuing, 265
cross-platform XML Web services, 170-172
cross-process communication, 330
cryptographic algorithms, 450-451
custom classes, encryption, wrapping, 462-465
Custom Collection for CustomerDetails listing (3-3), 65
Custom Lease Sponsor listing (4-29), 134-135
custom performance counters, 503-508
custom role-based authentication, 436-445
   ticket systems, 439-443
custom threaded objects, 208-220
Custom Threading Class That Fires a Notification Event listing (6-29), 214
Custom Threading Class That Uses a Callback listing (6-28), 213
custom threads, 191, 196
CustomerAdd stored procedure, 552
CustomerDB class, 34
CustomerDB Service Provider as a Web Service listing (5-1), 149
CustomerDB service provider component, 149
CustomerDB Stub listing (11-13), 375
CustomerDB test page, XML Web services, testing, 156
CustomerDB with Generic ADO.NET Code listing (3-7), 70-72
CustomerDetails object, 63
CustomerInterfaces assembly, 366-367
CustomersDB class, 558
CustomersDB Service Provider listing (16-4), 559
Customizing the CanBePooled Method listing (9-8), 306

D
data adapters, DataSet, 75-77
data caching, 408-412
   absolute expiration, 409
   cached items, retrieving, 410-411
   strategies, determining, 412-413
data component
   client-server programming, 642-643
   creating, 557-558
   Transact.NET database, 596-597
Data Entities listing (16-3), 557
Data Entities listing (17-6), 597
Data Entities listing (18-5), 642
data layer, client-server programming, 636-637
data layer rules, three-tier architecture, 343
data objects, ADO.NET, 58-59
data providers
   object pooling, 307-308
   third-party data providers, 62
data readers, ADO.NET, 63-66
data serialization, XML Web services, 153-154
data tiers, 391
   caching, 404
      data, 408-412
      output, 410, 410-412
      strategies, 412-413
   code, placing in, 417-418
   connection pooling, 391-400
   data transfers, planning, 400-404
   databases, optimizing, 414-419
data transfers
   batch updates, 401-404
   caching, 404-405
      data, 408-412
      output (response), 410-412
   planning, 400-404
data types, XML Web services, support, 154
databases, bottlenecks, client-server applications, 7
   building, 550-552, 555
   components, services, 22-26
   indexes, 414-415
   normalization, 418-419
   optimizing, 414-419
   polling, 587
   profiling, 415-416
   stored procedures, 414, 552-555
      data insertion, 553
      data retrieval, 555
   tables
      custom authentication, 436
      partitioning, 416-417
   Transact.NET
      data component, 596-597
      OrderDB class, 599-606
      ProductDB class, 598-599
      stored procedures, 591-596
      tables, 590-591
      TransactTables class, 606
   triggers, adding, 587
DataBound Form That Uses CustomerDB listing (3-4), 66
DataBound Form with a DataSet listing (3-11), 77
DataRow.Delete method, 80
DataRow.GetChildRows method, 82
DataRow.GetParentRow method, 82
DataSet
   ADO.NET, 73-90
   creating, 75-77
   data adapters, 75-77
   DataTable, 77
   Errors, handling, 89-90
   Indirection, column mappings, 77-79
   navigating, 79-80
   relations, 81-85
   typed, 79
   updating from, 85-86
   validation, 89
   XML
      cross-platform data exchange, 90-92
      representation, 91
DataSet object, 401
DataSet XML listing (3-20), 90
DataSet.GetChanges method, 87, 88
DataTable object, 75, 77
DataTable.GetChanges method, 87, 88
DataTable.GetErrors method, 89
DCOM (Distributed Component Object Model), 12
   COM+ services, 17
   complexity of, 12-13
   distributed garbage collection, 12
   keep-alive pinging, 12
   Remoting, compared, 93
Deactivate method, 306, 312
deactivation, object pooling, 306-307
dead-letter queues, Message Queuing, 261
deadlocks, threads, locking, 204-205
debugging
   enabling Web service, 165
   enabling Windows authentication, 167
   Web services, 164-167
   Windows service, 246-248
Debug.Write method, 497
declarative model, COM+ registration, 292-293
Declarative Security Assertion listing (13-34), 473
Declarative Security Demand listing (13-33), 472
Decrypting Data at the Client End listing (13-28), 460
dedicated Windows clients, migration, 581-583
Defining Trace Switches listing (14-11), 498
delayed signaling, assemblies, 46-47
delegates
   Remoting, 127-128
   threads, 180-185
Delete method, 269
deleted rows, checking for, 80
Demands, stack walks, triggering, 471-473
Deny method, 473-475
Denying Access to Multiple Permissions Through a PermissionSet listing (13-35), 474
Dependencies, assemblies, viewing, 48-49
dependent clients, Message Queuing, 258-259
Deploying and Managing Microsoft .NET Web Farms, 356
deploying component assemblies, 38-42
deployment, 509
   application browser, 523-524
      code access security, 531-536
      communication improvements, 536-541
      dynamic modules, 527-528
      enhancements to, 541
      modules, 527
      XML Web service, 525-527
   application launcher, 512-523
      enhancements to, 522-523
      upgrade XML Web service, 522-523
   client-server applications, 8-9
   GAC (global assembly cache), 510
   problems, solutions to, 511-512
Deserialize method, 465
design
   Remoting, activation modes, 103
   tiers, 340-343
design patterns, 343-351
   facades, 345-348
      interceptions, 348-349
      transactions, 350-351
      XML Web services, 349-350
   factories, 345
   interfaces, 344-345
design time, components, using at, 29-30
direct mail notification, server-side logging, 492-493
direct queries, ADO.NET, 63-66
directories
   sorting based on the directory name, 517
   virtual directories, creating, 145-146
DISCO (Discovery), 143
Displaying Assembly Evidence listing (15-11), 532
Displaying Order Information listing (17-23), 620
Displaying Related Rows in a TreeView listing (3-15), 82
Displaying the DataSet in Visual Basic 6 listing (3-21), 91
disposable classes, 31-33
disposable pattern, non-component classes, using in, 32-33
Disposable Pattern in a Component Class listing (2-2), 32
Dispose method, 32-33, 302, 309
distributed applications, 3, 9
   ADO.NET, role of, 56
   advantages, 10-11
   components, roles, 20-22
   DCOM (Distributed Component Object Model), 12
   Message Queuing, 281
   modeling, 7
   object pooling, 11
   performance issues, 338
   process usage, 9-10
   reasons for adopting, 4
   scalability, 336-340
   three-tier architecture, 10
Distributed Component Object Model (DCOM), 12
distributed components, 329-336
distributed design patterns, 343-351
   facades, 345-348
      interceptions, 348-349
      transactions, 350-351
      XML Web services, 349-350
   factories, 345
   interfaces, 344-345
distributed garbage collection. See DCOM
distributed systems
   ASP.NET applications, 16-17
   COM+, role of, 284
   combining, 17
   messaging, role of, 254-255
   Remoting, 13-15
      role of, 94-95
   threaded clients, role of, 176-179
   threads, role of, 221-223
   XML Web services, 15
      role of, 139-140
Distributed Transaction Coordinator (DTC). See DTC
domains, application, 96
DoWatch method, 624
downloading rendered files, 672-674
DownloadMostRecentAssembly Web method, 522
DownloadMostRecentAssembly XML Web services method, 519
DoWork method, 666, 667-668, 670
DTC (Distributed Transaction Coordinator), 314, 330
Duwamish 7 case study, 685-686
dynamic modules, application browser, 527-529
dynamic publication, XML Web services, 383-389
dynamic registration, COM+, 289-290
Dynamically Creating the Order Interface listing (17-18), 614
Dynamically Loading a Module listing (15-10), 529

E
early validation, adding, migration, 581
elements
   CodeBase element, 41-42
   probing element, 42
Enabling Output Caching listing (12-8), 405
Enabling SSL on the Client Side listing (13-19), 449
Encapsulating the Details of a Method Call listing (6-21), 208
Encoding object, 454
Encrypt method, 465
Encrypted SOAP Message listing (13-25), 456
Encrypting a Serializable Object with a Wrapper listing (13-31), 466-467
Encrypting Data at the Server listing (13-27), 459
Encrypting Information at the Client End listing (13-23), 455
encryption, 445
   asymmetric, 450-451
      selective, 451-457, 462
   cryptographic algorithms, 450-451
   SSL (Secure Sockets Layer), 446-450
   symmetric, 450-451
      selective, 457-462
   wrapping, custom classes, 462-465
EncryptionPackage, 465, 468
EndGetStockQuote method, 185
EndInvoke method, 184, 187
EndReceive method, 277
enterprise services, COM+, 285
entries, Windows event logging
   handling, 491-492
   retrieving, 490-491
   writing, 487-489
Equals method, 361
errors
   canonicalization, 522
   DataSet, handling, 89-90
   multithreading, 179
event log entries, pooled objects, 305
Event Viewer, 485-486
EventLog.CreateEventSource method, 488
events
   classes, 20
   Remoting, 122-127
Examining Trace Switches listing (14-12), 499
Excel
   migration, problems during, 581-583
   spreadsheets, flexibility, 555-557
Excel Upload XML Web Service listing (16-16), 578
Excel upload XML Web services, creating, 577-580
ExcelTranslator class, 565-569
ExcelTranslator.ConvertExcelFileToOrder Method listing (16-9), 568
Exception Handling in DoWork listing (18-30), 669
Exceptions, Remoting
   common, 136-137
   propagation, 360-361
ExecuteNonQuery method, 61
ExecuteReader method, 63, 65
ExecuteScalar method, 66
Exposing All the Remotable Types in an Assemblylisting (11-18), 382
external systems
   choosing, 351-352
   hybrid internal/external systems, 352

F
Facade That Aggregates Connections listing (10-8), 348
Facade That Incorporates Logging and Validation listing (10-9), 349
Facade That Uses a COM+ Transaction listing (10-11), 351
Facade That Uses Provider-Controlled Transactions listing (10-10), 350
facades
   design patterns, 345-348
      interceptions, 348-349
      transactions, 350-351
      XML Web services, 349-350
   logging, 481-484
factories, design patterns, 345-348
failure to authenticate error, in Visual Studio .NET 2003, 166
Favorites Service XML Web services, 690
FIFO (first-in-first-out) order processing, 594
file formats, XML Web services, 147
file storage, serializable classes, Remoting, 99
filenames, using unique, 581
FileStream.BeginWrite method, 191
Fill method, 75-77
finalization, nondeterministic, 31
Finding an URL Using the Coordination Service listing (11-22), 387
Finding Available Orders listing (17-3), 594
fire-and-forget communication, messaging, 255-257
Firing the Remote Event listing (4-19), 125-126
first-in-first-out (FIFO). See FIFO order processing
Fitch and Mather case study, 688
formats, files, XML Web services, 147
formatters, Remoting, 106
   using different, 116-117
Framework Configuration tool, creating configuration files, 52
Functionality, RenderService class, 658-660
functions
   AddItem, 560-561
   AddNewFromQueue, 626
   AddOrder, 560-561
   aggregate, 66
   AuthenticateSession, 657
   CreateConnection, 70
   GetActiveDomain, 115
   Log, 571-572
   Login, 660
   LookupPricing, 608
   NEWID, 638
   OrdersDB.AddItem, 563
   See also methods

G
GAC (global assembly cache), 40, 111, 510
   deployment, 510
   shared assemblies, 43-46
Generic Encrypted Information Package listing (13-30), 464
GetActiveDomain function, 115
GetActiveDomain method, 121
GetAllAccounts method, 340
GetAvailableOrderIDs method, 603
GetAvailableTasks method, 649, 650
GetAvailableTasks Method listing (18-11), 650
GetCurrentUser method, 425
GetCustomer method, 63
GetCustomerAddress method, 400
GetCustomerDetails method, 400
GetCustomerIDByName stored procedure, 554
GetCustomerName method, 400
GetCustomers method, 63, 70, 156-157
GetCustomersAndOrders method, 81
GetDate method, 405
GetExcelMappings stored procedure, 555
GetHashCode method, 361
GetIISUser method, 425
GetLifetimeService method, 133
GetModules method, 541
GetMostRecentVersion method, 520
GetMostRecentVersion Web method, 517
GetPricingDataSet method, 598-599, 607
GetProductIDByCode stored procedure, 554
GetRegisteredWindowsServices method, 250
GetSession method, 646
GetSession Method listing (18-9), 646
GetStockQuote method, 406
GetTasks method, 649, 650
GetTasks Method listing (18-10), 649
GetTasks Web method, 658
GetTotal method, 180-181
GetUrls method, 384
GetUrls Web Method listing (11-21), 386
GetUsageInformation method, 225
global assembly cache (GAC). See GAC
Global Unique Identifiers (GUIDs). See GUIDs
graphical user interface (GUI). See GUI
greedy clients, 298
GUI (graphical user interface), 524
GUIDs (Global Unique Identifiers), 230, 440
   confirmation GUIDs, adding, 626-627
   tasks, identification of, 648

H
Handling the MessageReceived Event listing (17-28), 625
Handling the ModuleClosed Event listing (15-15), 539
Hashtable.Synchronized method, 233
horizontal partitioning, 416
Hosting a Transaction with a Nonserviced Client listing (9-14), 321
HTTP (Hypertext Transfer Protocol), 142
HttpChannel (Remoting), 106
hybrid internal/external systems, 352
Hypertext Transfer Protocol (HTTP). See HTTP

I
IAsyncResult object, 182-183
IAsyncResult properties, 183
IBuySpy case studies, 682-683
   for ASP.NET, 67
   IBuySpy portal, 684-685
IComponent interface, 28-34
IDbTransaction methods, 73
Identifying a Response Message listing (8-18), 280
IDisposable interface, 32
IIS (Internet Information Services), 145-146
   authentication settings, 426-428
   installing, 145
   Web servers, access, 145
   XML Web services, 145-146
IIS Manager, 147
   authentication, 426-428
ILDasm.exe, assemblies, viewing, 48
ILogicalThreadAffinative interface, 444
ILogicalThreadAffinative Object listing (13-16), 444
Imperative Security Demand listing (13-32), 472
impersonation, users, 433-435
Implementing IApplicationBrowser listing (15-17), 540
Implementing IApplicationModule listing (15-13), 537
Implementing IDispose Directly listing (2-3), 33
Importing a New File listing (16-14), 574
Increment method, 506
independent clients, Message Queuing, 259
indexes
   clustered, 415
   databases, 414-415
Indirection with Column Mappings listing (3-12), 78
information, submitting, messaging, 255
information packages, components, 22
initialization vectors, symmetric encryption, 458
InitializeLifetimeService method, 133
Initializing the Application Browser listing (15-9), 528
Insert method, 408
Inserting a New Order listing (17-8), 600
inserting data, stored procedures, 553
InsertOrder XML Web service method, 600
InsertOrder XML Web Service Method listing (16-18), 583
InsertOrderItem method, 600
InsertStation method, 600
installing
   IIS (Internet Information Services), 145
   Windows service, 243-246
instance management, COM+, object pooling, 295-296
Instantiating a Logger Dynamically listing (14-4), 483
instructions, sending to threads, 217-220
interaction
   client-server architecture, 6
   XML Web services, 143-144
interceptions, facades, 348-349
Interface for CustomerDB listing (11-5), 367
interface-based programming
   client code, 370
   Remoting, 366
      problems with, 373-376
interfaces
   clients, 663
   design patterns, 344-345
   IComponent, 28-34
   IDisposable, 32
internal clients
   configuring startup, 618
   OrderFill, 617-623
      queue monitoring, 624-626
internal systems
   choosing, 351-352
   hybrid internal/external systems, 352
Internet Information Services (IIS). See IIS
Invalid Delegate Use with .NET Remoting listing (11-1), 362
InvoicerTables class, 564
Invoke method, 181, 184
Invoking a Method Asynchronously Through a Delegate listing (6-2), 182
Invoking a Method Through a Delegate listing (6-1), 181
IsInRole method, 432
isolation levels, transactions, 321-322

J
Jaggle XML Web services, 689-690
JIT (just-in-time) activation, COM+, 284, 309-314
   object pooling, 313-314
journal queues, Message Queuing, 261
just-in-time (JIT) activation. See JIT activation, COM+

K
keep-alive pinging, DCOM (Distributed Component Object Model), 12
keys
   adding to projects, 45
   creating, shared assemblies, 45
   public, size, 49

L
Launching the Application Startup Form listing (15-6), 520
leases, object lifetimes
   choosing, 136-137
   Remoting, 129-136
lifetime, objects, Remoting, 104, 129-136
Likely Candidate for a Deadlock listing (6-17), 204
linking
   permissions, 436
   roles, 436
   users, 436
Listener Class for a Remote Callback listing (4-21), 127
Listener Class for a Remote Event listing (4-18), 124
listeners, client-side logging, tracing, 496-497
listings
   Activating CustomerDB Through an Interface (11-9), 370
   Adding a Listener with the Configuration File (14-10), 497
   Adding a Ticket to the Cache (18-35), 674
   Adding ADO.NET Code to the CustomerDB Class (3-1), 60
   Adding Query Methods to CustomerDB (3-2), 63
   Adding Support for Multiple Method Calls (6-25), 210
   AddTask Method (18-12), 651
   Application Browser Interface (15-16), 539
   Application Browser XML Web Service (15-8), 526
   Application Launcher Startup Form (15-1), 514
   Application Module Interface (15-12), 537
   ASP.NET Upload Page Code (16-15), 576
   Asynchronous Support in the Web Service Proxy Class (6-4), 185
   Asynchronous Tasks with Tickets (7-5), 231
   Authenticating a Ticket (13-13), 443
   Authenticating a Ticket (18-18), 656
   Authentication Logic (13-12), 442
   Authorizing a Permission (13-9), 438
   Automated Deployment Through Downloading (2-6), 51
   Automatic Encryption with a Custom Class (13-29), 463
   Avoiding Deadlocks (6-20), 207
   Basic Windows Client (5-3), 163
   Basic Windows Service (7-9), 238
   Browsing All Private Queues (8-5), 268
   Browsing All Public Queues (8-4), 268
   Business Facade (10-7), 347
   Callback That Uses a State Object (6-8), 190
   Calling a Client Method Remotely Through a Delegate (4-22), 128
   Calling a Method Multiple Times Asynchronously (6-26), 211
   Calling an XML Web Service Asynchronously by Using a Custom Class (6-24), 210
   Calling an XML Web Service Synchronously with a Custom Class (6-23), 209
   Changing the Order Status (17-4), 595
   Channel Templates in the machine.config File (4-4), 107
   Checking for Errors at the Client (12-7), 404
   Checking the Cache for Ticket (18-36), 675
   Client Code Using A Business Facade (10-6), 346
   Client Code Using A Service Provider (10-5), 346
   Client Configuration File (4-9), 112
   Client Configuration File (11-10), 371
   Client for the Nonpooled Class (9-4), 300
   Client for the Pooled Class (9-6), 302
   Client Login Method (18-22), 660
   Client Test Form (4-10), 114
   Client That Uses a SingleCall Object (4-15), 120
   Client That Uses the Custom Threading Class (6-30), 215
   Client That Uses the Custom Threading Class with Multiple Simultaneous Calls (6-31), 216
   Client That Uses the HTTP Channel with a Binary Formatter (4-12), 117
   Client Tracking with an Asynchronous Singleton (7-2), 226
   Client-Initiated Transaction (39), 73
   Closing the Task Processor (18-32), 671
   Coarser Lock (6-14), 202
   Committing the Order and Sending the Notification (17-16), 611
   Committing Updates in Phases (3-19), 88
   Comparing the Local and Server Version on Startup (15-2), 515
   CompleteTask Method (18-14), 652
   Completing an Order (17-11), 606
   Completing an Order (17-25), 622
   Completing the Order (17-5), 596
   Component Host Configuration File (4-7), 110
   Component Host Configuration File (11-7), 369
   Component Host Form (11-8), 369
   Component Host That Provides a SingleCall Object (4-14), 119
   Component Host That Supports Multiple Channels (4-13), 118
   Component Host That Uses a Singleton Object (4-16), 121
   Component Host That Uses the HTTP Channel with a Binary Formatter (4-11), 117
   Composition with InvoicerTables (16-7), 564
   Composition with SuperComputeTables (18-15), 653
   Composition with TransactTables (17-12), 606
   Configuring a Remote Object for ASP.NET (11-15), 379
   Configuring Lifetime in the Host Configuration File (4-26), 132-133
   Configuring the Internal Client on Startup (17-21), 618
   Console Application with Two Worker Threads (6-9), 192
   Console Component Host (418), 111
   Consuming a .NET Web Service in Visual Basic 6 (5-4), 170-171  
   CreateSession Method (18-7), 645
   Creating a Custom Class for an Asynchronous Method Call (6-22), 209
   Creating a Custom Log (14-7), 488
   Creating a Private Queue (8-7), 269
   Creating a Public Queue (8-6), 269
   Creating a Remotable Custom Event (4-17), 123
   Creating Custom Counters (14-13), 504
   Creating the Module Through Its Interface (15-14), 538
   Creating Two Pools (12-2), 398
   Custom Collection for CustomerDetails (3-3), 65
   Custom Lease Sponsor (4-29), 134-135
   Custom Threading Class That Fires a Notification Event (6-29), 214
   Custom Threading Class That Uses a Callback (6-28), 213
   CustomerDB Service Provider as a Web Service (5-1), 149
   CustomerDB Stub (11-13), 375
   CustomerDB with Generic ADO.NET Code (3-7), 70-72
   CustomersDB Service Provider (16-4), 559
   Customizing the CanBePooled Method (9-8), 306
   Data Entities (16-3), 557
   Data Entities (17-6), 597
   Data Entities (18-5), 642
   DataBound Form That Uses CustomerDB (3-4), 66
   DataBound Form with a DataSet (3-11), 77
   DataSet XML (3-20), 90
   Declarative Security Assertion (13-34), 473
   Declarative Security Demand (13-33), 472
   Decrypting Data at the Client End (13-28), 460
   Defining Trace Switches (14-11), 498
   Denying Access to Multiple Permissions Through a PermissionSet (13-35), 474
   Displaying Assembly Evidence (15-11), 532
   Displaying Order Information (17-23), 620
   Displaying Related Rows in a TreeView (3-15), 82
   Displaying the DataSet in Visual Basic 6 (3-21), 91
   Disposable Pattern in a Component Class (2-2), 32
   Dynamically Creating the Order Interface (17-18), 614
   Dynamically Loading a Module (15-10), 529
   Enabling Output Caching (12-8), 405
   Enabling SSL on the Client Side (13-19), 449
   Encapsulating the Details of a Method Call (6-21), 208
   Encrypted SOAP Message (13-25), 456
   Encrypting a Serializable Object with a Wrapper (13-31), 467
   Encrypting Data at the Server (13-27), 459
   Encrypting Information at the Client End (13-23), 455
   Examining Trace Switches (14-12), 499
   Excel Upload XML Web Service (16-16), 578
   ExcelTranslator.ConvertExcelFileToOrder Method (16-9), 568
   Exception Handling in DoWork (18-30), 669
   Exposing All the Remotable Types in an Assembly (11-18), 382
   Facade That Aggregates Connections (10-8), 348
   Facade That Incorporates Logging and Validation (10-9), 349
   Facade That Uses a COM+ Transaction (10-11), 351
   Facade That Uses Provider-Controlled Transactions (10-10), 350
   Finding an URL Using the Coordination Service (11-22), 387
   Finding Available Orders (17-3), 594
   Firing the Remote Event (4-19), 125-126
   Generic Encrypted Information Package (13-30), 464
   GetAvailableTasks Method (18-11), 650
   GetSession Method (18-9), 646
   GetTasks Method (18-10), 649
   GetUrls Web Method (11-21), 386
   Handling the MessageReceived Event (17-28), 625
   Handling the ModuleClosed Event (15-15), 539
   Handling the ThreadAbortException (6-10), 197
   Hosting a Transaction with a Nonserviced Client (9-14), 321
   Identifying a Response Message (8-18), 280
   Identifying Threads (6-11), 199
   ILogicalThreadAffinative Object (13-16), 444
   Imperative Security Demand (13-32), 472
   Implementing IApplicationBrowser (15-17), 540
   Implementing IApplicationModule (15-13), 537
   Implementing IDispose Directly (2-3), 33
   Importing a New File (16-14), 574
   Indirection with Column Mappings (3-12), 78
   Initializing the Application Browser (15-9), 528
   Inserting a New Order (17-8), 600
   InsertOrder Web Service Method (16-18), 583
   Instantiating a Logger Dynamically (14-4), 483
   Interface for CustomerDB (11-5), 367
   Invalid Delegate Use with .NET Remoting (11-1), 362
   Invoking a Method Asynchronously Through a Delegate (6-2), 182
   Invoking a Method Through a Delegate (6-1), 181
   Launching the Application Startup Form (15-6), 520
   Likely Candidate for a Deadlock (6-17), 204
   Listener Class for a Remote Callback (4-21), 127
   Listener Class for a Remote Event (4-18), 124
   Logging In and Retrieving Tasks at Startup (18-23), 661
   Logging Messages (16-11), 572
   Logging the Error Through a Facade (14-2), 480
   Login Method That Requires an Encrypted Password (13-22), 454
   Login Method That Stores Client Key Information (13-26), 458
   Login Web Method (13-11), 441
   Managing Active Services (7-13), 249
   Managing Concurrency with Locking (7-6), 232
   Manual Authentication in .NET Remoting (13-5), 431
   Manual Authentication in .NET Remoting (13-6), 433
   Manual Authentication with a NetworkCredential (13-3), 429
   Marshalling Calls to the User Interface Thread (6-27), 212
   Modifying Versioning Rules (11-3), 365
   Module Information (15-7), 525
   Monitoring In-Progress Tasks (7-4), 229
   Monitoring the Queue (17-27), 624
   Navigating All Tables and Fields in a DataSet (3.13), 80
   .NET Serviced Component with an Interface (9-2), 290
   New RequestNextTask Stored Procedure (18-37), 678
   Nonpooled Data Class (9-3), 299
   Object with an Infinite Lifetime (4-28), 134
   One-Way Method over .NET Remoting (8-2), 256
   One-Way Web Method (8-1), 255
   OrderProcessor Service (16-10), 571
   OrdersDB.AddOrder Method (16-5), 561
   Output Caching with Parameters (12-9), 406
   Overriding Lease Settings (4-27), 133
   Partially Serializable Class (4-2), 98
   Polling for Messages (8-14), 276
   Polling to Determine When an Asynchronous Method Is Complete (6-3), 183
   Pooled Data Class (9-5), 301
   Potential Grounds for a Race Condition (6-16), 203
   Private ExcelTranslator.GetMappings Function (16-8), 566
   Private OrdersDB.AddItem Function (16-6), 563
   Processing Tasks (18-29), 668
   Processor-Specific Stored Procedures for Tasks (18-4), 641
   ProductDB Service Provider (17-7), 598
   Providing Multiple Versions of a Server-Side Object (11-2), 363
   Proxy Class for the CustomerDB Service (5-2), 161
   Putting an Order In Progress (17-22), 619
   Putting the Object URI in the Configuration File (11-11), 373
   Reading Messages Without Receiving Them (8-15), 278
   Receiving a Remote Call Through a Delegate (4-23), 128
   Receiving All Messages (8-13), 276
   Receiving the Remote Event (4-20), 126
   Redirecting an Assembly Reference to a New Version (2-5), 51
   Refined CompleteTask Stored Procedure (18-38), 678
   Registering a Notification Queue (17-13), 608
   Registering Remote URLs with the Coordination Service (11-20), 386
   RegisterUrls and UnregisterUrls Web Methods (11-19), 384
   Remotable CustomerDB (4-3), 99
   Remotable CustomerDB (11-6), 368
   Remotable Object (4-5), 109
   RemoveSession Method (18-8), 646
   RenderService.GetTasks Method (18-20), 658
   RenderService.Login Method (18-17), 655
   RenderService.Logout Method (18-19), 657
   RenderService.SubmitTask Method (18-21), 658
   Renewing a Lease (4-25), 132
   Requesting an Acknowledgement Message (8-16), 278
   Retrieving a Cached Item (12-12), 410
   Retrieving a DataRow from a TreeNode on Selection (3-17), 84
   Retrieving an Acknowledgement Message (8-17), 280
   Retrieving an Automatic Ticket on the Server Side (13-18), 445
   Retrieving and Releasing an Order (17-10), 604
   Retrieving Available Orders (17-9), 603
   Retrieving the Product Catalog (17-14), 608
   Returning a DataSet (3-10), 76
   Returning a DataSet with a Relation (3-14), 81
   Returning a New Station (17-19), 615
   Returning an In Progress Order (17-24), 621
   Returning Log Information (14-8), 490
   Returning Orders on Shutdown (17-26), 623
   Returning the Latest File as a Byte Array (15-5), 519
   Returning the Product Catalog (17-1), 592
   Returning the Server-Hosted File Version (15-3), 518
   Revised SubmitBatchChanges (12-5), 402
   Sample Configuration File (2-4), 41
   Sample Database Component (2-1), 23-25
   Sample Windows Service Installer (7-14), 244
   Selecting a Queue (8-3), 266
   Sending a Configured Message with the Message Class (8-12), 273
   Sending a Simple Text Message in Binary (8-9), 271
   Sending a Simple Text Message in XML (8-8), 269
   Sending a Stop Signal to a Thread (6-33), 218
   Sending an Error E-mail (14-9), 493
   Sending an Object Message (8-11), 272
   Sending the Error Information to a Message Queue (14-3), 480
   Serializable Class (4-1), 98
   Serializable CustomerDetails (11-4), 367
   Serializable LoggedError Class (14-1), 479
   Serializable Message Class (8-10), 272
   Server-Side Dynamic Registration (11-16), 380
   Service Provider That Uses a Pooled Object (9-7), 303
   Showing the Right-Click Download Option (18-33), 673
   Simple JIT Class (9-10), 311
   Simple .NET Serviced Component (9-1), 287
   Simple Pooled JIT Class (9-11), 313
   Simple Transactional Class (9-12), 317
   Simple Transactional Class with AutoComplete (9-13), 319
   Simple XML Web Service That Tests Authentication (13-1), 425
   Singleton Object with Locking (6-13), 201
   Singleton Object Without Locking Support (6-12), 200
   SOAP Authentication Header (18-16), 654
   SOAP Ticket Header (13-15), 443
   Starting the Service (16-12), 572
   Startup Module (17-17), 612
   State Object for the Stock Quote Service (6-7), 189
   Stateful Account Class (10-1), 332
   Stateless AccountUtility Class (10-3), 334
   Stopping the Service (16-13), 573
   Stored Procedure for Adding a Customer Record (3-5), 68
   Stored Procedure for Verifying a Permission (13-8), 437
   Stored Procedures for Adding a New Order (17-2), 593
   Stored Procedures for Inserting Data (16-1), 553
   Stored Procedures for Managing Sessions (18-2), 639
   Stored Procedures for Retrieving Data (16-2), 555
   Stored Procedures for Validating a User (18-1), 638
   Storing a DataRow in a TreeNode (3-16), 84
   Stub That Cannot Be Instantiated (11-14), 376
   SubmitBatchChanges with Error Handling (12-6), 403
   Submitting a New Task (18-24), 663
   Submitting an Order (17-20), 616
   Submitting Batch Changes (3-18), 85
   Submitting DataSet Changes Only (12-4), 402
   SyncLock-Equivalent Code with the Monitor Class (6-18), 206
   Task Processor Configuration File (18-28), 667
   Task Processor Initialization Code (18-26), 665
   TaskProcessor Component (18-25), 664
   Test Service with Threading (7-10), 240
   Testing Consecutive and Concurrent Connections (12-3), 399
   Testing for a Lock (6-19), 206
   Threaded Class That Can Handle New Information (6-34), 219
   Threaded Class That Recognizes a Stop Signal (6-32), 218
   Threaded Worker Object (18-27), 666
   Ticket Class (13-10), 441
   Timer-Based Service (7-11), 242
   Tracking a Lease (4-24), 130
   Tracking the Task Start Time (7-3), 228
   Transaction in Store Procedure Code (3-8), 73
   Transactional Web Method (9-15), 323
   Transferring the Rendered File (18-34), 673
   Transparent Authentication in .NET Remoting (13-4), 430
   Transparent Authentication Using the Current User (13-2), 429
   Unencrypted SOAP Message (13-24), 456
   Unregistering All Channels (11-17), 381
   UpdateTaskStatus Method (18-13), 652
   Updating Order Prices (17-15), 610
   Updating the Interface (17-29), 626
   Upgrading the Application (15-4), 518
   UserDB Class (18-6), 643
   User-Interface Messages in DoWork (18-31), 670
   User-Specific Stored Procedures for Tasks (18-3), 640
   Using a Factory (11-12), 374
   Using a ThreadPool (7-8), 236
   Using a Ticket on the Client Side (13-14), 443
   Using Absolute Expiration (12-10), 409
   Using an Automatic Ticket on the Client Side (13-17), 444
   Using Data Caching in an XML Web Service (12-13), 411
   Using IApplicationBrowser to Add a Dynamic Menu (15-18), 540
   Using Interception with a Singleton (7-1), 224
   Using Pooling with a Data Provider (9-9), 307
   Using Programmatic Impersonation (13-7), 435
   Using Reader-Writer Locking (7-7), 234
   Using Reflection to Retrieve Version Information (14-5), 483
   Using Sliding Expiration (12-11), 409
   Using the Interlocked Class (6-15), 202
   Using the Stateful Account Class (10-2), 333
   Using the Stateless AccountUtility Class (10-4), 335
   Using the Stored Procedure in CustomerDB (3-6), 69
   Verifying SSL on the Server Side (13-20), 449
   Waiting for at Least One Asynchronous Method to Complete (6-6), 186
   Waiting for Multiple Asynchronous Methods to Complete (6-5), 186
   Windows Client Form Code (16-17), 579
   Windows Event Logging (14-6), 487
   Windows Form Component Host (4-6), 109
   Windows Service Component Host (7-14), 251
   XML Web Service That Exposes a Public Key (13-21), 453
   XML Web Service That Tests Connection Pooling (12-1), 396
load balancing
   client-server programming, adding, 676-678
   coordination service, 388
   physical architecture, 357-358
LoadFrom method, 531-532
local connection pools, 393
local objects, compared to remote objects, 330-331
locking threads, 200, 213, 231
   advanced locking, 205-207
   advanced reader-writer locking, 233-234
   deadlocks, 204-205
   race conditions, 203-204
Log function, 571-572
LogError method, 481
logging
   client-side, 493-494
      tracing, 494-500
      unhandled error catching, 500
   facades, 481-484
   messages, 571-572
   reflection, 481-484
   server-side, 477-493
   Windows event
      Event Viewer, 485-486
      handling entries, 491-492
      properties, 485-486
      retrieving entries, 490-491
      writing entries, 487-489
   Windows event logging, 484-492
Logging In and Retrieving Tasks at Startup listing (18-23), 661
Logging Messages listing (16-11), 572
Logging the Error Through a Facade listing (14-2), 480
Login function, 660
Login method, 440, 454, 463, 635, 657, 674
Login Method That Requires an Encrypted Password listing (13-22), 454
Login Method That Stores Client Key Information listing (13-26), 458
Login Web method, 441, 655
Login Web Method listing (13-11), 441
Login window, 660
Logout Web method, 635, 662
Logout XML Web service method, 640
LookupPricing method, 608-609
loosely coupled events, COM+, 284, 325
lower-level classes, socket-based connections, creating, 108


Next



Last Updated: January 29, 2003
Top of Page