Training
Certifications
Books
Special Offers
Community




 
Microsoft® .NET Remoting
Author Scott McLean, James Naftel, Kim Williams
Pages 336
Disk N/A
Level All Levels
Published 09/25/2002
ISBN 9780735617780
Price $44.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
access control
   in distributed applications, 12
   in .NET Remoting applications, 85
   programming methods for, 86-87
access levels, supporting different, 85
access-time sink, 232
AccessTime custom sink
   creating, 233-40
   projects in the sample code for, 234
AccessTimeServerChannelSink class
   adding to a configuration file, 239
   implementing, 234-37
AccessTimeServerChannelSinkProvider class, 237-39
AccessTimeSinkLib project, 234
Activate request message, 121
<activated> element
   in the client configuration file, 76
   in the JobClient configuration file, 93
   in the JobServer configuration file, 94
ActivatedClientTypeEntry
   instance, 60
   objects, 142
   type, 93
ActivateResponse message, 122
activation, 28
   example for proxy objects, 138-43
   intercepting, 139
   keys, 132
   method for Web Services, 80
   mode, 59
   model, 59-60
   type, 142
_ActivationType key in a construction call message, 132
Active Server Pages. See ASP code
actor header attribute in SOAP, 108
acyclic object graphs, 255
Add method
   of ListView, 67
   of SurrogateSelector, 250
AddClientProviderToChain method, calling in FileClientChannel, 209
add_Delegate method, 116
add_JobEvent request message, 111-15
add_JobEvent response message, 111, 116
AddJobToListView method, 67
AddNote method of the JobNotes class, 89
AddRef and Release pairs in C++, 14
address isolation of unmanaged code, 23
AddValue method of the SerializationInfo class, 244
administration of distributed applications, 9
anonymous access, configuring, 80
application configuration files, 16
application domain identifier, 113
application domains, 24, 34
ApplicationID method of the RemotingConfiguration class, 59
ApplicationName method of the Remoting.Configuration class, 59
applications
   distributing functional areas of, 9
   extending with client-activated objects, 88-98
   reasons for choosing to distribute, 8-9
   segregating unmanaged into separate processes, 23
architectures
   .NET Remoting, 23
   distributed, 2-5
   HTTP channel, 196-203
   lifetime management, 33
   peer-to-peer, 4-5
   pluggable, 15
   server-side channel, 45-47
   server-to-server, 98
   thick-client, 9
   thin-client, 9
   three-tier, 3-4
_Args key
   in a construction call message, 132
   in a method call message, 133
array element fixup, 257
array field tags, 263
array fixups, 260
array objects, reading from the stream, 286-87
arrays, 276
ASCII text, converting binary data into, 45
ASP code, 77
ASP.NET
   applications, 16
   configuring to use Windows authentication, 84
   XML Web Services, 110
assembly
   generating with the minimum calling syntax, 82
   for SOAPSuds, 82
assembly name
   field tag for, 262
   of a stand-in class, 101
AssemblyName property of the SerializationInfo class, 244
Assign button, 70
Async value for ServerProcessing, 201
AsyncHandler method of FileClientChannelSink, 215
asynchronous message processing, 160-61
asynchronous method calls
   handling with AsynProcessRequest, 214
   intercepting the response message for, 182
   processing, 203
asynchronous request, ordinary, 214
AsyncProcesRequest method in FileClientChannelSink method, 212
AsyncProcessMessage method
   defining, 181
   of the IMessageSink interface, 158, 160, 173
   making use of AsyncReplyHelperSink, 174
   using the ValidateParams method, 188
AsyncProcessReplyMessage method
   of ExceptionLoggingMessageSink, 174
   of TraceMessageSink, 182
AsyncProcessRequest method
   handling asynchronous method calls, 214
   of the IClientChannelSink interface, 203
AsyncProcessResponse method
   of the IClientChannelSink interface, 203
   of the IServerChannelSink interface, 201
AsyncReplyHelperSink class
   handling asynchronous message processing, 182
   instantiating an instance of, 174
   taking a delegate to a callback method, 160
attribute programming, 20
attributes. See context attributes; Serializable attribute; type attributes
authentication
   in distributed applications, 12
   provided by IIS, 19
authentication sink, 232

B
BarValidator class, 191
base class for writing custom formatters, 261
Basic authentication, 19
binary data, sending and receiving, 45
binary type representations in Visual Basic and script.ing languages, 17
binary wire format, 42
BinaryFormatter class, 242
BinaryFormatter type, 45
Binder property of the IFormatter interface, 266
bindTo property of the HttpChannel class, 198
blocked time periods, 236
blockStartTime parameter of AccessTimeServerChan.nel, 236
blockStopTime parameter of AccessTimeServerChan.nel, 236
<Body> element of SOAP, 109
boundaries, remoting, 23-24. See also .NET Remoting boundaries
browser-based systems, deployment costs of, 9
buttonAddNote_Click method, 91
Button.Click event handlers, 91
Button.Click events, 70-71
buttons in the JobClient application, 64

C
C#, creating the JobClient application in, 64
call context
   adding, 149
   message flow of, 154
callable proxy wrapper, 83
callbacks
   with local objects, 11
   with remote objects, 11
   specifying specific ports for, 74
CallContext object, 150
_CallContext key
   in a construction call message, 132
   in a method call message, 133
CallContextData class, 150
CallContextData object, 154
calling application, identifying in the add_JobEvent request message, 115
_CallSiteActivationAttributes key, 132
Cancel button, Click event handler for, 91
cancellation of leases, 36
ChangeType method of Convert class, 286
channel changer example for proxy objects, 143-47
<channel> element of a configuration file, 63
channel information
   in the add_JobEvent request message, 113
   encapsulated by the ObjRef type, 39
channel message sink, 199
channel properties, 197, 198. See also properties
channel provider chain
   creating, 208
   iterating with PopulateChannelData, 218
channel sink objects, 43-45
channel sink provider class, 297
channel sinks
   implementing custom, 232-40
   setting properties to specify explicit credentials, 85
channel transport, files as, 205
channel URIs, 196, 200
ChannelChangerProxy class, 144-46
ChannelData property, 200
   adding to FileServerChannel, 216
   of the IChannelReceiver interface, 199
   implementing, 220
   returning to null, 198
ChannelDataStore object, 200
ChannelFileData class, 228
ChannelFileTransportReader class, 230
ChannelFileTransportWriter class, 229
ChannelName property
   adding to FileClientChannel, 206
   adding to FileServerChannel, 216
   of the IChannel interface, 197
   implementing, 220
ChannelPriority property
   adding to FileClientChannel, 206
   adding to FileServerChannel, 216
   of the IChannel interface, 197
   implementing, 220
channels
   configuring, 61, 76
   constructing, 195-203
   creating custom, 195, 204-31
   priorities for, 197
   registering, 57, 61, 75
   selecting, 61
   terminology of, 196
   transporting messages across remoting boundaries, 42-43
   types of, 42, 195
ChannelServices class, 61
chatty vs. chunky trade-off, 10-11
child elements in the SOAP <Body> element, 109
classes
   creating to write files to disk, 229
   for writing serialization formatters, 253
Click events, 70-71
client-activated objects
   configuring .NET Remoting clients for objects, 92- 94
   configuring the server for, 94
   explicitly handling the activation of, 142
   extending an application with, 88-98
   implementing, 88
   intercepting the activation of, 137
   making method calls on, 209
   persisting between method calls, 88
client-activated types, 32
   GUID generated for, 38
   registering, 60
   searching for registered, 142
