匯出 (0) 列印
全部展開
本文章是由機器翻譯。 將指標移到文章內的文字上方即可查看原文。 其他資訊。
譯文
原文

MarshalByRefObject 類別

啟用在支援遠端的應用程式中跨越應用程式定義域界限的物件存取。

System.Object
  System.MarshalByRefObject
    其他...

命名空間:  System
組件:  mscorlib (在 mscorlib.dll 中)

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

MarshalByRefObject 類型會公開下列成員。

  名稱描述
受保護的方法受 XNA Framework 支援MarshalByRefObject初始化 MarshalByRefObject 類別的新執行個體。
回頁首

  名稱描述
公用方法CreateObjRef建立包含所有相關資訊的物件,這些資訊是產生用來與遠端物件通訊的所需 Proxy。
公用方法受 XNA Framework 支援Equals(Object)判斷指定的物件是否等於目前物件。 (繼承自 Object)。
受保護的方法受 XNA Framework 支援Finalize 允許物件在記憶體回收進行回收之前,嘗試釋放資源並執行其他清除作業。 (繼承自 Object)。
公用方法受 XNA Framework 支援GetHashCode做為預設雜湊函式。 (繼承自 Object)。
公用方法GetLifetimeService擷取控制這個執行個體存留期 (Lifetime) 原則的目前存留期服務物件。
公用方法受 XNA Framework 支援GetType取得目前執行個體的 Type (繼承自 Object)。
公用方法InitializeLifetimeService取得存留期服務物件來控制這個執行個體的存留期原則。
受保護的方法受 XNA Framework 支援MemberwiseClone()建立目前 Object 的淺層複本 (Shallow Copy)。 (繼承自 Object)。
受保護的方法MemberwiseClone(Boolean)建立目前 MarshalByRefObject 物件的淺層複本。
公用方法受 XNA Framework 支援ToString傳回表示目前物件的字串。 (繼承自 Object)。
回頁首

應用程式定義域是作業系統處理的磁碟分割,其中存放一個或多個應用程式。 在相同應用程式定義域中的物件彼此直接通訊。 在不同應用程式定義域中的物件則是藉由將物件的複本跨越應用程式定義域界限傳輸或藉由使用 Proxy 交換訊息來通訊。

MarshalByRefObject 是跨越應用程式定義域界限來藉由使用 Proxy 交換訊息以便通訊的物件基底類別。 未繼承自 MarshalByRefObject 的物件是使用傳值 (By Value) 方式來隱含封送處理。 當遠端應用程式參考傳值封送處理的物件時,該物件的複本會跨越應用程式定義域界限來傳遞。

MarshalByRefObject 物件是在本機應用程式定義域的界限中直接存取。 當遠端應用程式定義域中的應用程式第一次存取 MarshalByRefObject 時,Proxy 會傳遞至遠端應用程式。 在 Proxy 上的後續呼叫會封送處理回存放在本機應用程式定義域中的物件。

當跨越應用程式定義域界限來使用型別時,型別必須繼承自 MarshalByRefObject,並且不可以複製物件的狀態,因為物件的成員無法在建立成員的所在應用程式定義域外部使用。

本章節包含兩個程式碼範例。 第一個程式碼範例示範如何在其他應用程式定義域中建立類別執行個體, 第二個程式碼範例則示範可用於遠端作業的簡單類別。

範例 1

下列程式碼範例示範在其他應用程式定義域中執行程式碼的最簡單方法。 這個範例會定義名為 Worker 且繼承自 MarshalByRefObject 的類別,以及可顯示其執行位置所在之應用程式定義域之名稱的方法。 此範例還會在預設應用程式定義域和新的應用程式定義域中建立 Worker 的執行個體。

注意事項注意事項

包含 Worker 的組件一定要載入這兩個應用程式定義域中,但是該組件可能會載入其他只存在新應用程式定義域中的組件。


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


範例 2

下列範例示範衍生自稍後在遠端處理中使用之 MarshalByRefObject 的類別。


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

支援版本:4.5.2、4.5.1、4.5、4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

支援版本: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 (不支援伺服器核心角色), Windows Server 2008 R2 (SP1 (含) 以後版本支援伺服器核心角色,不支援 Itanium)

.NET Framework 並不支援各種平台的所有版本。如需支援版本的清單,請參閱.NET Framework 系統需求

這個類型的任何 Public static (在 Visual Basic 中為 Shared) 成員都是安全執行緒。不保證任何執行個體成員是安全執行緒。

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

社群新增項目

新增
顯示:
© 2014 Microsoft