Czy ta strona była przydatna?
Twoja opinia na temat zawartości jest dla nas bardzo ważna. Powiedz nam co myślisz.
Dodatkowe opinie?
Pozostało znaków: 1500
Eksportuj (0) Drukuj
Rozwiń wszystko
Ten artykuł był przetłumaczony komputerowo. Oryginalny tekst zobaczysz, umieszczając wskaźnik myszy nad zdaniami w artykule. Więcej informacji.
Tłumaczenie
Oryginał

Klasa MarshalByRefObject

.NET Framework 4.5

Umożliwia dostęp do obiektów poza granice domeny aplikacji w aplikacji usług zdalnych tej pomocy technicznej.

System.Object
  System.MarshalByRefObject
    Więcej...

Przestrzeń nazw:  System
Zestaw:  mscorlib (w mscorlib.dll)

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

Typ MarshalByRefObject uwidacznia następujące elementy członkowskie.

  NazwaOpis
Metoda chronionaObsługiwane przez program XNA FrameworkMarshalByRefObjectInicjuje nowe wystąpienie MarshalByRefObject klasy.
Początek

  NazwaOpis
Metoda publicznaCreateObjRefTworzy obiekt, który zawiera wszystkie istotne informacje wymagane do wygenerowania serwera proxy, używany do komunikowania się z obiektem zdalnym.
Metoda publicznaObsługiwane przez program XNA FrameworkEquals(Object) Określa, czy określony obiekt jest równy bieżącemu obiektowi. (Odziedziczone z Object).
Metoda chronionaObsługiwane przez program XNA FrameworkFinalize Pozwala, aby obiekt spróbował zwolnić zasoby i wykonał inne operacje czyszczenia, zanim zostanie odzyskany przez moduł zbierający elementy bezużyteczne. (Odziedziczone z Object).
Metoda publicznaObsługiwane przez program XNA FrameworkGetHashCode Służy jako domyślna funkcja skrótu. (Odziedziczone z Object).
Metoda publicznaGetLifetimeServicePobiera obiekt usługi bieżącego okresu istnienia, który kontroluje politykę okres istnienia dla tego wystąpienia.
Metoda publicznaObsługiwane przez program XNA FrameworkGetType Pobiera Type bieżącej instancji. (Odziedziczone z Object).
Metoda publicznaInitializeLifetimeServiceUzyskuje obiekt usługi istnienia kontroli zasad okres istnienia dla tego wystąpienia.
Metoda chronionaObsługiwane przez program XNA FrameworkMemberwiseClone() Tworzy płytką kopię bieżącego obiektu Object. (Odziedziczone z Object).
Metoda chronionaMemberwiseClone(Boolean)Powoduje utworzenie kopii shallow bieżącego MarshalByRefObject obiektu.
Metoda publicznaObsługiwane przez program XNA FrameworkToString Zwraca ciąg, który reprezentuje bieżący obiekt. (Odziedziczone z Object).
Początek

Domeny aplikacji jest partycją w procesie systemu operacyjnego, gdzie znajdują się jedną lub więcej aplikacji. Obiekty w tej samej domeny aplikacji komunikować się bezpośrednio. Obiekty w różnych domenach aplikacji komunikować się przez transportu kopie obiektów poza granice domeny aplikacji lub przy użyciu serwera proxy do wymiany wiadomości.

MarshalByRefObject jest klasą podstawową dla obiektów, które komunikują się poza granice domeny aplikacji poprzez wymianę wiadomości za pomocą serwera proxy. Obiekty, które nie dziedziczą od MarshalByRefObject są niejawnie MARSZAŁEK przez wartość. Gdy zdalna aplikacja odwołuje się do MARSZAŁEK przez wartość obiektu, kopię obiektu jest przekazywana poza granice domeny aplikacji.

MarshalByRefObject obiekty są dostępne bezpośrednio w obrębie granic domeny lokalnej aplikacji. Podczas pierwszego wniosku w zdalnej domeny aplikacji uzyskuje dostęp do MarshalByRefObject, serwer proxy jest przekazywany do aplikacji zdalnego. Wezwań na serwerze proxy są przekazywane międzyprocesowo do obiektu, znajdujących się w domenie lokalnej aplikacji.

Typy musi dziedziczyć po MarshalByRefObject gdy typ jest używany poza granice domeny aplikacji i stan obiektu nie muszą zostać skopiowane, ponieważ członkowie obiektu nie są użyteczne spoza domeny aplikacji, w którym zostały utworzone.

Ta sekcja zawiera dwa przykłady kodu. Pierwszy przykład kodu pokazuje, jak utworzyć wystąpienie klasy w innej domenie aplikacji. Drugi przykład kodu pokazuje prostą klasę, używany dla usług zdalnych.

Przykład 1

Poniższy przykład kodu pokazuje Najprostszym sposobem na wykonanie kodu w innej domenie aplikacji. Przykład definiuje klasę o nazwie Worker , dziedziczy MarshalByRefObject, przy użyciu metody, która wyświetla nazwę domeny aplikacji, w którym jest on wykonywany. W przykładzie przedstawiono tworzenie instancji Worker w domyślnej domeny aplikacji i utworzenie nowej domeny aplikacji.

UwagaUwaga

Zestaw, który zawiera Worker musi być załadowany w obu domenach aplikacji, ale można go załadować inne zestawy, które byłyby istnieją tylko w nowej domenie aplikacji.


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


Przykład 2

W poniższym przykładzie zademonstrowano klasy pochodzącej od MarshalByRefObject to jest używane później w zdalnych.


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

Obsługiwane w: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Obsługiwane w: 4, 3.5 z dodatkiem SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 z dodatkiem R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista z dodatkiem SP2, Windows Server 2008 (instalacja roli Server Core jest nieobsługiwana), Windows Server 2008 R2 (instalacja roli Server Core jest obsługiwana, gdy jest zainstalowany dodatek SP1 lub nowszy; procesory Itanium nie są obsługiwane)

Program .NET Framework nie obsługuje wszystkich wersji każdej platformy. Aby uzyskać listę wszystkich obsługiwanych wersji, zobacz Wymagania systemowe programu .NET Framework.

Wszystkie publiczne static (Shared w języku Visual Basic) elementy członkowskie tego typu są bezpieczne dla wątków. Wystąpienia elementów członkowskich nie dają gwarancji bezpieczeństwa wątków.

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

Zawartość społeczności

Dodaj
Pokaż:
© 2015 Microsoft