client-activated URL, 196, 210
client activation, 29, 32-33, 59
client and server, unified interface for both, 224
client application
   changing for new classes, 90-92
   developing using a local instance of JobServerImpl class, 65
   enabling, 64-77
   exposing instances of JobServerImpl, 57-59
client application domain, choosing, 64-71
client callbacks
   from behind firewalls, 79
   removing for Web Services, 80
client-centric interception work, 138
client channel sink chain, 293
client code, directly instantiating a custom proxy in, 144
client configuration file, 76-77
client connections, listening for, 57
client context, envoy sink chain executing in, 183
client context sink, creating a custom, 169
client context sink chain, 167, 169, 174-76
<client> element
   in the client configuration file, 76
   in the JobClient configuration file, 93
client formatter sinks, 288-92
client-managed reference counting, 14
client process, 3
client project in the AccessTime custom sink, 234
client/server, 3
client/server applications, 3, 50
client side, validating method arguments on, 185
client-side channel architecture, 43
client-side channel classes, 204
client-side channel sink chain, 45
client-side interaction with a channel, 199
clientConnectionLimit property, 198
ClientContextTerminatorSink class, 169
clients
   accessing remote object instances, 111-15
   authenticating in IIS, 87
   communicating with remote objects, 39-41
   configuring for .NET Remoting client-activated objects, 92-94
   dispatching request messages from, 220
   in distributed applications, 50
   guarding against unreachable, 54
   obtaining credentials, 84
   obtaining metadata from the server, 62
   preventing from making remote method calls, 161
   removing dependency on remote objects, 101-2
   returning the total number of connected, 150
   updating the status of jobs, 55
ClientSponsor class, 37
CLR. See common language runtime
code
   migrating to a centralized repository, 9
   organizing into units of functionality, 2
Code Access Security, 87
COM, 17
COM clients, supporting legacy, 21
COM objects, registry-based configuration, 16-17
COM Service Control Manager. See SCM
COM+ services
   accessing, 20
   hosting remote objects, 58
common language runtime, 17, 77
common type system (CTS), 17
CommonTransportKeys class, 202
compilable class format, generating with SOAPSuds, 83
Complete button, 70
Complete value for ServerProcessing, 201
component development, 15
components in distributed object technologies, 7
conditional role membership check, 86
configuration
   of distributed applications, 13
   of remoting applications, 16-17
configuration files
   adding sinks to, 239
   for client-activated objects, 93
   configuring a server host application for client-activated objects, 94
   configuring FileChannel via, 224
   creating channels via, 207
   for the JobClient application, 76-77
   for the JobServer application, 63
   naming, 63
   for remoting applications, 16-17
   for remoting behavior, 62
Configure method of the RemotingConfiguration class, 59
connected clients, 150
console applications
   as the host for the JobServer application, 58
   as the hosting environment, 57
construction call messages, 132
context attributes
   defining, 176
   functions of, 163
   implementing to provide a logging service, 164
context-bound types, 27-28, 162
   activation of, 162
   attributing, 162
context identifier in the add_JobEvent request mes.sage, 113
context parameter of GetObjectData, 244
context properties, 163. See also properties
   defining to implement IContributeEnvoySink, 189
   instantiating for a type in the context of the client, 176
Context property
   exposed by StreamingContext, 244
   of the IFormatter interface, 266
context sink chains, 167
context sinks, 179
context StreamingContext instance, 252
ContextBoundObject class, 162
   activation of a type derived from, 163
   applying ProxyAttribute objects deriving from, 138
   decorating with ProxyAttribute, 143
   deriving context-bound types from, 27-28
ContextLogAttribute attribute, 164
ContextLogProperty class
   defining, 164
   implementing logging functionality, 165
contexts, 24
   attributes of, 162
   creating to provide a common logging facility, 163
   establishing, 162
   properties of, 162
   remoting and, 165-67
   role within the .NET Remoting infrastructure, 161
contextwide client context sink chain, 167
contextwide server context sink chain, 166
Control type, 67
controls, threading constraints of, 67
ConvertListViewItemToJobInfo method, 69
ConvertMyMessagePropertiesToMethodCall method of MyMessage, 292
ConvertMyMessagePropertiesToMethodResponse method of MyMessage, 292
Create New Job form of the JobClient application, 71
CreateInstance method
   of Array, 287
   of ProxyAttribute, 138
CreateJob method
   of the IJobServer interface, 51
   implementing, 54
   reliance on NotifyClients as a helper method, 53
CreateJob request message, 119
CreateJob response message, 119
CreateMessageSink method
   building and returning the IMessageSink object, 202
   of the IChannelSender interface, 199
   implementing in FileClientChannel, 209-10
Create New Job button, 70
CreateObjRef method of MarshalByRefObject, 56
CreateServerChannelSinkChain method, 219
CreateSink method
   in AccessTimeServerChannelSinkProvider, 239
   of the IClientChannelSinkProvider interface, 203
   implementing, 206
   of the IServerChannelSinkProvider interface, 233
credentials, obtaining for clients, 84
cross-context channel, 165
cryptography in distributed applications, 12
.ctor, identifying a method as, 132
CTS (common type system), 17
CurrentLeaseTime property of the ILease interface, 35
custom channel sinks, 232-40
custom channels, 195, 204-31
custom client context sink, 169
custom dynamic context sinks, 168
custom envoy sink, 185
custom formatters, base class for writing, 261
custom proxies
   adding to the job assignment application, 143-47
   directly instantiating in client code, 144
   examples of, 137-55
   for the load-balancing example, 149
   plugging in, 138
custom serialization formatters, 253-88
custom server context sinks
   creating, 170
   inserting, 170
custom server object sink, 179
cycles in object graphs, 255

D
data, adding to a method call, 149
data-encoding scheme of SOAP, 105
data entry in a client application, 50
data tier of a three-tier architecture, 3
DateTime instances, mapping leases to, 36
DCOM
   application designs, 77
   compared to .NET Remoting, 1, 15
   expertise required by, 14
   object lifetime solution, 14
   object-oriented feature constraints, 17
   programmatic configuration supported by, 13
   security model offered by, 12
   server model, 57
   type system limitations, 17
Dcomcnfg tool, 13
debugger, writing output to, 181
declarative programming, 86
default context, 24
default credentials, 84
default lifetime on server-activated Singleton- configured types, 31
delayed fixups, 260, 284
<Delegate> element, 112
delegates
   invoking to wait for return messages, 214
   passing to new instances of the helper class, 161
   pointing to disconnected remote objects, 54
DelegateSerializationHolder class, 112
Demand method of the PrincipalPermission object, 86
DemonstrationObjects project, 234
dependency issues for metadata, 98-102
deployment of IIS-hosted remote objects, 81
derivation hierarchy in the add_JobEvent request mes.sage, 114
Description property of the FormAddNote class, 90
descriptions, extracting from .NET Remoting-based Web Services, 81
deserialization, 26, 241
   notification of completion, 248
   of an object graph, 248
   special constuctor needed for, 292
deserialization event, 257
Deserialize method
   of the IFormatter interface, 266, 279
   of MyFormatter, 280-88
dictionary, defined by the IMessage interface, 42
direct principal access technique, 87
direct proxy creation, 144
directory tree, copying to a target machine, 16
disconnected remote objects, pointing to, 54
discovery server
   publishing only a single well-known, 149
   supporting, 148
DispatchSink channel sink, 297
distributed application development
   benefits of, 8-9
   challenges of, 10-14
distributed application technologies, 1
distributed applications
   building with .NET Remoting, 49-103
   configuration of, 13
   definition of, 2
   developing, 10-14
   parts of, 50
   performance of, 10-11
   security of, 12
