.NET Remoting Overview

.NET remoting enables you to build widely distributed applications easily, whether 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.

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/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 Remoting Application
    Demonstrates the basic .NET remoting scenario by building a remotable type, a listener application and configuration file, and a client application and configuration file.
  • .NET 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
    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.
  • Versioning
    Describes how versioning works in a remote scenario.
  • Security
    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.
  • 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.
  • Advanced Remoting
    Describes the basic points of interception and extension that you can use to customize the .NET remoting architecture.
  • Remoting Settings Schema
    Provides reference information about the elements that can be used to configure .NET remoting using a configuration file.