.NET Framework Remoting Overview
This topic is specific to a legacy technology that is retained for backward compatibility with existing applications and is not recommended for new development. Distributed applications should now be developed using the Windows Communication Foundation (WCF).
.NET remoting enables you to build widely distributed applications easily, whether the application components are all on one computer or spread out across the entire world. You can build client applications that use objects in other processes on the same computer or on any other computer that is reachable over its network. You can also use .NET remoting to communicate with other application domains in the same process. (For details about programming application domains, see Programming with Application Domains.)
.NET remoting provides an abstract approach to interprocess communication that separates the remotable object from a specific client or server application domain and from a specific mechanism of communication. As a result, it is flexible and easily customizable. You can replace one communication protocol with another, or one serialization format with another without recompiling the client or the server. In addition, the remoting system assumes no particular application model. You can communicate from a Web application, a console application, a Windows Service – from almost anything you want to use. Remoting servers can also be any type of application domain. Any application can host remoting objects and provide its services to any client on its computer or network.
Note |
---|
For security reasons, it is strongly recommended to expose Remoting endpoints through secure channels. Never expose insecure Remoting endpoints to the Internet. |
To use .NET remoting to build an application in which two components communicate directly across an application domain boundary, you need to build only the following:
A remotable object.
A host application domain to listen for requests for that object.
A client application domain that makes requests for that object.
Even in a complex, multiclient or multiserver application, .NET remoting can be thought of in this way. The host and the client application must also be configured with the remoting infrastructure and you must understand the lifetime and activation issues that the remoting infrastructure introduces.
In This Section
- Building a Basic .NET Framework Remoting Application
Demonstrates the basic .NET remoting scenario by building a remotable type, a listener application and a configuration file, and a client application and a configuration file.
- .NET Framework Remoting Architecture
Describes the architecture of the .NET remoting system.
- Making Objects Remotable
Describes the remoting boundaries and how to implement types that can be activated across those boundaries.
- Object Activation and Lifetimes
Describes the different types of remote activation and how to manage remote object lifetimes.
- Channels
Describes the system-defined channels and provides the information you need to decide which channel is best for your scenario.
- Configuration of Remote Applications
Describes the basic configuration requirements of the .NET remoting infrastructure, the types of configuration that can be used to satisfy these requirements, and the particular needs of various server and client application domains.
- Version Information in Remoting
Describes how versioning works in a remote scenario.
- Security in Remoting
Describes the security requirements to use remoting and the basic approaches to help build secure remoting applications.
- Asynchronous Remoting
Describes how to do asynchronous programming in a remoting scenario.
- How to: Call the Methods of a Remote Object Asynchronously
Shows how to make an asynchronous call to a method of a remote object.
- Issues with Calling Methods of Remote Objects Asynchronously
Describes issues that may arise when making an asynchronous call to a method of a remote object.
- CallContexts and Direct Remoting
Describes how to pass extra data with remote method calls using CallContext and how to dynamically publish objects for remote use.
Reference
- Remoting Settings Schema
Provides reference information about the elements that can be used to configure .NET remoting using a configuration file.
- System.Runtime.Remoting
Provides reference information about the types that can be used to perform .NET remoting.
- System.Runtime.Remoting.Activation
Contains classes and objects that support server and client activation of remote objects.
- System.Runtime.Remoting.Channels
Contains classes that support and handle channels and channel sinks, which are used as the transport medium when a client calls a method on a remote object.
- System.Runtime.Remoting.Channels.Http
Contains classes for channels that use the HTTP protocol to transport messages and objects to and from remote locations.
- System.Runtime.Remoting.Channels.Ipc
Contains classes that define a communication channel for remoting that uses the Interprocess Communication (IPC) system of the Windows operating system.
- System.Runtime.Remoting.Channels.Tcp
Contains classes that define channels that use the TCP protocol to transport messages and objects to and from remote locations.
- System.Runtime.Remoting.Contexts
Contains objects that define the contexts all remote objects reside within.
- System.Runtime.Remoting.Lifetime
Contains classes that manage the lifetime of remote objects.
- System.Runtime.Remoting.Messaging
Contains classes used to create and transmit messages.
- System.Runtime.Remoting.Metadata
Contains classes and attributes that can be used to customize generation and processing of SOAP for objects and fields.
- System.Runtime.Remoting.Metadata.W3cXsd2001
Contains the XML Schema Definition (XSD) defined by the World Wide Web Consortium (W3C) in 2001.
- System.Runtime.Remoting.MetadataServices
Contains the classes used by the Soapsuds Tool (Soapsuds.exe) command-line tool and the user code to convert metadata to and from the XML schema for the remoting infrastructure.
- System.Runtime.Remoting.Proxies
Contains classes that control and provide functionality for proxies.
- System.Runtime.Remoting.Services
Contains service classes that provide functionality to the.NET Framework.
Related Sections
- Advanced Remoting
Describes the basic points of interception and extension that you can use to customize the .NET remoting architecture.
- Remoting Examples
Provides several complete sample applications that use different elements of the remoting infrastructure.