distributed architectures, 2-5
distributed calls, avoiding wherever possible, 10-11
Distributed Computing Environment (DCE), 6
distributed job assignment application. See job assign.ment application
distributed object technologies, 7-8
distributed objects, 7-8
distributed technologies, 6-7
document/literal SOAP messaging, 110
document messaging, pairing with literal serialization, 110
DoFixups method
   calling, 260, 280
   of the ObjectManager class, 257
dynamic context sinks, 167-68
dynamic message sink class, 168
dynamic property class, 168

E
encoded serialization, pairing RPC with, 110
encodingStyle attribute, 108
encryption sink, 232
enterprise services
   associating distributed object technologies with, 8, 20-21
   COM+ services hosting remote objects, 58
entry point for the JobServer application, 58
<Envelope> element of SOAP, 108
envoy sink, 185
envoy sink chain, 167, 183, 187
EnvoyInfo property, 186
EnvoyTerminatorSink class, 185
EnvoyTerminatorSink message sink instance, 185
error handling in COM, 17
errors, watching for specific, in production code, 54
EventArgs class, 52
events, raising manually, 54
exception logging context, 171-77
exception propagation, 18
Exception property of IMethodReturnMessage, 147
ExceptionLoggingContextAttribute class, 177
ExceptionLoggingMessageSink class
   defining, 172
   logging output produced by, 177
ExceptionLoggingProperty class, 174-76
exceptions
   during message processing, 160
   not supported by COM, 17
   throwing for role-based security, 86
ExecutionEngine exception, 286
explicit credentials, 85
extensions to remoting, 136

F
<Fault> element of SOAP, 110
fault tolerance, 8
field tags for a custom serialization format, 262
FieldNames class, 264
file-based configuration, 16-17
file channel as an example of a custom channel, 204
FileChannel class, 224
FileChannel custom channel
   constructing server-side classes for, 216-24
   creating, 205-31
   projects in the sample code, 206
FileChannel transport class, 228-31
FileChannelHelper class, 226
FileClientChannel class, 206-10
FileClientChannel object, 224
FileClientChannelSink class, 211-16
FileClientChannelSinkProvider class, 211
files
   as channel transport, 205
   creating a class to write to disk, 229
FileServerChannel class, 216-20
FileServerChannel object, 224
FileServerChannelSink class, 219, 220-24
firewalls
   Internet and, 12-13
   passing through, 18
fixups, recording, 258, 259, 284
Form1 class
   adding a new member variable and button, 91
   interacting with the JobServerImpl class instance, 65
   making into a sponsor, 97
Form1 constructor, 65
Form1 form, 64
FormAddNote form, 90
formatter, providing a default in FileClientChannel, 208
Formatter class, 253, 261
formatter element in a configuration file, 240
formatter providers
   for HttpChannel, 199
   selecting for channels, 209
formatter sinks, 44
   creating, 288-97
   installing into client channel sink chains, 293
   types of, 45, 288
FormatterServices class, 253
Form.Close event handler, 66
FormCreateJob class, 71
FormCreateJob form
   displaying, 71
   implementing, 71
Form.Load event handler, 91
Freeze method
   of the IContextAttribute interface, 162
   of the IContextProperty interface, 163
FullTypeName property of the SerializationInfo class, 244
fully qualified type names in field tags, 262

G
generic object array, 286
GetChannel method of the ChannelServices class, 61
GetChannelData method
   extracting information from IChannelDataStore, 219
   of the IServerChannelSinkProvider interface, 233
GetClientContextSink method of IContribute.ServerContextSink, 175
GetData method, removing CallContext, 150
GetDynamicSink method of IContributeDynamic.Sink, 168
GetEnumerator method, 67
GetEnvoyChainForProxy method of Remoting.Services, 185
GetID method of ObjectIDGenerator, 256
GetIJobServer method
   adding to the Form1 class, 65
   configuring the JobClient application, 74
GetJobs method
   of the IJobServer interface, 51
   implementation of, 53
   polling for data, 80
GetJobs request message, 117
GetJobs response message, 117
GetLeastLoadedServer, 154
GetLifetimeService method, 56
GetMessageSinks method, 146
GetNext method of the Formatter class, 261, 268
GetNotes method of the JobNotes class, 89
GetObject method
   of Activator, 102
   of the ObjectManager class, 257
GetObjectData method
   of FormatterServices, 254
   implementing, 245
   of the ISerializable interface, 243, 260
   of ISerializationSurrogate, 249
   of TimeStamperSurrogate, 251
GetPropertiesForNewContext method of the IContex.tAttribute interface, 162, 163, 164
GetRegisteredActivatedClientTypes method of the RemotingConfiguration class, 60, 142
GetRegisteredActivatedServiceTypes method of the RemotingConfiguration class, 60
GetRegisteredWellKnownClientTypes method of the RemotingConfiguration class, 60
GetRegisteredWellKnownServiceTypes method of the RemotingConfiguration class, 60
GetRequestStream method
   calling on an IServerChannelSinkStack object, 297
   of the IClientChannelSink interface, 203
GetResponseStream method of the IServer.ChannelSink interface, 201
GetSelectedJob method, 69
GetSerializableMembers method of FormatterServices, 254
GetServerContextSink method of IContribute.ServerContextSink, 175
GetType method of Type, 285
GetUninitialized method of FormatterServices, 259
GetUninitializedObject method of FormatterServices, 254, 286
GetUrlForCAO method, 142
GetUrlsForObject method of the ChannelServices class, 61
GetUrlsForUri method
   adding to FileServerChannel, 216
   of the IChannelReceiver interface, 199, 200
   implementing, 220
GetValue method of the SerializationInfo class, 244
Gnutella as a quasi-peer-to-peer application, 5
groups, 85
GUI applications as .NET Remoting hosts, 57
GUID (Globally Unique Identifier) for client- activated types, 38

H
handler methods for Button.Click events, 70-71
Hashtable member, 36
header entries in SOAP, 108
helper class, 205, 226
host application domain, 57-59
hosting environment for quick tests and prototypes, 57
hosts, security with other than IIS, 20
HTML interface, hard-coding, 77
HTTP, client connection over, 13
HTTP-based RPC, 107
HTTP channel
   adding the useDefaultCredentials attribute, 84
   architecture of, 196-203
   registering within a custom proxy, 146
HTTP header for a SOAP message, 107
HTTP header portion of a request message, 111
HTTP POST request message, defining a SOAP mes.sage, 111
HTTP protocol, transporting a serialized message stream, 43
HTTP Uniform Resource Identifier (URI), 107
HttpChannel as the default channel in IIS, 81
HttpChannel class, 196-99
   constructors, 197
   creating an instance of, 61, 74
   properties available for, 197
   registering multiple instances of, 198
HttpChannel type, 43
HttpClientChannel class, 202
HttpClientTransportSink class, 202, 203
HttpClientTransportSinkProvider class, 202
https, specifying as the protocol, 20
HttpServerChannel class, 199
HttpServerTransportSink class, 201-2

I
IChannel interface
   implementing, 196
   members of, 197
IChannelDataStore member
   extracting information from, 219
   returning, 220
IChannelDataStore object, 210
IChannelReceiver interface
   creating members of, 219
   implementing, 196, 200, 216
   members of, 199
IChannelSender interface, 199
   deriving FileClientChannel from, 206
   implementing, 196
IClientChannelSink interface
   deriving FileClientChannelSink from, 212
   members of, 203
IClientChannelSinkProvider
   chain, 209
   interface, 202, 211
   object, 207
IClientFormatterSink interface, 288
IConstructionCallMessage interface, 164
IConstructionCallMessage messages, 169, 170
IConstructionCallMessage type, 134
   passing to the Activator's Activate method, 143
   sending to the proxy's Invoke method, 142
