Esta página foi útil?
Seus comentários sobre este conteúdo são importantes. Queremos saber sua opinião.
Comentários adicionais?
1500 caracteres restantes
Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Classe MarshalByRefObject

Permite acesso a objetos nos limites do domínio de aplicativo em aplicativos que remoting de suporte.

System.Object
  System.MarshalByRefObject
    Mais...

Namespace:  System
Assembly:  mscorlib (em mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class MarshalByRefObject

O tipo MarshalByRefObject expõe os membros a seguir.

  NomeDescrição
Método protegidoCompatível com o XNA FrameworkMarshalByRefObjectInicializa uma nova instância da classe MarshalByRefObject.
Superior

  NomeDescrição
Método públicoCreateObjRefCria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto.
Método públicoCompatível com o XNA FrameworkEquals(Object) Verifica se o objeto especificado é igual ao objeto atual. (Herdado de Object.)
Método protegidoCompatível com o XNA FrameworkFinalize Permite um objeto tentar liberar recursos e executar outras operações de limpeza antes que ele seja recuperado pela coleta de lixo. (Herdado de Object.)
Método públicoCompatível com o XNA FrameworkGetHashCodeServe como a função de hash padrão. (Herdado de Object.)
Método públicoGetLifetimeService Recupera o objeto atual de serviço de vida útil que controla a diretiva de vida útil para esta instância.
Método públicoCompatível com o XNA FrameworkGetType Obtém o Type da instância atual. (Herdado de Object.)
Método públicoInitializeLifetimeService Obtém um objeto de serviço de tempo de vida para controlar a diretiva de vida útil para esta instância.
Método protegidoCompatível com o XNA FrameworkMemberwiseClone()Cria uma cópia superficial do Object atual. (Herdado de Object.)
Método protegidoMemberwiseClone(Boolean) Cria uma cópia superficial do objeto MarshalByRefObject atual.
Método públicoCompatível com o XNA FrameworkToStringRetorna uma string que representa o objeto atual. (Herdado de Object.)
Superior

Um domínio de aplicativo é uma partição em um processo do sistema operacional em um ou mais aplicativos residem. Objetos no mesmo domínio do aplicativo se comunicar diretamente. Objetos em diferentes domínios de aplicativos se comunicam por transporte cópias dos objetos nos limites do domínio de aplicativo ou usando um proxy para trocar mensagens.

MarshalByRefObject é a classe base para objetos que se comunicam através de limites de domínio de aplicativo trocando mensagens usando um proxy. Objetos que não herdam de MarshalByRefObject são implicitamente empacotar por valor. Quando um aplicativo remoto faz referência a um pacote por objeto de valor, uma cópia do objeto é passada através de limites de domínio de aplicativo.

MarshalByRefObject objetos são acessados diretamente dentro dos limites do domínio do aplicativo local. Domínio de aplicativo de na primeira vez que um aplicativo em um controle remoto acessa um MarshalByRefObject, um proxy é passado para o aplicativo remoto. As chamadas subseqüentes no proxy são empacotadas de volta para o objeto que residem no domínio de aplicativo local.

Tipos devem herdar de MarshalByRefObject quando o tipo é usado nos limites do domínio de aplicativo e o estado do objeto não deve ser copiado pois os membros do objeto não são utilizáveis fora do domínio de aplicativo em que foram criados.

Esta seção contém dois exemplos de código. O primeiro exemplo de código mostra como criar uma instância de uma classe em outro domínio de aplicativo. O segundo exemplo de código mostra uma classe simples que pode ser usada para comunicação remota.

Exemplo 1

O exemplo de código a seguir mostra a maneira mais simples de executar código em outro domínio de aplicativo. O exemplo define uma classe chamada Worker que herda MarshalByRefObject, com um método que exibe o nome do domínio do aplicativo no qual ele está em execução. O exemplo cria instâncias de Worker no domínio de aplicativo padrão e em um novo domínio de aplicativo.

ObservaçãoObservação

O assembly que contém Worker deve ser carregado em ambos os domínios de aplicativo, mas ele foi possível carregar outros assemblies que deve existir apenas no novo domínio de aplicativo.


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"
 */


Exemplo 2

O exemplo a seguir demonstra uma classe derivada de MarshalByRefObject isto é usado posteriormente no remoting.


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));
    }
}


.NET Framework

Com suporte em: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.

Quaisquer membros estático (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

System.Object
  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

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2015 Microsoft