Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. |
Traduction
Source
|
MarshalByRefObject, classe
Permet l'accès aux objets au-delà des limites de domaine d'application dans les applications qui prennent en charge la communication à distance.
Assembly : mscorlib (dans mscorlib.dll)
Le type MarshalByRefObject expose les membres suivants.
| Nom | Description | |
|---|---|---|
|
MarshalByRefObject | Initialise une nouvelle instance de la classe MarshalByRefObject. |
| Nom | Description | |
|---|---|---|
|
CreateObjRef | Crée un objet contenant toutes les informations appropriées requises pour générer un proxy permettant de communiquer avec un objet distant. |
|
Equals(Object) | Détermine si l'Object spécifié est égal à l'Object en cours. (Hérité de Object.) |
|
Finalize | Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de netto***ge avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.) |
|
GetHashCode | Sert de fonction de hachage pour un type particulier. (Hérité de Object.) |
|
GetLifetimeService | Récupère l'objet de service de durée de vie en cours qui contrôle la stratégie de durée de vie de cette instance. |
|
GetType | Obtient le Type de l'instance actuelle. (Hérité de Object.) |
|
InitializeLifetimeService | Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance. |
|
MemberwiseClone() | Crée une copie superficielle de l'objet Object actif. (Hérité de Object.) |
|
MemberwiseClone(Boolean) | Crée une copie superficielle de l'objet MarshalByRefObject actuel. |
|
ToString | Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.) |
Un domaine d'application est une partition dans un processus de système d'exploitation dans laquelle résident une ou plusieurs applications. Les objets d'un même domaine d'application communiquent entre eux directement. Les objets contenus dans différents domaines d'application communiquent en transportant des copies d'objets au-delà des limites de domaine d'application ou en utilisant un proxy pour échanger des messages.
MarshalByRefObject est la classe de base pour les objets qui communiquent au-delà des limites de domaine d'application en échangeant des messages à l'aide d'un proxy. Les objets qui n'héritent pas de MarshalByRefObject sont implicitement des objets marshalés-par-valeur. Lorsqu'une application distante fait référence à un objet marshalé-par-valeur, une copie de l'objet est passée au-delà des limites de domaine d'application.
Les objets MarshalByRefObject sont directement accessibles à l'intérieur des limites du domaine d'application local. Lorsqu'une application dans un domaine d'application distant accède à MarshalByRefObject pour la première fois, un proxy est passé à l'application distante. Les appels suivants sur le proxy sont à nouveau marshalés vers l'objet qui réside dans le domaine d'application local.
Les types doivent hériter de MarshalByRefObject lorsque le type est utilisé au-delà des limites de domaine d'application, et l'état de l'objet ne doit pas être copié, car les membres de l'objet ne sont pas utilisables en dehors du domaine d'application dans lequel ils ont été créés.
Cette section comprend deux exemples de code. Le premier exemple de code montre comment créer une instance d'une classe dans un autre domaine d'application. Le second exemple de code présente une classe simple qui peut être utilisée pour la communication à distance.
Exemple 1
L'exemple de code suivant présente la façon la plus simple d'exécuter du code dans un autre domaine d'application. Il définit une classe nommée Worker qui hérite de MarshalByRefObject, avec une méthode qui affiche le nom du domaine d'application dans lequel elle s'exécute. L'exemple crée des instances de Worker dans le domaine d'application par défaut et dans un nouveau domaine d'application.
Remarque
|
|---|
|
L'assembly qui contient Worker doit être chargé dans les deux domaines d'application, mais il pourrait charger d'autres assemblys qui existent uniquement dans le nouveau domaine d'application. |
using System; using System.Reflection; public class Worker : MarshalByRefObject { public void PrintDomain() { Console.WriteLine("Object is executing in AppDomain \"{0}\"", AppDomain.CurrentDomain.FriendlyName); } } class Example { public static void Main() { // Create an ordinary instance in the current AppDomain Worker localWorker = new Worker(); localWorker.PrintDomain(); // Create a new application domain, create an instance // of Worker in the application domain, and execute code // there. AppDomain ad = AppDomain.CreateDomain("New domain"); Worker remoteWorker = (Worker) ad.CreateInstanceAndUnwrap( Assembly.GetExecutingAssembly().FullName, "Worker"); remoteWorker.PrintDomain(); } } /* This code produces output similar to the following: Object is executing in AppDomain "source.exe" Object is executing in AppDomain "New domain" */
Exemple 2
L'exemple suivant illustre une classe dérivée de MarshalByRefObject qui est utilisée ultérieurement dans le cadre de la communication à distance.
using System; using System.Runtime.Remoting; using System.Security.Permissions; public class SetObjectUriForMarshalTest { class TestClass : MarshalByRefObject { } [SecurityPermission(SecurityAction.Demand, Flags=SecurityPermissionFlag.RemotingConfiguration)] public static void Main() { TestClass obj = new TestClass(); RemotingServices.SetObjectUriForMarshal(obj, "testUri"); RemotingServices.Marshal(obj); Console.WriteLine(RemotingServices.GetObjectUri(obj)); } }
Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2
Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
System.MarshalByRefObject
Microsoft.Build.Utilities.AppDomainIsolatedTask
Microsoft.Build.Utilities.TaskItem
Microsoft.Build.Utilities.TaskLoggingHelper
Microsoft.Win32.RegistryKey
System.AddIn.Pipeline.ContractBase
System.AppDomain
System.AppDomainManager
System.ComponentModel.Component
System.ContextBoundObject
System.Data.Common.DataColumnMapping
System.Data.Common.DataColumnMappingCollection
System.Data.Common.DataTableMapping
System.Data.Common.DataTableMappingCollection
System.Data.Common.DbDataReader
System.Data.Common.DbParameter
System.Data.Common.DbParameterCollection
System.Data.Common.DbTransaction
System.Diagnostics.TraceListener
System.DirectoryServices.SearchResultCollection
System.Drawing.Brush
System.Drawing.Drawing2D.CustomLineCap
System.Drawing.Drawing2D.GraphicsContainer
System.Drawing.Drawing2D.GraphicsPath
System.Drawing.Drawing2D.GraphicsPathIterator
System.Drawing.Drawing2D.GraphicsState
System.Drawing.Drawing2D.Matrix
System.Drawing.Font
System.Drawing.FontFamily
System.Drawing.Graphics
System.Drawing.Icon
System.Drawing.Image
System.Drawing.Pen
System.Drawing.Region
System.Drawing.StringFormat
System.EnterpriseServices.Internal.AssemblyLocator
System.EnterpriseServices.RegistrationHelper
System.IO.FileSystemInfo
System.IO.IsolatedStorage.IsolatedStorage
System.IO.Stream
System.IO.TextReader
System.IO.TextWriter
System.Messaging.MessageEnumerator
System.Messaging.MessageQueueEnumerator
System.Net.WebRequest
System.Net.WebResponse
System.Reflection.AssemblyNameProxy
System.Runtime.InteropServices.StandardOleMarshalObject
System.Runtime.Remoting.Lifetime.ClientSponsor
System.Runtime.Remoting.ObjectHandle
System.Speech.Recognition.SrgsGrammar.SrgsElement
System.Threading.RegisteredWaitHandle
System.Threading.Timer
System.Threading.WaitHandle
System.Web.Compilation.ClientBuildManager
System.Web.Compilation.ClientBuildManagerCallback
System.Web.Hosting.AppDomainProtocolHandler
System.Web.Hosting.ApplicationManager
System.Web.Hosting.HostingEnvironment
System.Web.Hosting.ISAPIRuntime
System.Web.Hosting.ProcessHost
System.Web.Hosting.ProcessHostFactoryHelper
System.Web.Hosting.ProcessProtocolHandler
System.Web.Hosting.VirtualFileBase
System.Web.Hosting.VirtualPathProvider
System.Windows.Forms.BaseCollection
System.Windows.Forms.NativeWindow
System.Windows.Forms.NumericUpDownAccelerationCollection
System.Windows.Forms.OwnerDrawPropertyBag
System.Windows.Forms.TreeNode
System.Windows.Interop.DocObjHost
System.Workflow.Runtime.DebugEngine.DebugController
Remarque