IConstructionReturnMessage message, 169, 170
IConstructionReturnMessage type, 135, 143
IContextAttribute interface, 162
IContextProperty interface, 163
IContributeClientContextSink interface, 169
IContributeEnvoySink interface, 185, 189
IContributeObjectSink interface
   defining a context property implementing, 179
   implementing, 182
IContributeServerContextSink interface, 170
IDeserializationCallback interface, 248
IDictionary interface
   defining an interface for collections of key-and-value pairs, 131
   entries for construction call messages, 132
   entries for method call messages, 133
   Properties property of, 131
IDictionary object
   customizing a channel with, 207
   in HttpServerChannel, 199
IDictionary parameter, 197
IDictionary type, 41
IDiscoveryServer interface, 148
IDL (Interface Definition Language), 7
   in C++ COM systems, 17
   compared to WSDL, 78
IDynamicMessageSink interface, 167
IFormatter interface
   implementing, 266-67
   members defined by, 266
IIS (Internet Information Services)
   as a .NET Remoting host, 58
   configuring security for .NET Remoting-based Web Services, 83
   configuring to use a different port, 81
   as the hosting environment to access role-based security, 87
   hosting remote objects in, 80
   hosting the remote server inside, 18
   security options provided by, 18-20
IIS-hosted endpoint, running SOAPSuds against, 82
IIS NTLM, 19, 84-85
IJobServer interface, 51, 101-2
IJobServer.GetJobs method, 117
ILease interface, 34
   default values for, 95
   properties defined by, 35
ILease type, 56
ILogicalThreadAffinative interface, 150
IMessage implementing types, 297
IMessage interface, 41
   defining an IDictionary property, 131
   purposes of interfaces derived from, 133
IMessageSink interface
   defining a class implementing, 158-59
   members of, 158
IMessageSink object
   building, 202
   returning a reference to, 209
IMethodCallMessage type, 134
IMethodMessage type, 134
IMethodReturnMessage type, 134, 135
imperative programming, 86
imperative role-based security, 86
implementation inheritance
   in COM, 17
   supported by .NET Remoting, 17
incoming messages
   listening for, 199, 200
   watching a directory for, 219
incoming method calls, 170
indefinite lifetime for well-known objects, 95
indefinite object instance, 56
infinite recursion, 176
InfiniteWait method of WaitForFile, 231
info output parameter, 282
info parameter of GetObjectData, 244, 245
info SerializationInfo instance, 251
Init method, called by FileServerChannel constructors, 218
InitializeLifetimeService method
   of MarshalByRefObject, 56
   of the MarshalByRefObject class, 95
   overriding, 96
InitializeLifetimeServices method, 34-35
InitialLeaseTime property of the ILease interface, 35, 95
inline serialization of instances, 273
<insert obscure protocol> channel, 204
InspectReturnMessageAndLogException method, 173
Integrated Windows Authentication. See Windows Integrated authentication
interception behavior, 168
interception proxy, 140
Interface Definition Language. See IDL
interfaces
   implemented by a marshaled type, 114
   remoting, 101-2
Internet, firewalls and, 12-13
Internet Information Services. See IIS
interoperability
   of .NET Remoting, 18
   configuring .NET Remoting applications for, 15
   with legacy technologies, 2
   maximizing, 18
   as mutually exclusive with performance, 10
   wire formats and, 12
interprocess communication mechanism. See IPC mechanism
intranet scenarios, configuring Web Services for, 84-85
Invoke method
   of the Control type, 67
   of the interception proxy, 140
   of ListView, 67
   overriding, 137
   of RealProxy, 162
IP address, specifying the use of, 198
IParamValidator interface, 186
IPC mechanism, 23
IPrincipal interface, 87
IsActivationAllowed method of the Remoting.Configuration class, 60
IsBlockTimePeriod private method, 237
IsContextOK method of the IContextAttribute inter.face, 162, 163
ISerializable interface
   defining a class implementing, 245
   implementing, 243
   special constructor as an implicit requirement of implementing, 245
ISerializationSurrogate interface, 249
IServerChannelSink interface
   implemented by FileServerChannelSink, 220
   implementing, 293
   public members of, 201
IServerChannelSinkProvider interface
   implemented by AccessTimeServerChannel.SinkProvider, 237
   implementing, 233
   members of, 233
IsInRole method of the IPrincipal interface, 87
IsMarkedSerializable method, 271
IsNewContextOK method
   of the IContextAttribute interface, 162
   of the IContextProperty interface, 163
IsOneWay method of RemotingServices, 215
IsOneWayMethod private method of File.ClientChannelSink, 215
ISponsor interface, 36, 37, 97
IsRemotelyActivatedClientType method of the Remot.ingConfiguration class, 60
ISurrogateSelector interface
   implementing, 250
   setting SurrogateSelector property to any object implementing, 249
IsWellKnownClientType method of the RemotingConfiguration class, 60
ITransportHeaders object
   contained in ChannelFileData, 228
   in a request message, 202

J
job assignment application, 50, 143-47
JobClient application
   calling the UpdateJobState method, 120
   changing for the JobNotes class, 90-92
   changing to obtain credentials, 84
   configuration file for, 76-77
   configuring for .NET Remoting, 73-77
   consuming the JobNotes type as a client- activated object, 92-94
   creating jobs in, 72
   developing, 65
   directly instantiating a custom proxy in, 144
   extending with client-activated objects, 88-98
   implementing, 63-77
   instantiating a proxy to the JobServerImpl type, 111
   subscribing to the JobEvent event, 111-15
JobClient.Form1 instance, 124
JobEvent, 66
   handlers, 51
   member, 99
JobEventArgs class, 51
JobEventRepeater class, 98-100
JobInfo structure, 51, 56
JobLib assembly, 102
JobNotes
   activation request message, 121
   activation response message, 122
   class, 88-89, 95, 96
   instances, 96
   type, 92-94
jobs
   allowing clients to update the status of, 55
   allowing users to create new, 54
   creating, 72, 119
   returning all currently defined, 117
   uniquely identifying in the JobServer application, 53
JobServer application
   adding .NET Remoting to, 55-63
   configuration file for, 63
   configuring to host JobNotes class instances, 94
   console application as the host for, 58
   hosting an instance of JobServerImpl as a remote object, 52
   implementing, 50-63
   logic of, 50-55
   Main function of, 62
   modifying to configure the JobNotes type, 94
   modifying to register both a TCP channel and an HTTP channel, 144
   removing dependency on the JobClient metadata, 98-100
   running redundant on different machines, 147
JobServer Web Service
   configuring to use IIS NTLM, 84-85
   generating a metadata-only assembly, 82
   testing, 79-81
JobServerImpl class, 50, 52-55
   defining a stand-in class for, 100
   deriving from System.MarshalByRefObject, 56
   exposing as a Web Service, 77-78
   exposing instances of, to the client application, 57-59
   preparing for .NET Remoting, 56
JobServerImpl instance, 72
JobServerImpl object, 144
JobServerImpl type member, 65
JobServerLib assemblies, 101
JobServerLib.dll assembly
   referencing in the JobClient application, 64
   running SOAPSuds directly against, 82
JobWebService application. See JobServer Web Service

L
lease-based lifetime management system, 33
lease-based lifetimes, 20
lease manager, 34, 35-36
leases, 34-35
   adding sponsors to, 95-98
   cancellation of, 36
   initializing, 96
legacy systems, interoperability with, 18
legacy technologies, interoperability with, 1
legacy wire formats, 13
lifetime management, 20
lifetime management architecture, 33
lifetime management systems, 31, 33
lifetime of remote objects, 33
lifetime requirements for the JobNotes class, 95
Listen method in StartListening, 200
ListenAndProcessMessage method, 219, 222-24
listening port, 75, 198
listening thread, 219
ListViewItem, 68
ListView control, 64
ListView.Invoke method, 67
ListView.Items.Add method, 67
literal serialization, 110
load balancing across multiple JobServer applications, 147
load-balancing algorithm, 154
load-balancing example for proxy objects, 147-55
LoadBalancingManager class, 154
LoadBalancingProxy class, 151-54
LoadBalancingServer, adding redundant server URLs to, 148
local objects, 11
local procedure calls, making RPC appear as, 6
location independence of remote objects, 14
logging facility, 163
logging functionality
   implemented by ContextLogProperty, 165
   providing as a tracing service, 179
logging sink, 232
logical processes, application domains as, 24

M
machine name, overriding, 198
machine.config files, 16
machineName property of the HttpChannel class, 198
main channel class, 205
main form of the JobClient application, 64
Main function of the JobServer application, 62
managed code, 24
marshal-by-reference object instances, serialization of, 252
marshal-by-reference objects, marshaling references to, 37-38
marshal-by-reference types, 26-27, 38
marshal-by-value types, 25-26, 29
MarshalByRefObject class
   deriving marshal-by-reference types from, 27
   deriving the JobServerImpl class from, 56
   public methods of, 56
MarshalByRefObject type, 20, 182
marshaled type, interfaces implemented by, 114
marshaling, 6, 38
master/slave tiers, 4
m_count field tag, 263, 264
member count, writing to the stream, 271
member fixups, 260
member name, field tag for, 263
member value, interpreting as a Type, 285
MemberCount property of the SerializationInfo class, 244
MemberInfo array, 271
MemberInfo instances
   obtaining an array of, 254, 283
   recording fixups using, 284
members, reading from the stream, 283
memory stream, listing in the SOAP format, 242
MemoryStream instance, serializing to in a SOAP for.mat, 242
message exchange between the JobClient and Job.Server applications, 110-28
message files, reading, 230
message flows in SOAP, 110-28
message objects
   channels transporting, 42-43
   encapsulating information about message calls, 41
   serializing to a stream, 45
message parameters, 186-93
message processing
   asynchronous, 160-61
   synchronous, 159
message properties, enumerating over, 181
message sink chains, 157, 167
message sink class, 171
message sinks, 157
   chains isolating ContextBoundObject instances, 165
   creating and storing for HTTP channels, 147
   creating and using default, 146
   defining to validate method call parameters, 186
   implementing to perform message tracing functionality, 179-83
   referencing the next, 201
   uses of, 137
Message type, deserialization not supported for, 292
message types, 133-35
MessageData struct, 136
messages, 131. See also SOAP messages
   describing method calls, 132
   dispatching to the server, 203
   forming the basis of remoting, 41-42
   listening for incoming, 199, 200
   logging with ContextLogProperty, 165
   originating from method calls, 134
   returning to the client, 134
   server-side functionality for receiving, 199
   wrapping in a MethodReturnMessageWrapper instance, 173
MessageSurrogate class, 252
metadata, 17
   dependency issues, 98-102
   encapsulated by the ObjRef type, 38
   obtaining from the server, 62, 72-73
metadata-only assembly, generating with SOAPSuds, 82
method-call-as-message concept, modeling, 41
method call messages, 132, 178
method calls
   allowing or denying with ProcessMessage, 236
   blocking on remote objects, 233
   client-side optimization of, 185
   dispatching of, 211
   encapsulating information about, 41
   entering contexts as .NET Remoting messages, 166
   exiting as .NET Remoting messages, 167
   implementing behavior applying to all incoming, 170
   intercepting and passing to the RealProxy, 136
   messages describing, 132
   in a nonremote object-oriented environment, 41
   sending data with many varying, 149
   tracing all made on an object, 179-83
method name element of the SOAP <Body> element, 109
method names, hashing, 187
method parameters, validating, 186-93
MethodCall class, 292
_MethodName key
   in a construction call message, 132
   in a method call message, 133
MethodReturnMessageWrapper instance, 173
_MethodSignature key
   in a construction call message, 132
   in a method call message, 133
Microsoft Management Console (MMC) snap-in, 17
middle tier of a three-tier architecture, 3
modular programming, 2
modules, plugging in new, 16
mscorlib.dll assembly, 74
msg parameter of SyncProcessMessage, 291
mustUnderstand header attribute in SOAP, 108
MyClientFormatterSink class, 288-92
MyFormatter class, 266
MyFormatterClientSinkProvider class, 293
MyFormatterServerSinkProvider class, 297
MyJobEventHandler method
   declaring with private (nonpublic) access, 66
   implementing, 66
MyMessage class, 292
MyServerFormatterSink class, 294-97

N
n-tier design, 3-4
Name property
   of the HttpChannel class, 198
   of the IContextProperty interface, 163
named-pipe channel, 204
namespace identifiers in a SOAP <Envelope> element, 108
Napster as a quasi-peer-to-peer application, 5
NAT (Network Address Translation) firewalls, clients behind, 79
nested arrays, preventing, 276
.NET applications, logical subdivisions for, 24
.NET Code Access Security, 87
.NET Framework
   channels provided by, 61
   serialization mechanism provided by, 242
.NET Framework CTS, 17
.NET Framework Microsoft Management Console snap-in, 17
.NET remote objects, 16, 21
.NET Remoting
   adding to the JobServer application, 55-63
   advantages of, 1
   architecture, 23
   building distributed applications with, 49-103
   Code Access Security not available with, 87
   configuring remoting applications, 16-17
   configuring the JobClient application for, 73-77
   context architecture employed by, 162
   design of, 1
   extending and customizing remoting, 15
   interoperability of, 18
   isolating an object instance within a context, 165
   lifetime management architecture of, 33
   performance compared to DCOM performance, 15
   performance versus interoperability, 15
   proxy layer, 135
   role-based security with, 85-87
   security model for, 18-20
   surrogate classes used by, 252
   unobtrusive nature of, 50, 64
.NET Remoting boundaries, 24
   channels transporting messages across, 42-43
   crossing, 24-28, 37-47
   forming, 24
.NET Remoting client, authenticating, 87
.NET Remoting hosts, 57, 58
.NET-to-COM interoperability layer, 2
Network Address Translation (NAT) firewalls, clients behind, 79
network interface card, specifying the IP address of, 198
networks, unreliability of, 14
Next property
   of the IClientChannelSinkProvider interface, 203
   of the IServerChannelSinkProvider interface, 233
   setting the next provider member, 239
NextChannelSink property
   of the IClientChannelSink interface, 203
   of the IServerChannelSink interface, 201
_nextSink member variable in HttpServer.TransportSink, 201
NextSink property of the IMessageSink interface, 158
non-IConstructorCallMessage messages, 169, 170
non-lease-based lifetime management schemes, 33
non-.NET clients, interoperability with, 18
nonremotable types, 25
nonremote object-oriented environment, making method calls in, 41
NonSerializedAttribute attribute, 242
nonwrapped metadata assembly, generating in SOAP.Suds, 83
nonwrapped proxy, generating in SOAPSuds, 83
notes
   adding for selected jobs, 88
   adding to a job, 92
   allowing to persist, 96
NotifyClients method, 53-54
NotImplementedException exception, 291
NotSupportedException exception, 291
NTLM, 19, 84-85
NTLM authentication. See Windows Integrated authen.tication
null, returning, 56, 95
null member value, 286

O
object activation, 28-33
object graphs
   containing cycles, 255
   deserializing, 248, 266, 279
   object members in, 248
   reconstructing, 258-60
   resulting from instantiation of a class, 246
   root node in, 255
   serializing, 242, 246, 266, 267
   traversing, 255-57
object identifier, assigning to each serialized object, 243
object instance, 257, 258
object lifetime management, 14, 20
object members in a serialized object graph, 248
object model of a distributed object technology, 17
object reference, writing to the stream, 276
object serialization, 241, 243-46
object-specific server object sink chain, 166
object URI, 196, 220
ObjectIDGenerator class, 253
   identifying objects, 256
   object identifier assigned by, 261
   obtaining an identifier for the object instance from, 257
ObjectManager class, 253
   aiding in deserialization, 257-60
   reconstructing the object graph, 280
   significant public members of, 257
objects
   applying to distributed scenarios, 7-8
   categories of, 25
   identifying, 256
   initializing the members of, 259
   putting into CallContext, 150
   scheduling for serialization, 257
   using local, 11
   using remote, 11
ObjRef instances
   returning, 56
   serialization of, 252
   serialized, 113
ObjRef type
   information encapsulated by, 38-39
   marshaling remote object references via, 38-39
   metadata contained by, 38
ObjRefSurrogate class, 252
OK button, Click event handler for, 91
OnDeserializationCallback method of IDeserialization.Callback, 248
OneWay asynchronous request, 214
OneWay value for ServerProcessing, 201
OneWayAttribute, marking a OneWay method, 214
open standards, support of, 18
ordinary asynchronous request, 214
output format for SOAPSuds descriptions, 81-83

P
parameters
   passing from one context to another, 6
   passing invalid to a method, 161
ParameterValidatorContextAttribute class, 190-91
ParameterValidatorProperty class, 190
ParamValidatorMessageSink class, 186
parse functionality, moving, 207
Parse method
   adding to FileClientChannel, 206
   adding to FileServerChannel, 216
   calling to extract the channel URI and the object URI, 210
   creating, 226
   of the IChannel interface, 197
   implementing, 220
ParseHourAndMinute private method in Access.TimeServerChannel, 236
ParseMemberValue method of FieldName, 281
ParseXXX methods, defined in FieldNames, 266
Passport authentication, 19
PassThruMessageSink class, 158-59, 161
Peek method of StreamReader, 280
peer-to-peer architecture, 4-5
per-object sink chains, 178
performance
   configuring applications for optimal, 15
   of distributed applications, 10-11
   maximizing, 18
   as mutually exclusive with interoperability, 10
pinging
   in DCOM's solution to object lifetime, 14
   in non-lease-based lifetime management schemes, 33
pluggable architecture, 15
polling for data with Windows Forms Timer control, 80
polling interval for the lease manager, 36
Pop method of ServerChainSinkStack, 224
PopulateChannelData method, 218
PopulateObjectMembers method of Formatter.Services, 254, 260, 285
port property of the HttpChannel class, 198
ports. See also listening port
   selecting, 61
   specifying for callbacks, 74
presentation layer, 3. See also user interface
Principal object of the current thread, 86
PrincipalPermission object, 86
PrincipalPermissionAttribute class, 86
priorities for channels, 197, 198
priority property of the HttpChannel class, 198
privacy, provided by IIS, 20
PrivateInvoke method of the RealProxy, 136
process asynchronous message, 201
process identifier information, 113
processes, uniquely identifying, 60
ProcessId method of the RemotingConfiguration class, 60
ProcessMessage method
   allowing or denying method calls, 236
   in FileClientChannelSink method, 212
   handling synchronous method calls, 213
   of the IClientChannelSink interface, 203
   of the IServerChannelSink interface, 201, 296
   of MyServerFormatterSink, 296
   returning a ServerProcessing object, 224
ProcessMessageFinish method of IDynamic.MessageSink, 168
ProcessMessageStart method of IDynamic.MessageSink, 168
producer/consumer tiers, 4
production code, watching for specific errors in, 54
programmatic configuration
   of client-activated objects, 93, 94
   of the JobClient application, 74-76
   of remoting applications, 16
   supported by DCOM, 13
properties. See also channel properties; context proper.ties
   of contexts, 162
   with local objects, 11
   mapping in a return message, 173
   with remote objects, 11
Properties dictionary of a message object, 41-42
Properties property of IDictionary, 131
proprietary systems, interoperability with, 18
proprietary wire formats, 12
protected virtual method, WriteMember method as a, 272
provider chain. See channel provider chain
provider element in a configuration file, 239
proxies. See proxy objects
proxy classes, enabling .NET Framework to generate, 62
proxy computer name, 198
proxy layer, 135
proxy objects, 135
   activation example, 138-43
   channel changer example, 143-47
   clients communicating with remote, 39-41
   custom examples of, 137-55
   drawbacks to direct creation of, 144
   interacting with remote objects, 37
   intercepting the activation of objects, 138
   load-balancing example, 147-55
   messages encountered by, 131-35
   techniques for creating, 137
   types of, 39
proxy port, 198
ProxyAttribute class
   applying to a ContextBoundObject, 143
   defining, 139-40
   introducing, 138
proxyName property of the HttpChannel class, 198
proxyPort property of the HttpChannel class, 198
Push method of ServerChainSinkStack, 223

Q
queue of objects, waiting for serialization, 261

R
RaiseDeserializationEvent method of the ObjectMan.ager class, 257
Read method of ChannelFileTransportReader, 230
ReadArray method
   called by ReadObject, 281
   listing defining, 286
ReadArrayElement method, 287
ReadMember method, 283
ReadMemberValue method, 284-86, 287
ReadObject method, 280
ReadObjectMembers method, 281, 292
ReadSerializableMembers method
   calling, 282
   obtaining an array of MemberInfo instances, 283
ReadSerializationInfo method, 282
real proxy, 39, 41
RealProxy class, 136, 137
RealProxy type, 41
RecordArrayElementFixup method of the ObjectMan.ager class, 257, 287
RecordDelayedFixup method of the ObjectManager class, 258, 260, 284
RecordFixup method of the ObjectManager class, 258
redundancy of fault-tolerant systems, 8
redundant server proxies, 150
redundant servers
   returning the configured list of, 149
   supporting the discovery of, 148
reference counting
   in DCOM's solution to object lifetime, 14
   in non-lease-based lifetime management schemes, 33
reference-counting model of DCOM, 20
reference identifier, serializing, 246
reflection, 136
Regasm tool, 21
Register method
   of the ClientSponsor class, 37
   of the ILease interface, 36, 97
RegisterActivatedClientType method of the Remoting.Configuration class, 60, 93
RegisterActivatedServiceType method of the Remot.ingConfiguration class, 60, 94
RegisterChannel method of the ChannelServices class, 61, 75
RegisterDynamicProperty method, 168
registered client-activated types, 142
RegisteredChannels property of the ChannelServices class, 61
RegisterObject method of the ObjectManager class, 258
RegisterWellKnownClientType method of the Remot.ingConfiguration class, 60, 75
RegisterWellKnownServiceType method of the Remot.ingConfiguration class, 60
registry, dependence of DCOM configuration on, 13
registry-based configuration, compared to Xcopy deployment, 16-17
Release calls in C++, 14
remotable types, 25-28
remote instances, 73
remote method calls, 147
remote object references
   marshaling via an ObjRef type, 37-39
   registering, 37
remote objects
   blocking method calls on, 233
   in COM+ services, 21
   communicating with remote objects via proxies, 39-41
   delegates pointing to disconnected, 54
   location independence of, 14
   making to appear as local, 7
   managing the lifetime of, 33
   tasks performed using, 11
remote procedure calls. See RPC
remote types, metadata describing, 62
RemoteActivation.rem URI, 142
remoteChannelData parameter of CreateMessageSink, 209, 210
RemoteObject, supporting a discovery server, 148
remoting
   configuring the server for, 62-63
   contexts and, 165-67
   effects of Code Access Security on, 87
   enabling client applications for, 64-77
   extending and customizing, 15
   extensions to, 136
   the IJobServer interface, 101-2
   messages forming the basis of, 41-42
   running all pieces under the common language runt.ime, 77
remoting applications, 16-17
remoting boundaries, 23-24
remoting message types, 133-35
remoting security, using hosts other than IIS, 20
remoting-specific code for the JobClient application, 73-77
remoting system, implementing a secure, 18
RemotingConfiguration class
   client-specific configuration methods exposed by, 74-76
   methods for registering remote objects, 32
   public members of, 59-60
   RegisterActivatedClientType method, 93
   RegisterActivatedServiceType method, 94
   registering a type in Singleton mode, 29
Remoting.dll assembly, 74
RemotingProxy class, 41, 136
RemotingSurrogate class, 252
RemotingSurrogateSelector class, 291
RemotingSurrogateSelector surrogate selector, 252
Remove method of SurrogateSelector, 250
remove_JobEvent request message, 124-28
remove_JobEvent response message, 128
Renewal method of the ISponsor interface, 97
RenewalTime property of the ClientSponsor class, 37
RenewOnCallTime property of the ILease interface, 35, 95
repeater, defining for the JobEvent, 99
RepeatEventHandler method of the JobEventRepeater class, 99
replySink method of AsyncProcessMessage, 160
request messages
   dispatching from the client, 220
   key items in, 202
   processing, 201
   sending to the server, 202
request/response pattern in RPC-based SOAP, 107
request URI, contained in ChannelFileData, 228
requests, handled by AsyncProcessRequest, 214
response message, inspecting for asynchronous calls, 174
return messages, invoking delegates to wait for, 214
ReturnMessage type, 46, 135
roid parameter of ReadmemberValue, 284
roid variable, checking the value of, 287
role-based security, 85-87
root node in an object graph, 255
root object
   obtaining an identifier for, 268
   returning for an object graph, 279
RPC (remote procedure calls), 6-7, 110
RPC-based SOAP, 107
RPC endpoint, 107
RuntimeType class, 274

S
scalability of distributed applications, 9
scalable high-performance applications, 10-11
Schedule method of the Formatter class, 261, 268, 276
scheduling, 257
schema file, outputting in SOAPSuds, 82
SCM (COM Service Control Manager), 57
Section 5 encoding, 109
Secure Sockets Layer (SSL), 20
security
   adding to a Web Service, 83-85
   of distributed applications, 12
   intentions, 86
   model, 18-20
SecurityAction enumeration, 86
SecurityException exception, 86
serializable, making an object, 56
Serializable attribute, 242-43
   attributing a message sink in an envoy sink chain, 187
   in ChannelFileData, 229
   declaring validator classes with, 193
   types declared using, 25
Serializable-attributed type, 25
Serializable mask, 271
serializable members
   obtaining, 253, 254
   obtaining values for, 254
[serializable] pseudocustom attribute, 56
SerializableAttribute custom attribute, 242
serialization, 25-26, 241
   of an object graph, 246
   required for crossing .NET Remoting boundaries, 42
   scheduling objects for, 257
   surrogates and surrogate selectors, 249-52
serialization format, 262-66
serialization formatters, writing custom, 253-88
serialization mechanism for object implementation, 242
serialization surrogate, 270
"Serialization will not deserialize delegates to nonpublic methods" error message, 66
SerializationBinder instance, 266
SerializationException exception, 66, 254, 282
SerializationInfo
   class, 244
   instance, 251
   members, 260
Serialize method of the IFormatter interface, 266, 267- 77
serialized instance of the DelegateSerializationHolder class, 112
serialized object graph, 263
serialized object instances, 248
serialized object members, 281
serialized ObjRef instance, 113
server, 3. See also redundant servers
   configuring for client-activated objects, 94
   configuring for remoting, 62-63
   determining if a ProxyAttribute is running on, 140
   dispatching messages to, 203
   in a distributed application, 50
   obtaining metadata from, 72-73
   sending request messages to, 202
server-activated objects
   handling the construction message for, 142
   intercepting the activation of, 138
   making method calls on, 209
server-activated remote object
   in SingleCall mode, 31
   in Singleton mode, 30
server-activated types. See also well-known object types
   configuring JobServerImpl types as, 60
   registering, 60
   URI for, 38
server-activated URL, 196, 210
server activation, 28
   modes of, 29-31
   selecting, 59
server and client, unified interface for both, 224
server application, tasks performed by, 50
server channel sink chain, 297
server context sink, 170
server context sink chain, 167, 170, 174-76
server formatter sinks, 293-97
server lifetimes, responsibility for, 14
server object sink, 179
server object sink chain, 167, 178
server project for the AccessTime custom sink, 234
server-side certificates, 20
server-side channel architecture, 45-47
server-side channel classes, 205
server-side classes, 216-24
server-side functionality for receiving messages, 199
server-side sink chain, 219
server-to-server architecture, 98
ServerChainSinkStack class, 223
ServerContextTerminatorSink class, 170
ServerObjectTerminatorSink class, 178
ServerProcessing object, 224
ServerProcessing type, 201
serverProviders element in a configuration file, 239
<service> element of a configuration file, 63
ServicedComponent, 20
SetData method, 150
SetObjectData method
   of ISerializationSurrogate, 249, 260
   of TimeStamperSurrogate, 252
SetupClientChannel method in FileClientChannel, 209
Simple Object Access Protocol. See SOAP
SimpleInterceptionProxy, 141-42
SingleCall mode, 31, 59
Singleton activation mode, 80
Singleton instance, 29
Singleton mode, 29-31
   selecting, 59
   server-activated remote object in, 30
Singleton-mode-configured type, 29-31
sink chains, 43
sink stack, creating, 223
sink stack object, passing, 215
sinks. See also message sinks
   adding to configuration files, 239
   associating some state with, 223
SOAP (Simple Object Access Protocol)
   complete specification for, 105
   definition of, 105
   document/literal form of, 110
   examining the details of, 106
   readability of, 106
   reasons for its big impact, 106
   transports for, 105
SOAP <Body> element, 109
SOAP-ENC alias identifier, 108
SOAP-ENV alias identifier, 108
SOAP <Envelope> element, 108, 112
SOAP Envelope namespace, 108
.soap extension, 81
SOAP <Fault> element, 110
SOAP-formatted serialized instance, 246, 247
SOAP header
   defining, 107
   sending CallContexData via, 154
SOAP <Header> element, 108
SOAP message stream, writing to a file, 227
SOAP messages, 106
   elements of, 107-10
   HTTP header for, 107
SOAP RPC specification, 106
SOAP specification, Section 5 of, 109
SOAP wire, 43
SOAPAction header, 107, 111
SoapClientFormatterSinkProvider class, 209
SoapFormatter class, 242
   serializing of primitive types, 246
   spying on traffic between client and server, 106
SoapFormatter type, 45
SoapMessageSurrogate class, 252
SoapServerFormatterSinkProvider, 218
SOAPSuds tool, 78, 81-83
socket-based transport, 42
sockets, 6
source code type descriptions. See IDL
sponsors, 20, 36-37
   adding to leases, 95-98
   creating and registering, 97
   registering, 97
SponsorshipTimeout property of the ILease interface, 35, 95
SSL (Secure Sockets Layer), 20
stack-based methods, 134
stackbuilder sink, 166
StackBuilderSink, 46, 178
StackOverflowException exception, 292
stand-in class developing, 100
StartListening method, 219
   adding to FileServerChannel, 216
   of the IChannelReceiver interface, 199, 200
state, setting for remote objects, 11
State property, exposed by StreamingContext, 244
stateful Web Service, 80
static member for each field tag, 265
StopListening method
   adding to FileServerChannel, 216
   ending the listening thread, 219
   of the IChannelReceiver interface, 199
stream-based I/O, 6
Stream object
   contained in ChannelFileData, 228
   in a request message, 202
StreamingContext instance, 244, 252, 266
StreamingContextStates enumeration, 244
StreamReader instance in Deserialize, 280
StreamReader member of MyFormatter, 267
streams
   deserializing object graphs from, 279
   reading array objects from, 286-87
   reading members from, 283
   serializing message objects to, 45
   serializing object graphs to, 242
StreamWriter member of MyFormatter, 267
string instance, writing to the stream, 273
string keys, defining in an ITransportHeaders object, 202
string type, options for serializing, 273
stubs, 6
suppressChannelData property of the HttpChannel class, 198
surrogate classes, 252
surrogate selector class, 266
surrogate selectors, 249
surrogates, 249
SurrogateSelector class, 250
SurrogateSelector property, 249
   of the IFormatter interface, 266
   setting to null, 292
synchronization context, 24
synchronous message processing, 159
synchronous method calls
   handling with ProcessMessage, 213
   processing, 203
SyncProcessMessage method
   of the IMessage interface, 291
   of the IMessageSink interface, 158, 159, 172
   returning an IMethodReturnMessage object, 147
   in TraceMessageSink, 180
   validating parameters in a message, 187
System.EventArgs class, 52

T
target object instance, 113
<target0> element, 113
TCP protocol, transporting a serialized message stream, 42
TcpChannel type, 42, 143-47
terminator message sink, 167
TextBox control, 90
textual notes. See notes
thick-client architectures, 9
thin-client architectures, 9
thread. See listening thread
threading constraints of controls, 67
ThreadStart delegate, 219
three-tier architectures, 3-4
tiers in distributed architectures, 4
time-stamp member, adding to the SerializationInfo instance, 250
TimeSpan instance, returned by the ISponsor.Renewal method, 97
TimeSpan values, encapsulated by leases, 34
TimeStamp member, adding to SerializationInfo, 260
TimeStamperSurrogate class, 250-52
TraceMessage method, 181
TraceMessageSink class
   defining, 180-82
   intercepting method calls, 183
TraceMessageSinkAttribute class, 183
tracing method calls, 179-83
transparent proxy, 40, 73
TransparentProxy objects, 135, 140
TransparentProxy type, 40
transport, creating, 228-31
transport sinks, 45-47, 211
transport-specific code, methods containing, 228
TransportHeaders class, 291
two-tier architectures, 3
Type, interpreting a member value as, 285
type attributes
   of <activated> elements, 94
   inspecting for the Serializable mask, 271
Type instances as instances of RuntimeType, 274
type libraries in Visual Basic and scripting languages, 17
type name of a stand-in class, 101
type-safe array, 287
type-safe code, 24
type system of a distributed object technology, 17
_TypeName key
   in a construction call message, 132
   in a method call message, 133
types
   configuring for .NET Remoting, 59
   making remotable, 56
   serializable, 25
   supported by the CTS, 17

U
UDDI in Web Services, 78
Uniform Resource Identifier. See URI
uninitialized instances, 254, 255, 259
unique names, generating, 230
unmanaged applications, segregating, 23
unmanaged code, TransparentProxy in, 136
unreachable clients, guarding against, 54
UnregisterChannel method of the ChannelServices class, 61
UnregisterDynamicProperty method, 168
UpdateJobInListView method, 67-69
UpdateJobState method
   calling, 70
   of the IJobServer interface, 51
   implementing, 55
   reliance on NotifyClients as a helper method, 53
UpdateJobState request message, 120
UpdateJobState response message, 120
URI (Uniform Resource Identifier)
   checking for file:// in, 227
   encapsulated by the ObjRef type, 38
   of a marshaled object instance, 113
   publishing server-activated types at a well-known, 29
_Uri key
   in a construction call message, 132
   in a method call message, 133
_Uri property, converting to an objectUri, 296
url parameter in CreateMessageSink, 210
URLs, identifying remote objects, 199
useDefaultCredentials attribute, 84
useIpAddress property of the HttpChannel class, 198
User Datagram Protocol (UDP) channel, 204
user interface. See also presentation layer
   adding a form to, 90
   of a client application, 50
users
   adding notes associated with selected jobs, 88
   allowing to create new jobs, 54

V
Validate method of IParamValidator, 186, 188
ValidateParams method, 188
validation mechanism, 186
validator classes, declaring, 193
virtual directory, configuring for IIS, 80
Void class, 277

W
Wait method of WaitForFile, 231
WaitForFile class, 231
Watch window, indicating a remote instance, 73
Web applications, 80
Web Service Description Language. See WSDL
Web Services
   adding security to, 83-85
   changes to the job application to fully support, 79
   compared to .NET Remoting, 79
   constraints of, 79
   exposing component services over the Internet, 78
   exposing the JobServerImpl class as a, 77-78
   implementing as SingleCall-activated servers, 80
   open standards employed in, 78
Web.config file
   adding lines to the JobWebService application's, 84
   configuring an IIS-hosted remote application, 81
web.config files, 16
well-known object types, 29. See also server- activated types
well-known objects
   configuring on the client side, 75
   getting references to, 186
<wellknown> element, 63, 76, 81
WellKnownClientTypeEntry class, 75
WellKnownClientTypeEntry instance, 60
WellKnownServiceTypeEntry, 140
Windows Forms applications
   as .NET Remoting hosts, 57
   implementing the JobClient application as a, 64
Windows Forms Timer control, 80
Windows Integrated authentication, 80
Windows Integrated Security. See NTLM
Windows Services, implementing a constantly available host, 58
wire formats
   legacy, 13
   proprietary, 12
wrapped proxy, generating in SOAPSuds, 83
Write method of ChannelFileTransportWriter, 229
WriteArray method, 268, 274-76
WriteField method, 269, 271
WriteMember method
   calling WriteValueType, 277
   of the Formatter class, 261, 271-72
   of MyFormatter, 273
   virtual members of the Formatter class called by, 274
WriteObject method
   compared to ReadObject, 281
   of MyFormatter, 268, 269
WriteObjectMembers method
   compared to ReadObjectMembers, 282
   implementing, 269-71
WriteObjectRef method
   calling to serialize an object reference to an array, 276
   of the Formatter class, 261
   functions performed by, 276
   passing string objects to, 272
WriteSerializableMembers method, 271
WriteSerializationInfo method, 271
   calling, 270
   compared to ReadSerializationInfo, 281
WriteSOAPMessageToFile method in FileChannel.Helper, 227
WriteString method of MyFormatter, 273
WriteType method, 273
WriteValueType method
   calling, 277
   of the Formatter class, 262
   forwarding the call to, 277
WriteXXX methods
   of the Formatter class, 262
   implementations of, 277-79
WSDL (Web Service Description Language)
   .NET Remoting properties not supported in, 79
   in Web Services, 78
WSDL file, converting, 83
WSDL representation, 82
WSDL tools, 78
WSDL.exe, 78

X
Xcopy deployment, 16
XML-based files, configuring remoting applications, 16-17
XML grammar, describing Web Services, 78
xml namespace attribute alias, 243
XML schema (WSDL), generating with SOAPSuds, 82
xsd alias identifier, 108
xsi alias identifier, 108

Z
zombie objects, 97



Last Updated: September 4, 2002
Top of Page